系统:CentOS Linux release 7.2 (Core) 3.10.0-693.11.6.el7.x86_64
SELinux:关闭
参考链接:https://docs.docker.com/install/linux/docker-ce/centos/#install-docker-ce
推荐方法:设置Docker的存储库并从中进行安装,以方便安装和升级任务

# yum -y install yum-utils device-mapper-persistent-data lvm2
Installed:yum-utils.noarch 0:1.1.31-42.el7                                                                Dependency Installed:libxml2-python.x86_64 0:2.9.1-6.el7_2.3          python-chardet.noarch 0:2.2.1-1.el7_1         python-kitchen.noarch 0:1.1.1-5.el7             Complete!

使用以下命令来设置稳定的存储库。

# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
Loaded plugins: fastestmirror
adding repo from: https://download.docker.com/linux/centos/docker-ce.repo
grabbing file https://download.docker.com/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-c
e.reporepo saved to /etc/yum.repos.d/docker-ce.repo

(本人没有使用)可选:启用边缘和测试存储库。这些存储库包含在docker.repo上面的文件中,但默认情况下是禁用的。可以将它们与稳定的存储库一起启用

# yum-config-manager --enable docker-ce-edge
# yum-config-manager --enable docker-ce-test

以下命令禁用边缘存储库。注意:从Docker 17.06开始,稳定版本也被推到边缘并测试版本库

# yum-config-manager --disable--enable
# yum-config-manager --disable docker-ce-edge

安装DOCKER CE 17.12.0.ce-1.el7.centos

# yum -y install docker-ce
Installed:docker-ce.x86_64 0:17.12.0.ce-1.el7.centos                                                                            Dependency Installed:audit-libs-python.x86_64 0:2.7.6-3.el7                           checkpolicy.x86_64 0:2.5-4.el7                       container-selinux.noarch 2:2.36-1.gitff95335.el7                 libcgroup.x86_64 0:0.41-13.el7                       libseccomp.x86_64 0:2.3.1-3.el7                                  libsemanage-python.x86_64 0:2.5-8.el7                policycoreutils-python.x86_64 0:2.5-17.1.el7                     python-IPy.noarch 0:0.75-6.el7                       setools-libs.x86_64 0:3.3.8-1.1.el7                             Complete!

版本并不是越高越好的,那么如何安装指定版本DOCKER CE 呢

# yum list docker-ce --showduplicates | sort -r
Loading mirror speeds from cached hostfile
Loaded plugins: fastestmirror* epel: mirrors.ustc.edu.cn
docker-ce.x86_64            17.12.0.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.09.1.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.09.0.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.06.2.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.06.1.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.06.0.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.03.2.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.03.1.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.03.0.ce-1.el7.centos             docker-ce-stable
Available Packages

该命令列出可用的版本。按版本号对结果进行排序,从最高到最低并被截断。列表的内容取决于启用了哪些存储库,并且特定于您的CentOS .el7版本(在此示例中,由版本的后缀指示)。选择一个特定的版本进行安装。第二列是版本字符串。您可以使用整个版本字符串,但您至少需要包含第一个连字符。第三列是存储库名称,它指示软件包来自哪个存储库并且通过扩展其稳定性级别。
要安装特定版本,请将版本字符串附加到包名称并用连字符(-)分隔。即:

# yum install <FULLY-QUALIFIED-PACKAGE-NAME>

如,若安装17.09.1版本,则命令为

# yum install docker-ce-17.09.1.ce-1.el7.centos

启动docker

# systemctl start docker

通过运行hello-world 映像验证安装是否正确

# docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
ca4f61b1923c: Pull complete
Digest: sha256:66ef312bbac49c39a89aa9bcc3cb4f3c9e7de3788c944158df3ee0176d32b751
Status: Downloaded newer image for hello-world:latestHello from Docker!
This message shows that your installation appears to be working correctly.To generate this message, Docker took the following steps:1. The Docker client contacted the Docker daemon.2. The Docker daemon pulled the "hello-world" image from the Docker Hub.(amd64)3. The Docker daemon created a new container from that image which runs theexecutable that produces the output you are currently reading.4. The Docker daemon streamed that output to the Docker client, which sent itto your terminal.To try something more ambitious, you can run an Ubuntu container with:$ docker run -it ubuntu bashShare images, automate workflows, and more with a free Docker ID:https://cloud.docker.com/For more examples and ideas, visit:https://docs.docker.com/engine/userguide/

