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