本文已参与「新人创作礼」活动,一起开启掘金创作之路。
一、离线部署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
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
4.重新启动docker服务
service docker restart
遇到的问题:
1.添加用户到docker用户组后还是提示no permission
newgrp docker
执行上述命令即可
三、docker在启动的时候遇到的问题
1.docker在导入镜像的时候报错: Error response from daemon: Error running DeviceCreate (createSnapDevice) dm_task_run failed
解决办法:
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
2.docker启动镜像报错Cannot start container web: iptables failed: iptables -t nat -A DOCKER -p tcp -d 0/0 --dport 32797
解决办法:重建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镜像即可
四、卸载安装的docker
yum -y remove docker-engine