目录
部署Docker
本教程以部署社区版Docker(docker-ce)为例。
-
执行以下命令,下载docker-ce的yum源。
sudo wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
-
执行以下命令,安装docker-ce。
sudo yum -y install docker-ce
-
执行以下命令,确认Docker是否部署成功。
如果回显信息类似如图所示,表示Docker已部署成功。
docker -v
-
执行以下命令,启动Docker服务。
sudo systemctl start docker
-
执行以下命令,设置Docker开机自启动。
sudo systemctl enable docker
-
执行以下命令,查看Docker服务的运行状态。
如果回显信息显示
Active:active(running)
时,表示Docker已启动。systemctl status docker
使用Docker制作镜像
本步骤指导您如何制作Docker镜像。
建议先配置国内镜像源
小贴士:国内用户若拉取缓慢,可配置镜像加速器(参考目录修改Docker配置文件)。
-
执行以下命令,拉取Nginx镜像。
本示例以拉取Nginx 1.23.4为例。
sudo docker pull nginx:1.23.4
-
执行以下命令,新建并编辑Dockerfile文件。
-
执行以下命令,新建并编辑Dockerfile文件。
vim Dockerfile
-
按
i
进入编辑模式,并添加以下内容,改造原镜像。#声明基础镜像来源,本示例中基础镜像为拉取的nginx:1.23.4镜像 FROM nginx:1.23.4 #RUN后面接容器运行前需要执行的命令,本示例将Nginx的首页内容改为Welcome, Docker! RUN echo '<h1>Welcome, Docker!</h1>' > /usr/share/nginx/html/index.html
-
按
Esc
键,输入:wq
并按Enter
键,保存并退出Dockerfile文件。
-
-
执行以下命令,基于基础镜像nginx构建新镜像。
命令格式为
docker build -t [镜像名称]:[镜像版本] .
,命令末尾的.
表示Dockerfile文件的路径,不能忽略。以基于构建新镜像image001:v1为例,则命令为:sudo docker build -t image001:v1 .
-
执行以下命令,查看新镜像是否构建成功。
如下图回显所示,表示构建成功。
sudo docker images
-
执行以下命令,将Nginx的80端口映射至服务器的8080端口,以启动镜像并实现通过公网访问。
命令格式为
docker run --name [容器名称] -p 8080:80 -d [镜像名称]:[镜像版本]
,示例命令:sudo docker run --name nginx-test -p 8080:80 -d image001:v1
Docker拉取镜像失败的解决方案
在从Docker的Hub库中拉取镜像时,可能会遇到以下错误:
docker: Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers).
See 'docker run --help'.
这个问题通常是由于网络连接问题或镜像源访问受限导致的。以下是详细的解决方法。
解决方法
1. 检查网络连接
首先确保你的服务器能够正常访问互联网,可以尝试使用以下命令测试网络连接:
ping google.com
如果网络连接存在问题,请先修复网络。
2. 修改Docker配置文件
编辑Docker的配置文件 vim /etc/docker/daemon.json
,添加或修改如下内容,以使用国内的镜像加速器:
在 Linux 系统中,/etc/docker/daemon.json
是 Docker 守护进程的配置文件,其注释需遵循 JSON 规范(JSON 本身不支持注释,但 Docker 实际解析时兼容单行注释 //
)。以下是符合 Linux 配置文件规范的注释版本,确保注释清晰且不影响 Docker 解析:
{
"runtimes": {
"nvidia": {
"args": [],
"path": "nvidia-container-runtime"
}
},
"registry-mirrors": [
"https://docker.registry.cyou",
"https://docker-cf.registry.cyou",
"https://dockercf.jsdelivr.fyi",
"https://docker.jsdelivr.fyi",
"https://dockertest.jsdelivr.fyi",
"https://mirror.aliyuncs.com",
"https://dockerproxy.com",
"https://mirror.baidubce.com",
"https://docker.m.daocloud.io",
"https://docker.nju.edu.cn",
"https://docker.mirrors.sjtug.sjtu.edu.cn",
"https://docker.mirrors.ustc.edu.cn",
"https://mirror.iscas.ac.cn",
"https://docker.rainbond.cc"
]
}
{
// 配置容器运行时(此处为 NVIDIA 显卡相关运行时,用于支持 GPU 加速的容器)
"runtimes": {
// 定义名为 "nvidia" 的运行时(需提前安装 nvidia-container-runtime)
"nvidia": {
"args": [], // 传递给运行时的额外参数(此处为空)
"path": "nvidia-container-runtime" // 运行时可执行文件的路径
}
},
// Docker 镜像仓库加速器列表(国内镜像源,加速镜像拉取)
"registry-mirrors": [
"https://docker.registry.cyou", // 第三方镜像加速源
"https://docker-cf.registry.cyou", // 第三方镜像加速源(备用)
"https://dockercf.jsdelivr.fyi", // jsDelivr 提供的镜像加速源
"https://docker.jsdelivr.fyi", // jsDelivr 提供的镜像加速源(主)
"https://dockertest.jsdelivr.fyi", // jsDelivr 测试用加速源
"https://mirror.aliyuncs.com", // 阿里云镜像加速源
"https://dockerproxy.com", // 第三方通用镜像加速源
"https://mirror.baidubce.com", // 百度智能云镜像加速源
"https://docker.m.daocloud.io", // DaoCloud 镜像加速源
"https://docker.nju.edu.cn", // 南京大学镜像加速源
"https://docker.mirrors.sjtug.sjtu.edu.cn", // 上海交通大学镜像加速源
"https://docker.mirrors.ustc.edu.cn", // 中国科学技术大学镜像加速源
"https://mirror.iscas.ac.cn", // 中国科学院镜像加速源
"https://docker.rainbond.cc" // Rainbond 平台提供的镜像加速源
]
}
3. 重载配置并重启Docker服务
sudo systemctl daemon-reload
sudo systemctl restart docker
4. 验证镜像加速器是否正确配置
docker info | grep Registry
你应该会看到配置的镜像源列表。如果一切正常,重新尝试拉取镜像:
docker pull hello-world