简述
前情回顾
在前面章节中,我们准备了用于科学上网的代理服务器。那接下来我们将进一步展开来介绍容器的安装和配置。
环境准备
主机准备
准备好需要用容器的服务器,比如:Kubernetes集群中所有的服务器,Harbor的宿主机等等。例如:
Node Type | CPU | MEM | Log Disk | Docker Disk |
---|---|---|---|---|
Master | 8Core | 16GB | 40GB | 100GB |
minion1 | 8Core | 16GB | 40GB | 100GB |
minion2 | 8Core | 16GB | 40GB | 100GB |
minion3 | 8Core | 16GB | 40GB | 100GB |
minion4 | 8Core | 16GB | 40GB | 100GB |
minion5 | 8Core | 16GB | 40GB | 100GB |
minion6 | 8Core | 16GB | 40GB | 100GB |
其中:
- Log Disk:文件系统为:/var/log
- Docker Disk: 文件系统为:/var/lib/docker。
操作系统要求
考虑到后续Docker容器的文件系统,我们将采用Docker官网推荐的Overlay2,对于此版本CentOS的版本也将有所要求。
- CentOS版本,建议升级到7.5+ stable版本。
- 内核建议升级到最新4.20+版本。
CentOS7 版本升级
切换到root用户,直接执行:
[root@localhost ~]# yum update
CentOS7内核升级
请参考本人的另一篇文章,在此处就不再累述。
https://www.jianshu.com/p/3e3bc1f51332。
Docker文件系统准备
挂载磁盘到主机
- 在云服务器New一个磁盘100GB,专门用于Docker镜像以及容器存储。
- 挂载磁盘到宿主机。
对磁盘创建分区及格式化
登录宿主机,查看新挂载磁盘:
[root@localhost ~]# fdisk -l
Disk /dev/vda: 42.9 GB, 42949672960 bytes, 83886080 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x0008e9bc
Device Boot Start End Blocks Id System
/dev/vda1 * 2048 2099199 1048576 83 Linux
/dev/vda2 2099200 83886079 40893440 83 Linux
Disk /dev/vdb: 100 GB, 161061273600 bytes, 314572800 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xbe36259a
Device Boot Start End Blocks Id System
[root@localhost ~]#
对磁盘进行分区
通过fdisk对磁盘进行分区,进入菜单后分别选择: n->p->默认->默认。
最后输入wq进行保存,如果wq保存的时候提示磁盘在busy状态,需要重启,就重启下,如果没提示,则可继续后续步骤。
[root@localhost ~]# fdisk /dev/vdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): n
Partition type:
p primary (3 primary, 0 extended, 1 free)
e extended
Select (default p): p
....
对磁盘进行格式化
我们采用xfs格式对磁盘进行格式化,需要注意的是,需要对操作系统内核进行升级。
- CentOS版本,建议升级到7.5 stable版本。
- 内核建议升级到最新4.19版本。
操作系统升级及内核升级,请参考本人另一篇文章:
https://www.jianshu.com/p/3e3bc1f51332
格式化:
注意:请注意替换自己在创建分区的时候创建出来的Device Boot. 本例中的为:/dev/vdb3
[root@localhost ~]# mkfs.xfs -n ftype=1 /dev/vdb3
如果格式过程中,或者重装的过程中有提示该磁盘已在用,则可强制格式化。
将磁盘Mount到目标路径
我们将采用docker默认的路径来做目标路径:/var/lib/docker
[root@localhost ~]# mount /dev/vdb3 /var/lib/docker
[root@localhost ~]# df -hT
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 7.9G 0 7.9G 0% /dev
tmpfs tmpfs 7.9G 0 7.9G 0% /dev/shm
tmpfs tmpfs 7.9G 9.2M 7.9G 1% /run
tmpfs tmpfs 7.9G 0 7.9G 0% /sys/fs/cgroup
/dev/vda2 ext4 39G 2.8G 34G 8% /
/dev/vdb2 ext4 40G 57M 38G 1% /var/log
/dev/vdb3 xfs 100G 33M 100G 1% /var/lib/docker
/dev/vda1 ext4 976M 249M 660M 28% /boot
经过查看,我们发现/var/lib/docker 已使用xfs类型成功Mount。
添加主机启动自动挂载
[root@localhost ~]# vi /etc/fstab
......
/dev/vdb3 /var/lib/docker xfs defaults 0 0
......
添加系统对Overlay2文件系统的支持
[root@localhost ~]# yum install yum-plugin-ovl -y
卸载已有Docker
此步骤非必须,如果是新装服务器,请忽略。
[root@localhost ~]# yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
安装Docker
我们将采用Docker Engine的社区版本。
安装Docker Yum仓库
[root@localhost ~]# yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
安装Docker的稳定版本库。
[root@localhost ~]# yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
按照官网的介绍,如果需要Nightly版本,请自行参考官网安装相应的Yum仓库。
安装Docker
[root@localhost ~]# yum install docker-ce docker-ce-cli containerd.io
配置Docker
设置开启自启动
[root@localhost ~]# systemctl enable docker
配置代理服务器
代理服务器的配置用来下载那些需要科学上网的镜像,比如:Kubernetes的镜像。
在当前用户的根路径下创建Docker的配置文件。
# mkdir -p /etc/systemd/system/docker.service.d/
# vi /etc/systemd/system/docker.service.d/http-proxy.conf
[Service]
Environment="HTTP_PROXY=http://xxx.xxx.xxx.xxx:8118/" "NO_PROXY=localhost,127.0.0.1,xxx.xxx.xxx.xxx,hub.twinkle.net,*.docker.io"
#
# vi /etc/systemd/system/docker.service.d/https-proxy.conf
[Service]
Environment="HTTP_PROXY=http://192.168.0.127:8118/" "NO_PROXY=localhost,127.0.0.1,xxx.xxx.xxx.xxx,hub.twinkle.net,*.docker.io"
启动Docker
我们将拉起Docker。
[root@localhost ~]# systemctl start docker
[root@localhost ~]# docker info
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
Server Version: 18.09.0
Storage Driver: overlay2
Backing Filesystem: xfs
Supports d_type: true
Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: systemd
Plugins:
Volume: local
Network: bridge host macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: c4446665cb9c30056f4998ed953e6d4ff22c7c39
runc version: 4fc53a81fb7c994640722ac585fa9ca548971871
init version: fec3683
Security Options:
seccomp
Profile: default
Kernel Version: 4.20.0-1.el7.elrepo.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 24
Total Memory: 62.8GiB
Name: localhost.localdomain
ID: 3ZMY:RKZY:MNOQ:USOO:AU6Q:HITD:IHIV:NHCM:XLUY:OYOJ:HTS2:62WJ
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: false
Product License: Community Engine
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled
[root@localhost ~]#
至此Docker已安装完毕,可以继续后续章节。