Docker、Docker Compose部署实践过程

 更新时间:2026年03月18日 08:43:09   作者:凭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 文件中定义)

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 在wsl-ubuntu中如何通过 docker 启动 gpu-jupyter

    在wsl-ubuntu中如何通过 docker 启动 gpu-jupyter

    这篇文章主要介绍了在wsl-ubuntu中如何通过 docker 启动 gpu-jupyter,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-01-01
  • 详解六种减小Docker镜像大小的方法

    详解六种减小Docker镜像大小的方法

    这篇文章主要介绍了详解六种减小Docker镜像大小的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • docker环境部署Hadoop集群教程

    docker环境部署Hadoop集群教程

    文章介绍了在Docker环境下部署Hadoop集群的步骤,包括ocker-compose.yml配置文件创建、Docker容器启动集群验证集群状态数据持久化测试NamenodeDatanatannode数据持久化测试容器故障场景验证持久化效果
    2026-05-05
  • 在Dockerfile中copy和add的区别及说明

    在Dockerfile中copy和add的区别及说明

    COPY和ADD都是Dockerfile中用于文件复制的命令,但COPY仅用于本地文件或目录的复制,不支持自动解压缩;而ADD除了复制本地文件或目录外,还支持解压缩和从URL下载文件,在一般情况下,建议使用COPY命令
    2025-03-03
  • Docker探索namespace详解

    Docker探索namespace详解

    以前对docker中的namespace了解甚少,今天在网上查阅相关文章,发现这篇还不错,介绍了namespace资源隔离以及进行namespace api操作的四种方式等内容,这里分享给大家,供参考。
    2017-10-10
  • Docker部署UI自动化测试环境的实现步骤

    Docker部署UI自动化测试环境的实现步骤

    本文主要介绍了Docker部署UI自动化测试环境的实现步骤,通过Docker可以快速创建、部署和测试脚本,提高测试效率,具有一定的参考价值,感兴趣的可以了解一下
    2023-08-08
  • Docker安装部署RabbitMQ教程

    Docker安装部署RabbitMQ教程

    本文详解了Docker容器化部署RabbitMQ的优势,涵盖环境一致性、资源隔离、弹性伸缩等核心价值,提供从安装配置到集群部署、数据持久化及故障排查的完整方案,帮助构建高效稳定的消息队列服务
    2025-08-08
  • docker启动anything llm报unable to open database file: ../storage/anythingllm.db问题及解决

    docker启动anything llm报unable to open data

    安装Docker和下载镜像时需切换国内源,由于Docker运行时创建文件的用户uid为1000,而默认使用root创建目录,导致权限不符,运行时报错,修改目录权限或所有者为uid 1000即可
    2026-04-04
  • docker部署MySQL主从服务集群方式

    docker部署MySQL主从服务集群方式

    文章介绍了如何创建目录、配置文件和搭建MySQL集群,包括设置主库和两个从库的配置,并详细说明了如何创建复制用户和连接主库
    2025-11-11
  • docker使用Dockerfile构建镜像的实现示例

    docker使用Dockerfile构建镜像的实现示例

    本文主要介绍了docker使用Dockerfile构建镜像的实现示例,通过编写 Dockerfile,您可以定义镜像的基础环境、安装软件包、复制文件、设置环境变量等操作,下面就来介绍一下
    2024-01-01

最新评论