升级DOCKER CE
要升级Docker CE,请下载较新的软件包文件并重复 安装过程,yum -y upgrade 而不是使用yum -y install,然后指向新文件。
卸载Docker CE

# yum -y remove docker-ce

该命令不会自动删除主机上的图像,容器,卷或自定义配置文件。删除所有图像,容器和卷:

# rm -rf /var/lib/docker

还必须手动删除任何已编辑的配置文件


docker安装后步骤(作为非root用户管理Docker)
创建docker组

$ sudo groupadd docker

将用户添加到docker组中

$ sudo usermod -aG docker $USER

注销并重新登录(如果在虚拟机上进行测试,则可能需要重新启动虚拟机才能使更改生效)
验证可以不使用命令sudo运行docker

$ docker run hello-world

如果最初sudo在将用户添加到docker组之前运行Docker CLI命令,则可能会看到以下错误,这表明~/.docker/目录是由于sudo命令使用不正确的权限创建的。

WARNING: Error loading config file: /home/user/.docker/config.json -
stat /home/user/.docker/config.json: permission denied

要解决此问题,需要删除~/.docker/目录(它会自动重新创建,但任何自定义设置都会丢失),或使用以下命令更改其所有权和权限:

$ sudo chown "$USER":"$USER" /home/"$USER"/.docker -R
$ sudo chmod g+rwx "/home/$USER/.docker" -R

配置开机启动

# systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.

禁止开机启动

# systemctl disable docker

Docker会自动配置为在启动时使用 upstart。要禁用此行为,请使用以下命令:

# echo manual | tee /etc/init.d/docker.override
# systemctl enable docker.service

配置Docker守护程序侦听连接的位置
默认情况下,Docker守护程序在UNIX套接字上侦听连接。要使Docker能够接受来自远程主机的请求,可以将其配置为监听IP地址和端口。它仍然需要在UNIX套接字上侦听,以接受来自本地客户端的请求。
将hosts数组设置/etc/docker/daemon.json为连接到UNIX套接字和IP地址,如下所示:
CentOS 6的配置方式

# cat /etc/docker/daemon.json
{
"hosts": ["fd://", "tcp://0.0.0.0:2375"]
}

CentOS 7之后的配置方式

# cat /usr/lib/systemd/system/docker.service
12 ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375

firewall打开相应端口

# firewall-cmd --permanent --add-port=2375/tcp
success
# systemctl restart firewalld
# iptables -L -n    //验证查看

重新加载systemctl配置

# systemctl daemon-reload

重启docker

# systemctl restart docker.service

再次检查该dockerd命令现在是否侦听文件描述符和网络地址

#  ps aux |grep dockerd
root       2352  0.4  1.3 446348 26752 ?        Ssl  13:23   0:00 /usr/bin/dockerd
root       2357  0.5  1.1 300860 23864 ?        Ssl  13:23   0:00 docker-containerd --config /var/run/docker/containerd/
containerd.tomlroot       2477  0.0  0.0 112660   976 pts/1    S+   13:25   0:00 grep --color=auto docker

如果没有发现对应的进程,则尝试reboot机器解决
否则再检查override.conf,修改为如下样式,然后重新加载systemctl配置,启动docker

# cat /etc/systemd/system/docker.service.d/override.conf
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd
#ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375

为docker指定DNS服务器(解析网络内部的主机)
创建或编辑默认为daemon.json文件的docker守护程序配置文件,该文件控制docker守护程序配置

# cat /etc/docker/daemon.json
{"dns": ["8.8.8.8", "8.8.4.4"]
}

如果内部DNS服务器无法解析公共IP地址,至少要包含一个DNS服务器,以便可以连接到Docker Hub,以便容器可以解析互联网域名。
重启docker

# systemctl restart docker

验证Docker可以通过尝试拉取图像来解析外部IP地址

# docker pull hello-world
Using default tag: latest
latest: Pulling from library/hello-world
Digest: sha256:66ef312bbac49c39a89aa9bcc3cb4f3c9e7de3788c944158df3ee0176d32b751
Status: Image is up to date for hello-world:latest

