前前后后安装了多次 Docker,每次都会折腾很久,也会遇到很多问题,在这里简单记录下安装过程以及遇到的问题(在虚拟机中基于 CentOS 7,均在 root 账户下操作)。
要求
Docker 要求 CentOS 系统的内核版本高于 3.10,可使用如下指令查看系统内核版本
安装所需工具
1
| yum install -y yum-utils device-mapper-persistent-data lvm2
|
添加 yum 国内镜像仓库
1
| yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
|
更新缓存
安装 Docker
1
| yum -y install docker-ce
|
启用服务
开机自动启动(可选)
添加 Docker 国内镜像
由于国内网络原因,需要添加国内的镜像仓库,首先使用如下指令编辑该文件
1
| vi /etc/docker/daemon.json
|
添加如下内容:
1 2 3
| { "registry-mirrors": ["https://registry.docker-cn.com"] }
|
刷新变化
重启Docker
1
| systemctl restart docker
|
配置代理(可选)
如果你的网络需要配置代理,请执行如下指令
配置 http 代理
1
| vi /etc/systemd/system/docker.service.d/http-proxy.conf
|
添加下面的内容
1 2
| [Service] Environment="HTTP_PROXY=http://172.17.17.17:7777" "NO_PROXY=localhost,127.0.0.1,192.168.23.4"
|
NO_PROXY 用来配置不需要使用代理的地址
配置 https 代理
1
| vi /etc/systemd/system/docker.service.d/https-proxy.conf
|
添加下面的内容
1 2
| [Service] Environment="HTTPS_PROXY=https://172.17.17.17:7777/" "NO_PROXY=localhost,127.0.0.1,192.168.23.4"
|
PS:其中的 172.17.17.17:7777 根据实际情况进行修改,如果代理不支持 HTTPS 的话,需要把 https://172.17.17.17:7777/ 中的 https 改成 http,否则回报 tls 的错误
配置 bip
1
| vi /etc/docker/daemon.json
|
添加以下内容:
1
| "bip": "192.168.2.23/24"
|
PS:修改的网段不要和虚拟机 IP,代理在同一网段,否则可能导致 SSH 无法连接虚拟机或者 Docker 无法上网等问题
其他问题
VBox 无界面启动 CentOS
将以下指令保存为 bat 格式文件,双击即可
1 2 3
| @D: @cd D:\Program Files\Oracle\VirtualBox VBoxManage.exe startvm "Centos7" --type headless
|
如果要关闭虚拟机,则采用如下的脚本即可
1 2 3
| @D: @cd D:\Program Files\Oracle\VirtualBox VBoxManage.exe controlvm "Centos7" poweroff
|
PS:其中 D:\Program Files\Oracle\VirtualBox 为 VBox 的安装目录,Centos7 为你需要启动的虚拟机名称
关闭 CentOS 7 的防火墙
1 2 3 4 5
| # 停止 firewall systemctl stop firewalld.service
# 禁止 firewall 开机启动 systemctl disable firewalld.service
|
PS:由于是折腾用的虚拟机,无需使用防火墙,索性关闭了,避免其他问题
SSH 无法连接虚拟机
首先使用如下指令查看虚拟机的 IP
我们会得到以下信息,其中第二项(enp0s3,每个虚拟机网卡可能不太一样,这个值也不同)没有 inet 属性,导致无法连接
1 2 3 4 5 6 7 8 9 10 11 12
| 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 08:00:27:08:9a:58 brd ff:ff:ff:ff:ff:ff 3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN link/ether 02:42:02:3d:70:d4 brd ff:ff:ff:ff:ff:ff inet 192.168.2.23/24 brd 192.168.2.255 scope global docker0 valid_lft forever preferred_lft forever
|
接下来我们使用如下指令修改该网卡的配置(CentOS 7 默认不启动网卡)
1
| vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
|
将其中的 ONBOOT=no 修改为 ONBOOT=yes,重启网络服务
再次使用 ip addr 查看 IP 地址信息,发现已经分配了 IP 地址信息了
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 08:00:27:08:9a:58 brd ff:ff:ff:ff:ff:ff inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic enp0s3 valid_lft 86372sec preferred_lft 86372sec inet6 fe80::9607:7c22:4201:a0dc/64 scope link valid_lft forever preferred_lft forever 3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN link/ether 02:42:02:3d:70:d4 brd ff:ff:ff:ff:ff:ff inet 192.168.2.23/24 brd 192.168.2.255 scope global docker0 valid_lft forever preferred_lft forever
|
然后,再次使用 SSH 进行连接,发现可以连接使用了,就是连接有点慢
SSH 连接慢
使用如下指令修改 SSHD 配置
关闭DNS反向解析,修改 UseDNS=no,配置是注释掉的,但是其默认值是 yes
关闭 SERVER上 的 GSS 认证,修改 GSSAPIAuthentication no
参考文档