docker

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 云和虚拟化 > docker > Docker、Docker Compose部署

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)命令时,默认在当前工作目录下查找以下文件:

若文件不在当前目录或使用自定义文件名,需通过 -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 文件中定义)

总结

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

您可能感兴趣的文章:
阅读全文