Docker、Docker Compose部署实践过程
作者:凭X而动
这篇文章主要介绍了Docker、Docker Compose部署实践过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
一、Docker在线部署
1.1 安装软件包
yum install -y yum-utils
1.2 配置docker yum源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
1.3 查看仓库中所有docker版本
yum list docker-ce --showduplicates | sort -r

1.4 安装docker
# 指定版本安装 yum install -y docker-ce-3:26.1.4-1.el7.x86_64 # 安装最新版本docker yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
1.5 启动并设置开机自启
systemctl start docker && systemctl enable docker
1.6 验证安装是否成功
docker version

1.7 配置镜像加速器
配置其他镜像加速器
docker镜像状态监控网站:https://status.anye.xyz/
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://docker.1ms.run",
"https://docker.aityp.com",
"https://mirrors.tencent.com",
"https://hub.rat.dev",
"https://docker.actima.top",
"https://docker.m.daocloud.io",
"https://docker.imgdb.de",
"https://docker.xuanyuan.me",
"https://mirror.azure.cn"
]
}
EOF
# 重新加载daemon.json文件以及重启docker
systemctl daemon-reload
systemctl restart docker
1.8 docker常用命令
# 启动docker systemctl start docker # 停止docker systemctl stop docker # 查询docker状态 systemctl status docker # 查询镜像容器占用的空间 docker system df # 查看运行中的容器 docker ps # 查看所有容器 docker ps -a # 搜索镜像 docker search nginx # 下载镜像 docker pull nginx # 下载指定版本镜像 docker pull nginx:1.26.0 # 查看所有镜像 docker images # 删除指定id的镜像 docker rmi e784f4560448 # 运行一个新容器 docker run nginx # 停止容器 docker stop nginx # 启动容器 docker start 592 # 重启容器 docker restart 592 # 查看容器资源占用情况 docker stats 592 # 查看容器日志 docker logs 592 # 删除指定容器 docker rm 592 # 强制删除指定容器 docker rm -f 592 # 后台启动容器 docker run -d --name mynginx nginx # 后台启动并暴露端口 docker run -d --name mynginx -p 80:80 nginx # 进入容器内部 docker exec -it mynginx /bin/bash # 提交容器变化打成一个新的镜像 docker commit -m "update index.html" mynginx mynginx:v1.0 # 保存镜像为指定文件 docker save -o mynginx.tar mynginx:v1.0 # 删除多个镜像 docker rmi bde7d154a67f 94543a6c1aef e784f4560448 # 加载镜像 docker load -i mynginx.tar # 登录 docker hub docker login # 重新给镜像打标签 docker tag mynginx:v1.0 leifengyang/mynginx:v1.0 # 推送镜像 docker push leifengyang/mynginx:v1.0 # 把容器指定位置的东西复制出来 docker cp 5eff66eec7e1:/etc/nginx/nginx.conf /data/conf/nginx.conf # 把外面的内容复制到容器里面 docker cp /data/conf/nginx.conf 5eff66eec7e1:/etc/nginx/nginx.conf
1.9 使用runlike工具查看docker run启动命令
# 1. 检查 Python 是否已安装 python --version # 或者 python3 --version # 2. 安装 pip # 对于 Python 2.x: yum install python-pip # 对于 Python 3.x: yum install python3-pip # 确认 pip 安装成功 # 对于 Python 2.x: pip --version # 对于 Python 3.x: pip3 --version # 3. 安装 runlike # 对于 Python 2.x: pip install runlike # 对于 Python 3.x: pip3 install runlike # 4. 生成docker run启动命令 runlike -p <容器名称或ID>
1.10 卸载docker
yum remove -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
二、Docker离线部署
2.1 rpm方式
2.1.1 获取 Docker 依赖包
在一台相同版本的联网机器上执行:
# 安装软件包 yum install -y yum-utils createrepo # 配置docker yum源 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 创建rpm包目录 mkdir /opt/docker-rpm # 下载Docker及其所有依赖到指定目录 repotrack docker-ce \ docker-ce-cli \ containerd.io \ docker-buildx-plugin \ docker-compose-plugin \ -p /opt/docker-rpm # 打包文件 tar -czvf docker-rpm.tar.gz -C /opt/docker-rpm .
2.1.2 安装 RPM
上传docker-rpm.tar.gz到服务器
# 创建目录并解压 mkdir -p /opt/docker-rpm tar -zxvf docker-rpm.tar.gz -C /opt/docker-rpm # 进入目录 cd /opt/docker-rpm # 按依赖顺序手动安装(关键!) # --nodeps: 忽略依赖检查(因为你已确保所有包已下载) # --force: 覆盖冲突文件 sudo rpm -ivh \ container-selinux-*.rpm \ libcgroup-*.rpm \ containerd.io-*.rpm \ docker-ce-cli-*.rpm \ docker-ce-*.rpm \ docker-ce-rootless-extras-*.rpm \ docker-buildx-plugin-*.rpm \ docker-compose-plugin-*.rpm \ --nodeps --force
2.1.3 检查 Docker 软件包是否正确安装
# 查看 Docker 相关软件包是否安装 rpm -qa | grep docker

