快速搭建Docker环境

快速搭建docker环境

  • docker环境搭建
  • 一、docker是安装?
  • 二、安装问题汇总
    • 1、因为之前已经安装过旧版本的docker,在安装的时候报错如下:
    • 2、docker 启动报错
    • 3、docker 启动报错
    • 4、docker基础容器中bash: vi: command not found问题解决
    • 5、Docker启动容器报错: connect: no route to host
    • 6、容错运行报错:iptables: No chain/target/match by that name
    • 7、docker容器内使用apt报错 E: List directory /var/lib/apt/lists/partial is missing. - Acquire (13: Permission
    • 8、docker拉取镜像错误 missing signature key
  • 总结

docker环境搭建

一、docker是安装?

Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。

1、通过 uname -r 命令查看你当前的内核版本

$ uname -r

2、使用 root 权限登录 Centos。确保 yum 包更新到最新。

 $ sudo yum update -y

3、卸载旧版本(如果安装过旧版本的话)

$ sudo yum remove  docker  docker-common docker-selinux docker-engine
# 或者
$ yum remove  docker  docker-* -y

4、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2

5、设置yum源

$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo


6、可以查看所有仓库中所有docker版本,并选择特定版本安装

$ yum list docker-ce --showduplicates | sort -r


7、安装docker

$ sudo yum install docker-ce -y  #由于repo中默认只开启stable仓库,故这里安装的是最新稳定版17.12.0
$ sudo yum install <FQPN>  # 例如:sudo yum install docker-ce-17.12.0.ce -y
# 例如:yum install docker-ce-17.12.1.ce -y

8、启动并加入开机启动

$ sudo systemctl start docker
$ sudo systemctl enable docker

9、验证安装是否成功(有client和service两部分表示docker安装启动都成功了)

$ docker version

快速搭建Docker环境_第1张图片

二、安装问题汇总

1、因为之前已经安装过旧版本的docker,在安装的时候报错如下:

Transaction check error:
  file /usr/bin/docker from install of docker-ce-17.12.0.ce-1.el7.centos.x86_64 conflicts with file from package docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64
  file /usr/bin/docker-containerd from install of docker-ce-17.12.0.ce-1.el7.centos.x86_64 conflicts with file from package docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64
  file /usr/bin/docker-containerd-shim from install of docker-ce-17.12.0.ce-1.el7.centos.x86_64 conflicts with file from package docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64
  file /usr/bin/dockerd from install of docker-ce-17.12.0.ce-1.el7.centos.x86_64 conflicts with file from package docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64
  1. 卸载旧版本的包
$ sudo yum erase docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64


2. 再次安装docker

sudo yum install docker-ce

2、docker 启动报错

启动docker容器时报错:

$ iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 5000 -j DNAT --to-destination 172.18.0.4:5000 ! -i br-ff45d935188b: iptables: No chain/target/match by that name. (exit status 1)

解决方案:重启docker

$ systemctl restart docker

3、docker 启动报错

1、在 /etc/docker/daemon.json 文件中添加以下参数(没有该文件则新建):
{
  "registry-mirrors": ["https://9cpn8tt6.mirror.aliyuncs.com","https://registry.docker-cn.com"]
}

2、服务重启:
systemctl daemon-reload
systemctl restart docker

4、docker基础容器中bash: vi: command not found问题解决

# 这是因为vim没有安装。
# 解决
# 使用如下命令安装:
$ apt-get update
$ apt-get install vim

5、Docker启动容器报错: connect: no route to host

$ vim /etc/firewalld/zones/public.xml

<?xml version="1.0" encoding="utf-8"?>
<zone>
  <short>Public</short>
  <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected inco
ming connections are accepted.</description>
  <service name="dhcpv6-client"/>
  <service name="ssh"/>
  <rule family="ipv4">
       <source address="172.17.0.1/16"/>
       <accept/>
  </rule>
</zone>

#添加 :
  <rule family="ipv4">
       <source address="172.17.0.1/16"/>
       <accept/>
  </rule>
# 重启防火墙

systemctl restart firewalld.service

然后该容器就可以正常启动了,问题解决。

注意,如果防火墙会影响api服务的访问,做完这些操作时请记得停止防火墙服务;笔者在这里就给自己挖了一个坑,导致后台无法访问api,把防火墙停掉即可。

参考:https://blog.csdn.net/bacteriumX/article/details/83589126?utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control&dist_request_id=1332042.360.16191777167005937&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control

6、容错运行报错:iptables: No chain/target/match by that name

产生原因:
docker服务启动时定义的自定义链

DOCKER由于某种原因被清掉重启docker服务及可重新生成自定义链DOCKER

解决方法:

iptables -t filter -F

iptables -t filter -X

systemctl restart docker

7、docker容器内使用apt报错 E: List directory /var/lib/apt/lists/partial is missing. - Acquire (13: Permission

# 权限不够,用root 登录容器
docker exec -u 0 -it 容器名 bash  # 0 表示root

8、docker拉取镜像错误 missing signature key

总结
应该是版本过低,导致与对应镜像版本不兼容导致的

#解决方案:
#卸载当前版本docker


yum erase docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine \
                  docker-ce
#下载最新版docker
yum install docker-ce -y

总结

后续…

你可能感兴趣的:(基础环境搭建,docker,linux,centos)