# 下载 Docker 和相关软件包
先在外网机器下载 Docker 相关的 rpm 包然后跳板机上传到内网服务器的
/tmp目录下,使用 root 权限用户进入到/tmp目录,然后使用文章后续给出的命令安装
# rpm包清单及下载链接
下载链接:Index of linux/centos/7/x86_64/stable/Packages/ (opens new window)
- docker-ce-rootless-extras-24.0.6-1.el7.x86_64.rpm
- docker-ce-24.0.6-1.el7.x86_64.rpm
- docker-ce-cli-24.0.6-1.el7.x86_64.rpm
- containerd.io-1.6.24-3.1.el7.x86_64.rpm
- docker-buildx-plugin-0.11.2-1.el7.x86_64.rpm
- docker-ce-selinux-17.03.3.ce-1.el7.noarch.rpm
- docker-compose-plugin-2.21.0-1.el7.x86_64.rpm
下载链接:container-selinux (opens new window)
- container-selinux-2.107-1.el7_6.noarch.rpm(containerd.io依赖)
下载链接:slirp4netns (opens new window)
- slirp4netns-0.4.3-4.el7_8.x86_64.rpm(docker-ce-rootless-extras依赖)
下载链接:fuse-overlayfs (opens new window)
- fuse-overlayfs-0.7.2-6.el7_8.x86_64.rpm(docker-ce-rootless-extras依赖)
下载链接:fuse3-libs (opens new window)
- fuse3-libs-3.6.1-4.el7.x86_64.rpm(fuse-overlayfs依赖)
# 安装命令
要按顺序安装,不然陷入依赖陷阱中
yum install docker-ce-24.0.6-1.el7.x86_64.rpm container-selinux-2.107-1.el7_6.noarch.rpm docker-ce-cli-24.0.6-1.el7.x86_64.rpm docker-ce-rootless-extras-24.0.6-1.el7.x86_64.rpm docker-compose-plugin-2.21.0-1.el7.x86_64.rpm containerd.io-1.6.24-3.1.el7.x86_64.rpm docker-buildx-plugin-0.11.2-1.el7.x86_64.rpm docker-ce-selinux-17.03.3.ce-1.el7.noarch.rpm fuse-overlayfs-0.7.2-6.el7_8.x86_64.rpm slirp4netns-0.4.3-4.el7_8.x86_64.rpm fuse3-libs-3.6.1-4.el7.x86_64.rpm
# 添加用户到 docker 组
sudo usermod -aG docker user_name # 把普通的用户名加入到docker用户组后就不用在docker命令前加sudo
# 设置开机启动
systemctl enable docker
# 启动
systemctl start docker
# Docker Compose
# Build
docker compose build service_name # 构建单个服务
docker compose build # 构建所有服务
# 优化
构建时忽略不必要的文件夹,如”node_modules“
在项目根路径新建.dockerignore
# 相关命令
docker compose up -d # 后台启动所有容器,如果相关服务还没有构建会自动构建一次再启动
docker compose stop # 停止所有容器
# Docker Image 迁移
由于是内网环境连不上网,所以 Docker 镜像也需要在外网环境拉取和导出
# 导出镜像
docker save image_name > image.tar
# 导入镜像
docker load < image.tar
# 遇到的坑
- 运维装了个 Docker v19.03.9 在运行 Python 3.9 程序时提示 RuntimeError: can't start new thread,更新 Docker 版本解决