Part 5 - 容器部署和管理

2021-10-25
4分钟阅读时长

【版本】

当前版本号v20240829

版本修改说明
v20240829增加Docker源
v20231130修改阿里云的源为HTTP协议,避免证书下载失败
v20231104优化重新启用网口的命令
v20221105加入常见问题
v20211025初始化版本

任务5.1 复制虚拟机并进行配置

【任务目的】

  • 掌握 Virtualbox 虚拟机的复制
  • 掌握虚拟机双网卡的配置
  • 掌握 Rockylinux 的源的配置和替换

【任务环境】

  • VirtualBox
  • FinalShell

【任务步骤】

复制虚拟机

  1. 复制任务1的模板虚拟机。

  2. 重新命名为docker

  3. 选择完全复制。

  4. 选择“当前虚拟机状态”会丢失快照,而选择“全部”则会保留快照。

配置虚拟机网卡

为了让虚拟机能够同时联网,也能够让宿主机进行SSH连接,需要给虚拟机配置2块网卡。网卡1使用“Host-Only”的方式;网卡2使用NAT组网,用于上网。

  1. 打开docker虚拟机的设置,确认网卡1的配置。

  2. 打开docker虚拟机的设置,配置网卡2,连接方式选用网络地址转换(NAT)

  3. 使用root账号登录docker虚拟机。

  4. 查看网卡信息。

ip a
  • 可以看到新的网卡,一般名字为enp0s8
  1. 备份网卡配置,复制enp0s3网卡的配置,并配置新的网卡enp0s8
cd /etc/sysconfig/network-scripts/
mkdir bak
cp ifcfg-enp0s3 ./bak
cp ifcfg-enp0s3 ifcfg-enp0s8
  1. 修改网卡enp0s8的配置。
vim /etc/sysconfig/network-scripts/ifcfg-enp0s8
  • 修改网卡名和设备名为enp0s8
NAME=enp0s8
DEVICE=enp0s8
  • 修改启动协议为DHCP
BOOTPROTO=dhcp
  • 修改UUID的值,只要和原来的值不一样就可以了。以下值仅供参考。
UUID=67d1127a-53ca-48f4-aa82-a2f2766a2f19
  • 新增以下路由优先级,保障路由优先走enp0s8网卡
IPV4_ROUTE_METRIC=99
  • 注释掉以下内容,就是在行前加#符号。
#IPADDR=10.0.0.70
#PREFIX=24
#GATEWAY=10.0.0.254
#DNS1=223.5.5.5
  1. 保存enp0s8的配置,重新启用网口。
nmcli con reload
nmcli con down enp0s8
nmcli con up enp0s8
  1. 再次查看网卡配置是否生效。正常情况应该可以看到每个网卡下的 IP 配置。

  2. 改变虚拟机的主机名为“学号后3位+姓名”,比如“999qzm”。

sudo hostnamectl set-hostname 999qzm

测试联网

  1. 确保自己的电脑连上互联网。

  2. 测试是否能够上网。

ping www.baidu.com -c 3
  • 正常联网的情况下,会返回类似以下信息:
PING www.a.shifen.com (14.119.104.189) 56(84) bytes of data.
64 bytes from 14.119.104.189 (14.119.104.189): icmp_seq=1 ttl=54 time=12.8 ms
64 bytes from 14.119.104.189 (14.119.104.189): icmp_seq=2 ttl=54 time=10.5 ms
64 bytes from 14.119.104.189 (14.119.104.189): icmp_seq=3 ttl=54 time=10.9 ms
  • 联网失败会显示类似以下信息:
PING www.a.shifen.com (14.119.104.254) 56(84) bytes of data.
From 999qzm (10.0.0.70) icmp_seq=1 Destination Host Unreachable
From 999qzm (10.0.0.70) icmp_seq=2 Destination Host Unreachable
From 999qzm (10.0.0.70) icmp_seq=3 Destination Host Unreachable

如果不能上网,查看路由信息,看看是否enp0s8网卡的路由排在第一位。

更换源为阿里云的源

  1. 恢复原有的源。
