CentOS7.6 安装docker
卸载docker的旧版本
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
使用yum安装gcc相关配置 安装yum_utils包
yum install -y yum-utils device-mapper-persistent-data lvm2
安装软件包和国内的镜像仓库
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装docker,并检测安装是否成功
Docker官方提供了两种版本,一种是ce版本,一种不带ce(简单来说就是前一个是社区版本不收费,后一个是企业版收费)我们使用ce版本就可以了
yum install docker-ce
docker version
Docker 使用
复制文件到容器内
docker cp filename container_name:/path/to/copy
docker-compose 安装
docker-compose 是一个声明式多容器编排工具,用 YAML 文件定义一组相关联的容器(服务、网络、卷、变量等),然后一条命令就能创建、启动、停止、重建、查看、扩缩容整个应用栈。
在轻量级容器应用使用docker-compose完全可以胜任,无需使用k8s
Linux 上我们可以从 Github 上下载它的二进制包来使用,最新发行的版本地址:https://github.com/docker/compose/releases。
运行以下命令以下载 Docker Compose 的当前稳定版本:
sudo curl -L "https://github.com/docker/compose/releases/download/v2.2.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
要安装其他版本的 Compose,请替换 v2.2.2。
将可执行权限应用于二进制文件:
chmod +x /usr/local/bin/docker-compose
创建软链:
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
测试是否安装成功:
docker-compose version
cker-compose version 1.24.1, build 4667896b
启动项目
在docker-compose.yml文件目录
docker-compose up -d
创建并启动容器、网络(默认的)、卷(可选)
-d 代表后台运行
只停止项目容器,不删网络/卷
docker-compose stop
运行已停止的项目(不需要重新创建容器)
只要执行过 docker-compose stop,下次想恢复就运行:
docker-compose start
重启项目(不需要重新创建容器)
docker-compose restart
如果只想重启某个服务,后面跟上服务名称即可(docker-compose.yml文件中的服务名称)
docker-compose restart [service_name]
停止整个项目(删除容器、网络、卷)
docker-compose down
会停止并删除所有由 docker-compose up 创建的容器、网络(默认的)、卷(可选)。 等价于“一键清理”,无需手动 docker stop 每个容器。
停止并删干净(包括卷)
docker-compose down -v
慎用:会把匿名卷也删掉,可能丢数据。
添加新的服务
更新 docker-compose.yml
确保你已经添加了新服务,比如:
new-service:
image: nginx:alpine
ports:
- "8080:80"
拉取新镜像(如果有)
docker-compose pull new-service
启动新服务(不中断已有服务)
docker-compose up -d new-service
这条命令 只启动新增的服务,不会重启已有服务。
验证状态
docker-compose ps
docker-compose logs new-service
不要直接 docker-compose down 再 up,这会停掉所有容器(除非你愿意短暂中断) 不要手动 docker run 新服务,这样 compose 管理不到它。
更新服务
构建新镜像(带版本号)
docker build -t myapp:django-v1.2.3 .
不要覆盖 latest,用版本号是为了回滚。
修改 docker-compose.yml
services:
django:
image: myapp:django-v1.2.3
...
滚动更新(零停机)
docker-compose up -d --no-deps django
旧容器会被优雅停止,新容器启动后接管流量
验证
docker-compose ps
docker-compose logs django
回滚(出问题秒回)
# 改回旧版本号
vim docker-compose.yml # 改成 v1.2.2
docker-compose up -d --no-deps django
生产环境更新 Django 镜像 = 构建新版本 → 推送 → 修改 compose → 滚动重启
更新nginx配置
更新 docker-compose.yml 中的 Nginx 设置 后,不需要重建整个项目,但必须让 Nginx 重新加载配置,否则新设置不会生效
修改nginx的配置文件更新配置,比如你改了端口、反向代理地址、缓存策略等。
让 Nginx 重新加载配置(不重启容器)
docker-compose exec nginx nginx -s reload
第一个 nginx是 compose 文件里的 service 名,也就是你在 docker-compose.yml 中写的 第二个 nginx是容器内部的可执行文件路径,即 /usr/sbin/nginx(官方镜像里默认在 PATH 中,所以直接写 nginx 就行)。 它告诉容器里要运行的命令是 “nginx 进程自己执行 reload”。
如果你改了 docker-compose.yml 本身(如端口映射)
那就必须重启 Nginx 容器:
docker-compose up -d --no-deps nginx
总结
| 修改内容 | 更新方式 |
|---|---|
| Nginx 配置文件 | docker-compose exec nginx nginx -s reload |
| docker-compose.yml 中的端口/镜像/环境变量 | docker-compose up -d --no-deps nginx |
文档信息
版权声明:可自由转载(请注明转载出处)-非商用-非衍生
发表时间:2025年10月13日 15:39