2.1.4 启动并设置开机自启
systemctl start docker && systemctl enable docker
2.1.5 验证安装是否成功
docker version

2.2 免安装方式
2.2.1 下载
https://download.docker.com/linux/static/stable/x86_64/
2.2.2 解压并部署
mdkir /opt # 上传压缩包到/opt目录下并解压 cd /opt tar -zxvf docker-26.1.4.tgz # 将docker文件内容复制到/usr/bin/目录下 cp docker/* /usr/bin/ # 赋予可执行权限 chmod +x /usr/bin/docker*
2.2.3 设置开机自启
vi /etc/systemd/system/docker.service [Unit] Description=Docker Application Container Engine After=network-online.target firewalld.service Wants=network-online.target [Service] Type=notify ExecStart=/usr/bin/dockerd ExecReload=/bin/kill -s HUP $MAINPID Restart=on-failure LimitNOFILE=infinity LimitNPROC=infinity Delegate=yes [Install] WantedBy=multi-user.target
赋予文件权限并启动docker
# 赋予文件权限 chmod +x /etc/systemd/system/docker.service # 重载配置 systemctl daemon-reload # 启动docker systemctl start docker #设置开机自启 systemctl enable docker # 验证服务状态 systemctl status docker

三、Docker Compose部署
3.1 安装Docker Compose
3.1.1 离线安装
https://github.com/docker/compose/releases
在下载页面找到docker-compose-linux-x86_64文件下载

上传到/usr/local/bin目录下
重命名为docker-compose
mv docker-compose-linux-x86_64 docker-compose
赋予可执行权限
chmod +x /usr/local/bin/docker-compose
查看版本号
docker-compose -v 或者: docker-compose version

3.1.2 在线安装
# 查看最新版本号:https://github.com/docker/compose/releases # 下载2.37.1版本Docker Compose sudo curl -L "https://github.com/docker/compose/releases/download/v2.37.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
赋予可执行权限
sudo chmod +x /usr/local/bin/docker-compose
验证安装
docker-compose -v 或者: docker-compose version

3.2 基本使用
version: '3.8' # 指定兼容的 Compose 规范版本
services: # 服务定义区块
webapp: # 服务名称(自定义)
image: nginx:latest # 镜像
container_name: my-nginx # 容器名称
ports:
- "80:80" # 端口映射(主机:容器)
- "443:443"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf # 挂载配置文件
- html:/usr/share/nginx/html # 使用命名卷
networks:
- frontend # 加入指定网络
depends_on:
- database # 声明依赖关系
database:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: password # 环境变量注入
volumes:
- /opt/mysql/mysql_data:/var/lib/mysql # 数据持久化
networks:
- backend
volumes: # 声明数据卷(自动创建)
html:
mysql_data:
networks: # 自定义网络(隔离通信)
frontend:
backend:
3.3 常用命令
执行 docker compose(或旧版 docker-compose)命令时,默认在当前工作目录下查找以下文件:
- docker-compose.yml
- docker-compose.yaml
若文件不在当前目录或使用自定义文件名,需通过 -f(或 --file)参数指定路径
# 指定其他目录或文件名 docker-compose -f /path/to/custom-compose.yml up # 使用多个 Compose 文件(合并配置) docker-compose -f docker-compose.yml -f docker-compose.prod.yml up
| 命令 | 作用 |
|---|---|
| docker-compose up | 启动所有服务(前台运行) |
| docker-compose up -d | 后台启动所有服务 |
| docker-compose up stop | 停止正在运行的容器 |
| docker-compose down | 停止并删除容器、网络(保留数据卷) |
| docker-compose down -v | 停止并删除容器、网络及数据卷 |
| docker-compose start | 启动已经存在的服务容器 |
| docker-compose restart | 重启项目中的服务 |
| docker-compose logs | 查看所有服务的日志 |
| docker-compose logs -f web | 实时跟踪 web 服务的日志 |
| docker-compose ps | 查看运行中的容器状态 |
| docker-compose up --scale web=3 | 启动多个服务实例(如负载均衡) |
| docker-compose exec web sh | 进入 web 容器的 Shell |
| docker-compose build | 根据 build: 配置构建镜像(需在 Compose 文件中定义) |
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