cd /etc/yum.repos.d/
cp ./test/*.repo ./
mv local.repo ./test
  1. 查看源配置目录下是否存在以下配置文件。
ls /etc/yum.repos.d

  1. 查看源配置
cat /etc/yum.repos.d/Rocky-BaseOS.repo

  1. 替换为阿里云的源
sed -e 's|^mirrorlist=|#mirrorlist=|g' -e 's|^#baseurl=http://dl.rockylinux.org/$contentdir|baseurl=https://mirrors.aliyun.com/rockylinux|g' -i.bak /etc/yum.repos.d/Rocky-*.repo

sed命令 主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。

  1. 查看源配置是否已更换为阿里云的配置。

  2. 下载 Docker 源配置。

dnf install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  1. 查看源目录是否已下载好 Docker 的源配置。
ls /etc/yum.repos.d/docker-ce.repo
  1. 更新源缓存。
dnf clean all
dnf makecache

任务5.2 安装 Docker-CE

【任务目的】

  • 掌握 Docker-CE 的安装

【任务环境】

  • VirtualBox
  • FinalShell

【任务背景】

  • Docker CE指的是docker社区版,用于为了开发人员或小团队创建基于容器的应用,与团队成员分享和自动化的开发管道。

【任务步骤】

安装 Docker-CE

  1. 安装 Docker-CE
dnf -y install docker-ce
  1. 启动 Docker。
systemctl start docker

  1. 查看 Docker 服务的状态是否为active
systemctl status docker
  1. 设置 Docker 为开机启动
systemctl enable docker
  1. 查看 Docker 的版本
docker version
  • 正常应该可以看到以下类似内容:
Client: Docker Engine - Community
 Version:           24.0.5
 API version:       1.43
 Go version:        go1.20.6
 Git commit:        ced0996
 Built:             Fri Jul 21 20:36:32 2023
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          24.0.5
  API version:      1.43 (minimum version 1.12)
  Go version:       go1.20.6
  Git commit:       a61e2b4
  Built:            Fri Jul 21 20:35:32 2023
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.22
  GitCommit:        8165feabfdfe38c65b599c4993d227328c231fca
 runc:
  Version:          1.1.8
  GitCommit:        v1.1.8-0-g82f18fe
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

任务5.3 切换 Docker 仓库镜像源

【任务目的】

  • 掌握 Docker-CE 的仓库源的修改

【任务环境】

  • VirtualBox
  • FinalShell

【任务背景】

  • Docker 可以从仓库下载镜像,但是默认的仓库镜像源下载速度较慢,可以更换为国内的仓库保证镜像下载速度。

【任务步骤】

  1. 编辑仓库镜像源配置文件。
vim /etc/docker/daemon.json
  • 加入以下内容
{
  "registry-mirrors": ["https://registry.docker-cn.com","http://hub-mirror.c.163.com"]
}

Docker中国官方加速地址 https://registry.docker-cn.com

网易163镜像加速 http://hub-mirror.c.163.com

中科大镜像加速 https://docker.mirrors.ustc.edu.cn

阿里云镜像加速(需要注册获取你自己的ID) https://{your_id}.mirror.aliyuncs.com

Docker镜像加速站 http://docker.1panel.live https://hub.rat.dev https://docker.m.daocloud.io

  1. 更新配置并重启 Docker 进程
systemctl daemon-reload
systemctl restart docker
  1. 查看配置的仓库镜像源是否生效。
docker info
  • 查看以下选项Registry Mirrors是否存在你配置的镜像源。
Registry Mirrors:
  https://registry.docker-cn.com/
  http://hub-mirror.c.163.com/

【常见问题】

1. Docker 守护进程(daemon)启动失败

解决办法:

  • (1)配置错误:Docker 的配置文件中可能存在错误,导致守护进程无法启动。解决方法是检查 Docker 配置文件(通常位于 /etc/docker/daemon.json)并修复配置错误。
  • (2)日志分析:查看 Docker 守护进程的日志文件可以提供更多关于启动失败的信息。Docker 的日志文件通常位于 /var/log/docker.log/var/log/syslog。通过查看日志文件,你可以获取更多的错误消息和上下文信息,从而更好地诊断和解决问题。

2. 启动 Docker 服务出错,提示“dockerd: failed to start daemon: Devices cgroup isn’t mounted”。

答:需要加入 grub 启动参数systemd.unified_cgroup_hierarchy=0

  • (1)重启虚拟机,在菜单选项界面按e进行启动参数编辑。

  • (2)在参数界面进行编辑,可以按方向键到文件最后,加入新的一行,输入 systemd.unified_cgroup_hierarchy=0。(不编辑可以按Esc退出)

  • (3)按下Ctrl+X 启动。

  • (4)在虚拟机重新启动 Docker 进程。

systemctl start docker

扫码或长按识别访问