以下是对安装 Docker 容器每个步骤的详细说明:
-
有网环境下使用该指令拉取:
wget https://download.docker.com/linux/static/stable/x86_64/docker-23.0.3.tgz
。- 作用:从指定的 URL 下载 Docker 的安装包。这个安装包适用于 Linux 系统的 x86_64 架构,版本为 23.0.3。通过网络下载确保能够获取到最新版本的 Docker 安装文件。
-
使用
tar -zxvf docker-23.0.3.tgz
命令解压安装包。(注:红色字体为安装包名称)。- 作用:将下载的安装包进行解压,以便后续能够访问其中的文件。
tar
命令是 Linux 系统中常用的归档和压缩工具,-zxvf
参数分别表示使用 gzip 格式解压、显示解压过程、从归档文件中提取文件。
- 作用:将下载的安装包进行解压,以便后续能够访问其中的文件。
-
使用
cp docker/* /usr/bin/
命令将解压出的 docker 文件所有内容移动到 bin 目录下。- 作用:将解压后的 Docker 相关文件复制到
/usr/bin/
目录。/usr/bin/
是系统的可执行文件目录,这样做可以使 Docker 的命令在系统的任何位置都可以被执行。
- 作用:将解压后的 Docker 相关文件复制到
-
使用
vim /etc/systemd/system/docker.service
命令将 docker 注册为 service,按 i 进入书写模式,填入以下文字: -
`[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
#the default is not to use systemd for cgroups because the delegate issues still
#exists and systemd currently does not support the cgroup feature set required
#for containers run by docker
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
#Having non-zero Limit*s causes performance problems due to accounting overhead
#in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
#Uncomment TasksMax if your systemd version supports it.
#Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
#set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
#kill only the docker process, not all processes in the cgroup
KillMode=process
#restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target`
以下对配置文件解析:
[Unit]部分:
- Description=Docker Application Container Engine
:为这个服务提供一个描述,说明这是 Docker 应用容器引擎服务。
- Documentation=https://docs.docker.com
:指定了关于 Docker 的文档链接。
- After=network-online.target firewalld.service
:表示这个服务应该在网络连接建立并且防火墙服务启动之后启动。
- Wants=network-online.target
:表示这个服务希望网络连接可用。
-
[Service]部分:
Type=notify
:指定服务的类型为 notify,表示服务在启动和停止时会发送通知。ExecStart=/usr/bin/dockerd
:指定了 Docker 守护进程的启动命令。ExecReload=/bin/kill -s HUP $MAINPID
:定义了如何重新加载服务,这里是通过向主进程发送 HUP 信号来实现。LimitNOFILE=infinity
、LimitNPROC=infinity
、LimitCORE=infinity
:设置了进程的文件描述符数量、进程数量和核心文件大小的限制为无限。TimeoutStartSec=0
:启动服务的超时时间为 0,表示不限制启动时间。Delegate=yes
:允许 systemd 将一些任务委托给 Docker,避免 systemd 对 Docker 容器的 cgroups 进行不必要的管理。KillMode=process
:指定在停止服务时只杀死 Docker 进程,而不是容器中的所有进程。Restart=on-failure
:如果服务意外退出,自动重新启动。StartLimitBurst=3
、StartLimitInterval=60s
:限制服务在一段时间内的启动次数,防止无限次的快速重启。
-
[Install]部分:
WantedBy=multi-user.target
:表示这个服务在多用户系统启动时被需要。
-
填写进入后先按 Esc 键,后按冒号输入 wq,点击回车。(注:可以右键粘贴;w 为保存,q 为退出):这是在 vim 编辑器中的操作,保存并退出编辑。
-
使用
chmod +x /etc/systemd/system/docker.service
命令添加文件权限。- 作用:为刚刚创建的 Docker 服务文件添加可执行权限,以便 systemd 能够正确地读取和执行这个文件。
-
使用
systemctl daemon-reload
命令重载 unit 配置文件。- 作用:当对 systemd 的服务配置文件进行了修改后,需要使用这个命令让 systemd 重新加载配置文件,以便系统能够识别新的服务或修改后的服务配置。
-
使用
systemctl start docker
命令启动 docker 容器。- 作用:启动 Docker 服务,使 Docker 守护进程开始运行,从而可以创建和管理 Docker 容器。
-
使用
systemctl status docker
命令查看 docker 状态,验证是否成功。- 作用:查看 Docker 服务的运行状态,包括是否正在运行、启动时间、日志信息等。通过查看状态可以确定 Docker 是否成功安装和启动。
-
使用
systemctl enable docker.service
命令设置 docker 开机自启。
- 作用:将 Docker 服务设置为在系统启动时自动启动,这样就不需要每次手动启动 Docker,提高了使用的便利性。