docker常用命令
1. Docker的安装和配置(centos下)
1) 卸载旧版Docker:
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
2) 配置yum源:
① 安装yum工具:yum install -y yum-utils
② 配置Docker的yum源:yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
3)安装Docker:
yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
4) 启动和校验:
# 启动Docker
systemctl start docker
# 停止Docker
systemctl stop docker
# 重启
systemctl restart docker
# 设置开机自启
systemctl enable docker
# 执行docker ps命令,如果不报错,说明安装启动成功
docker ps
5) 配置镜像加速器:
① 获取镜像加速器::登录自己的阿里云账号,找到容器镜像服务里的镜像加速器,就可以看到加速器地址了。
② 配置加速器:根据页面里的操作文档配置docker镜像加速器。
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://olwe2ik2.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
2. docker 安装mysql:
docker run -d \
--name mysql \
-p 3306:3306 \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=123 \
mysql
解读:
docker run: 这是Docker用于运行容器的基本命令。
-d: 表示以守护进程模式运行容器,即在后台运行。
--name mysql: 指定容器的名称,这里命名为mysql。
-p 3306:3306: 将宿主机的3306端口映射到容器内的3306端口,这样就可以通过宿主机的3306端口访问MySQL服务。
-e TZ=Asia/Shanghai: 设置环境变量,将容器内的时区设置为亚洲/上海时区。
-e MYSQL_ROOT_PASSWORD=123: 设置环境变量,初始化MySQL的root用户密码为123。
mysql: 要运行的Docker镜像的名称,这里是MySQL的官方镜像。
3. docker 列出容器相关信息:docker ps
4. 进入容器内部:eg:docker exec -it nginx bash
5.docker hub官网:hub.docker.com
6. ① docker创建mysql容器并挂载数据库
参考博客:https://blog.csdn.net/qq_69183322/article/details/138058020
基于宿主机目录实现MySQL数据目录、配置文件、初始化脚本的挂载(查阅官方镜像文档)
docker run -d \
--name mysql \
-p 3306:3306 \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=123 \
-v ./mysql/data:/var/lib/mysql \
-v ./mysql/conf:/etc/mysql/conf.d \
-v ./mysql/init:/docker-entrypoint-initdb.d \
mysql
② docker 创建nginx容器并挂载前端html文件和nginx配置文件:
docker run -d \
--name nginx \
-p 18080:18080 \
-p 18081:18081 \
-v /root/nginx/html:/usr/share/nginx/html \
-v /root/nginx/nginx.conf:/etc/nginx/nginx.conf \
--network heima \
nginx
其中:① 两个-p是因为有两个前端项目,nginx配置文件里配置了两个前端端口,html文件里是两个前端项目,② -v /root/nginx/nginx.conf 挂载的是配置文件不是目录 ③ --network heima 是连接到heima网桥。
7. Dockerfile 构建镜像命令:
eg:
# 基础镜像
FROM openjdk:11.0-jre-buster
# 设定时区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 拷贝jar包
COPY docker-demo.jar /app.jar
# 入口
ENTRYPOINT ["java", "-jar", "/app.jar"]
8. docker 容器连接自己创建的网桥:
eg: mysql容器连接 testwangqiao 网桥:
docker network connect testwangqiao mysql
查看容器详情:docker inspect mysql
9. DockerCompose:
使用dockercompose部署容器前先删除mysql、nginx、hm容器:
docker rm -f mysql nginx hm
按照docker-compose.yml文件构建并部署容器和网桥:
docker compose up -d
停止和删除容器:
docker compose down
查看网桥
docker network ls
10.DockerComplse 根据docker-compose.yml文件实现对docker容器集群的快速编排:
docker-compose.yml文件示例:
version: "3.8"
services:
mysql:
image: mysql
container_name: mysql
ports:
- "3306:3306"
environment:
TZ: Asia/Shanghai
MYSQL_ROOT_PASSWORD: 123
volumes:
- "./mysql/conf:/etc/mysql/conf.d"
- "./mysql/data:/var/lib/mysql"
- "./mysql/init:/docker-entrypoint-initdb.d"
networks:
- hm-net
hmall:
build:
context: .
dockerfile: Dockerfile
container_name: hmall
ports:
- "8080:8080"
networks:
- hm-net
depends_on:
- mysql
nginx:
image: nginx
container_name: nginx
ports:
- "18080:18080"
- "18081:18081"
volumes:
- "./nginx/nginx.conf:/etc/nginx/nginx.conf"
- "./nginx/html:/usr/share/nginx/html"
depends_on:
- hmall
networks:
- hm-net
networks:
hm-net:
name: hmall