Linux中离线部署docker及遇到的问题

434 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

一、离线部署docker

1.下载安装包:

https://download.docker.com/linux/centos/7/x86_64/stable/Packages/

2.将下载的rpm安装包上传到服务器

3.执行

rpm -ivh docker-engine-1.8.3-1.el7.centos.x86_64.rpm

4.安装完成后,启动docker服务

service docker start

使用rpm安装完docker服务后,默认安装到/var/lib/docker目录下,为了避免后续使用时镜像都存放到/目录导致磁盘过满,我们需要把docker服务做软链到挂载盘上

5.停止docker服务

service docker stop

A87F9E01-A7BC-43E2-86B1-E4EFE67DA661.png

6.假设我们的挂载目录为/data目录,我们需要把docker服务移动到/data/docker目录下   

mv /var/lib/docker/ /data/ 

(注:执行此操作的时候docker服务必须为停止状态)

然后将/data/docker目录和/var/lib/docker目录做一个软链

ln -s /data/docker/   /var/lib/docker

7.然后启动docker服务

service docker start

二、非root用户使用docker

docker默认只能root用户使用,一般公司环境可能无法有root权限,所以需要授权给普通用户,使之也可以使用docker服务。

1.创建普通用户

useradd puaiuc

passwd puaiuc

2.创建docker组

groupadd docker

3.将当前用户加入docker组

gpasswd -a puaiuc docker

409C8D0E-56FD-4C22-BDDC-D72F279FC7E4.png

4.重新启动docker服务 

service docker restart

遇到的问题:

1.添加用户到docker用户组后还是提示no permission

newgrp docker

执行上述命令即可

BB52CFEC-59FC-4266-B72F-781074E09091.png

三、docker在启动的时候遇到的问题

1.docker在导入镜像的时候报错: Error response from daemon: Error running DeviceCreate (createSnapDevice) dm_task_run failed

E4C2406C-57B7-4AC7-B35B-B74F62113A1E.png

解决办法:

service docker stop

thin_check /var/lib/docker/devicemapper/devicemapper/metadata

如果还有问题,则:

thin_check --clear-needs-check-flag /var/lib/docker/devicemapper/devicemapper/metadata

service docker start

494E5DA7-DFD6-4585-84CD-F82A697B619A.png

2.docker启动镜像报错Cannot start container web: iptables failed: iptables -t nat -A DOCKER -p tcp -d 0/0 --dport 32797

3E13FB52-15E4-4F6F-A445-9339B4FBACAF.png

解决办法:重建docker0网络恢复,依次执行下面命令

pkill docker

iptables -t nat -F

ifconfig docker0 down

brctl delbr docker0

docker -d

service docker restart

3.防火墙影响docker启动

服务器的防火墙由iptables切换到firewall,发现redis的docker镜像启动不了,报如下错误:

ERROR: for redis_cluster_6.2.6  Cannot start service redis: driver failed programming external connectivity on endpoint redis_cluster_6.2.6 (85374c46684140ff5cb45cc4452058570942242121b12ee84e00c12a0bbb9e12):  (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 6380 -j DNAT --to-destination 10.10.10.1:6379 ! -i br-88fd6ade0ba7: iptables: No chain/target/match by that name

解决方法:

修改/etc/sysconfig/docker里的OPTIONS增加--iptables=false,重启docker服务,再启动redis镜像即可

C1BB9D1B-22EB-458B-BC30-0674FF889FC0.png

四、卸载安装的docker

yum -y remove docker-engine