验证Docker容器可以通过对其进行ping来解析内部主机名

# docker run --rm -it alpine ping -c4 <my_internal_host>
# docker run --rm -it alpine ping -c4 10.226.38.82
PING 10.226.38.82 (10.226.38.82): 56 data bytes
64 bytes from 10.226.38.82: seq=0 ttl=127 time=2.139 ms
64 bytes from 10.226.38.82: seq=1 ttl=127 time=0.705 ms
64 bytes from 10.226.38.82: seq=2 ttl=127 time=0.718 ms
64 bytes from 10.226.38.82: seq=3 ttl=127 time=0.663 ms--- 10.226.38.82 ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 0.663/1.056/2.139 ms

配置Docker守护进程
守护进程包含许多配置选项,可以在手动启动Docker时将其作为标志传递,或者在daemon.json配置文件中进行设置。推荐使用第二种方法,因为重新启动Docker时,这些配置更改仍然存在。(附:dockerd获取配置选项的完整列表)
将启动选项放入daemon.json文件并重新启动Docker

# cat /etc/docker/daemon.json
{"debug": true,"hosts": ["tcp://0.0.0.0:2375"],"dns": ["8.8.8.8", "8.8.4.4"]
}
# systemctl daemon-reload
# systemctl restart docker

如果在daemon.json中指定 hosts条目,可能会导致配置冲突,并且Docker无法启动。要解决此问题,新建文件

# touch /etc/systemd/system/docker.service.d/docker.conf

使用以下内容,以删除在-H默认情况下启动守护程序时使用的参数。

[Service]
ExecStart=
ExecStart=/usr/bin/dockerd

检查Docker是否正在运行,可使用以下命令,可知,docker正常运行

# systemctl status docker
# ps aux|grep docker
# lsof -i:2375
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
dockerd 17665 root    5u  IPv6  94150      0t0  TCP *:2375 (LISTEN)

报错解决,如下:

# docker run hello-world
docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?.
See 'docker run --help'.
# docker info
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

以上均报同一个错误,但通过ps命令查询docker进程为正常,解决方法如下:

# cat /etc/systemd/system/docker.service.d/docker.conf 

docker.conf,添加DOCKER_OPTS行

[Service]
ExecStart=
ExecStart=/usr/bin/dockerd
DOCKER_OPTS="-H tcp://127.0.0.1:2375 -H unix:///var/run/docker.sock"

~/.bashrc 文件,添加export DOCKER_HOST行

# cat ~/.bashrc
# .bashrc# User specific aliases and functionsalias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'# Source global definitions
if [ -f /etc/bashrc ]; then. /etc/bashrc
fi
export DOCKER_HOST=tcp://localhost:2375

然后重新加载

# source ~/.bashrc

验证

# echo $DOCKER_HOST
tcp://localhost:2375

重启docker进行验证

# systemctl restart docker
# docker info
Containers: 4Running: 0Paused: 0Stopped: 4
Images: 2
Server Version: 17.12.0-ce
Storage Driver: overlay2Backing Filesystem: extfsSupports d_type: trueNative Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:Volume: localNetwork: bridge host macvlan null overlayLog: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 89623f28b87a6004d4b785663257362d1658a729
runc version: b2567b37d7b75eb4cf325b77297b140ea686ce8f
init version: 949e6fa
Security Options:seccompProfile: default
Kernel Version: 3.10.0-693.11.6.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 2
Total Memory: 1.937GiB
Name: blPqoh139504
ID: WYU4:WESS:P4FR:UTOB:W5OO:NSYZ:DZ55:PGA4:37CA:TXRO:RPHU:TC2L
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): trueFile Descriptors: 19Goroutines: 32System Time: 2018-02-13T15:52:10.442599614+08:00EventsListeners: 0
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:127.0.0.0/8
Live Restore Enabled: falseWARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled

可见最后出现的2个WARNING,可解决可不解决。若解决,方法为在sysctl.conf文件最末添加如下内容:

# cat /etc/sysctl.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-arptables = 1

重新加载sysctl即可

# sysctl -p

Linux安装Docker CE相关推荐

  1. 为Ubuntu Linux安装Docker CE Edge

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/inforstack/article/details/79491913 环境:ubuntu16.04L ...

  2. docker显示linux桌面,怎样在桌面上安装 Docker CE?

    按照这些简单的步骤在你的 Linux.Mac 或 Windows 桌面上安装 Docker CE. 在上一篇文章中,我们学习了容器世界的一些基本术语.当我们运行命令并在后续文章中使用其中一些术语时,这 ...

  3. CentOS 安装docker.ce报错提示containerd.io >= 1.2.2-3问题

    centos安装docker.ce遇到报错,提示如下 # yum install -y docker-ce Last metadata expiration check: 0:01:49 ago on ...

  4. Docker入门之 - 如何安装Docker CE

    本文将介绍如何在Ubantu.CentOS.Windows.Mac上安装Docker Docker 提供了两个版本:社区版 (CE) 和企业版 (EE). Docker 社区版 (CE) 是开发人员和 ...

  5. Ubuntu 17.04 x64 安装 Docker CE 初窥 Dockerfile 部署 Nginx

    Docker 是个划时代的开源项目,它彻底释放了计算虚拟化的威力,极大提高了应用的运行效率,降低了云计算资源供应的成本!使用 Docker,可以让应用的部署.测试和分发都变得前所未有的高效和轻松! 无 ...

  6. 008 centos7安装docker ce

    2019独角兽企业重金招聘Python工程师标准>>> 1.安装 docker ce 1.1 说明 Docker 的早期版本称为 docker 或 docker-engine, 从2 ...

  7. ubuntu 安装docker_Docker: 教程04 - (初始化安装之在 Ubuntu 安装Docker CE)

    创建 Ubuntu 运行环境 首先我们需要创建一个 Ubuntu 运行环境,在云环境中,我们创建了一个版本为 "Ubuntu 18.04 Bionic Beaver LTS" ,大 ...

  8. 一、安装Docker CE

    卸载旧版本 较旧版本的Docker被称为docker或docker-engine.如果已安装这些,需要卸载以及相关的依赖项. $ sudo yum remove docker \docker-clie ...

  9. debian上安装docker ce

    在Debian9上安装Docker CE 使用从包中安装的方式 Docker是一个开源的容器引擎,它有助于更快地交付产品. Docker可将应用程序和基础设施层隔离,并且将基础设施当作程序一样进行管理 ...

最新文章

  1. Facebook失误泄露反恐审查员信息 生命或受威胁
  2. C++string类知识点总结
  3. poj 2524 Ubiquitous Religions (并查集)
  4. BZOJ 2326 数学作业(分段矩阵快速幂)
  5. NYOJ 36 最长公共子序列 dp
  6. Android SDK镜像的介绍使用【转发】
  7. matlab-游标及查询
  8. JAVA 通过串口发送命令
  9. java怎样自动调用鼠标点击屏幕固定地方_python办公自动化:让PyAutoGUI来帮你干活...
  10. python tkinter button_Python连载60-Tkinter布局、按钮以及属性详解
  11. c语言 增加 删除 修改的功能 不用链表,C语言的链表的创建、修改、添加与删除...
  12. 解决jenkins插件列表为空的问题
  13. 在Js中创建对象的几种方式
  14. 解决Linux下使用QQ的问题
  15. Modbus转Profinet网关连接英威腾变频器方法
  16. java 163邮箱发邮件_java用163邮箱发邮件的方式,步骤有哪些?
  17. 东风日产全新劲客首次搭载BOSE PERSONAL PLUS音响;艾比森举办秋季发布会推出多个新品 | 全球TMT...
  18. ArcGIS已知经纬度范围裁剪图像的步骤
  19. java中long=后面为什么还要加个L
  20. 数字电子钟的设计与制作

热门文章

  1. Web自动化测试教程
  2. java 处理unicode_[转]Java的Unicode编码转化(多种情况处理方法)
  3. 表单提交-form提交和ajax提交
  4. 微信小程序实现手机号登录:报40029, 错误信息:code 无效,微信原始报文:{“errcode“:40029,“errmsg“:“invalid code
  5. c语言里函数rand()和srand()的用法
  6. 拉格朗日插值法 C语言实现
  7. 实现Vue移动端的PDF预览
  8. mysql中Tinyint(1)和Tinyint(4)的区别
  9. nginx 配置优化的几个参数
  10. 常见职位英文缩写词解释