1. 程式人生 > >Centos7上安裝docker-ce社群版

Centos7上安裝docker-ce社群版

2017-06-06

概述

本文是centos7上安裝docker-ce社群版的最新穩定版的實錄.

docker-ce最新穩定版需要linux kernel 大於3.10.

可以用如下的程式來檢查相容性.

curl https://raw.githubusercontent.com/docker/docker/master/contrib/check-config.sh > check-config.sh
bash ./check-config.sh

對其他作業系統和版本,可以參考官方文件.

安裝相關依賴

yum-utils 提供 yum-config-manager 工具, devicemapper儲存驅動依賴 device-mapper-persistent-data 和 lvm2.

[[email protected] ~]$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2

配置版本映象庫

季度更新的穩定stable版和月度更新的edge版

[[email protected] ~]$ sudo yum-config-manager \
     --add-repo \
     https://download.docker.com/linux/centos/docker-ce.repo
[[email protected] ~]$ sudo yum-config-manager --enable docker-ce-edge

這會在/etc/新增 /etc/yum.repos.d/docker-ce.repo 內容類似:

[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=https://download.docker.com/linux/centos/7/$basearch/stable
enabled=1
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg
[docker-ce-edge]
name=Docker CE Edge - $basearch
baseurl=https://download.docker.com/linux/centos/7/$basearch/edge
enabled=1
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg

由於docker.com伺服器下載很慢,所以改為國內映象.

新建 /etc/yum.repos.d/docker.repo,內容為

[dockerrepo]
name=Docker Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/docker/yum/repo/centos7
enabled=1
gpgcheck=1
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/docker/yum/gpg

執行

[[email protected] yum.repos.d]$ sudo yum makecache

如需禁止edge版本, 可以執行下面的命令

[[email protected] ~]$ sudo yum-config-manager --disable docker-ce-edge

安裝docker

[[email protected] ~]$ sudo yum makecache fast

[[email protected] ~]$ sudo yum install docker-ce
Error: docker-ce conflicts with 2:docker-1.12.6-28.git1398f24.el7.centos.x86_64
Error: docker-ce-selinux conflicts with 2:container-selinux-2.12-2.gite7096ce.el7.noarch

出現衝突, 原因是直接安裝過docker.

[[email protected] ~]$ yum list docker

Installed Packages
docker.x86_64                      2:1.12.6-28.git1398f24.el7.centos                      @extras
[[email protected] ~]$ sudo yum erase docker.x86_64
Removed:
  docker.x86_64 2:1.12.6-28.git1398f24.el7.centos
[[email protected] ~]$ sudo yum list container-selinux-2.12-2.gite7096ce.el7.noarch

[[email protected] ~]$ sudo yum erase container-selinux.noarch

再安裝:

[[email protected] ~]$ sudo yum install docker-ce
Loaded plugins: fastestmirror, langpacks
Installing:
 docker-ce               x86_64       17.05.0.ce-1.el7.centos         docker-ce-edge        19 M
Installing for dependencies:
 docker-ce-selinux       noarch       17.05.0.ce-1.el7.centos         docker-ce-edge        28 k

[Errno 12] Timeout on https://download.docker.com/linux/centos/7/x86_64/edge/Packages/docker-ce-17.05.0.ce-1.el7.centos.x86_64.rpm

Transaction check error:
  file /usr/bin/docker from install of docker-ce-17.05.0.ce-1.el7.centos.x86_64 conflicts with file from package docker-common-2:1.12.6-28.git1398f24.el7.centos.x86_64
  file /usr/bin/docker-containerd from install of docker-ce-17.05.0.ce-1.el7.centos.x86_64 conflicts with file from package docker-common-2:1.12.6-28.git1398f24.el7.centos.x86_64
  file /usr/bin/docker-containerd-shim from install of docker-ce-17.05.0.ce-1.el7.centos.x86_64 conflicts with file from package docker-common-2:1.12.6-28.git1398f24.el7.centos.x86_64
  file /usr/bin/dockerd from install of docker-ce-17.05.0.ce-1.el7.centos.x86_64 conflicts with file from package docker-common-2:1.12.6-28.git1398f24.el7.centos.x86_64

Error Summary


如果生產系統需要穩定版本, 需要 yum list 進行查詢. 但yum list只會顯示二進位制包, 加上.x86_64會顯示包含原始碼包的全部的包. sort -r會按版本倒序排序.

[[email protected] ~]$ yum list docker-ce.x86_64  --showduplicates |sort -r
 * updates: mirrors.tuna.tsinghua.edu.cn
Loading mirror speeds from cached hostfile
Loaded plugins: fastestmirror, langpacks
 * extras: mirror.bit.edu.cn
docker-ce.x86_64            17.05.0.ce-1.el7.centos             docker-ce-edge
docker-ce.x86_64            17.04.0.ce-1.el7.centos             docker-ce-edge
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
 * base: mirror.bit.edu.cn

第二列是版本號. el7表示centos7. 第三列是庫名.

安裝指定版本: sudo yum install docker-ce-

安裝穩定版本:

 
 [[email protected] ~]$ sudo yum install docker-ce-17.03.1.ce-1.el7.centos
Installed:
  docker-ce.x86_64 0:17.03.1.ce-1.el7.centos

Dependency Installed:
  docker-ce-selinux.noarch 0:17.05.0.ce-1.el7.centos

Complete!


# 刪除老版本docker

如果需要刪除老的版本, 可以用如下的命令查詢和刪除. 老版本docker名字叫docker或docker-engine. 新版本社群版叫docker-ce, 企業版是docker-ee

[[email protected] ~]$ yum list installed | grep docker
docker-client.x86_64                   2:1.12.6-28.git1398f24.el7.centos
docker-common.x86_64                   2:1.12.6-28.git1398f24.el7.centos
[[email protected] ~]$ sudo yum erase -y docker-client.x86_64
[[email protected] ~]$ sudo yum erase -y docker-common.x86_64

[[email protected] ~]$ sudo yum remove docker \
                  docker-common \
                  container-selinux \
                  docker-selinux \
                  docker-engine

刪除docker ce版和映象

[[email protected] ~]$ sudo yum remove docker-ce
[[email protected] ~]$ sudo rm -rf /var/lib/docker

可能還需要移除devicemapper, 重新格式化相關塊裝置.

[[email protected] ~]$ sudo mkdir /etc/docker
[[email protected] ~]$ sudo vi /etc/docker/daemon.json
{
  "storage-driver": "devicemapper"
}

啟動測試docker

Hello world的映象啟動後會列印”Hello from Docker!”然後退出.

[[email protected] ~]$ sudo systemctl start docker
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
78445dd45222: Pull complete
Digest: sha256:c5515758d4c5e1e838e9cd307f6c6a0d620b5e07e6f927b07d05f6d12a1ac8d7
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

非root使用者啟動docker

[[email protected] ~]$ sudo groupadd docker
[[email protected] ~]$ sudo usermod -aG docker $USER
[[email protected] ~]$ exit
logout
[[email protected] ~]$ docker run hello-world

Hello from Docker!
This message shows that your installation appears to be working correctly.

設定自啟動

大部分最新的linux發行版(RHEL, CentOS, Fedora, Ubuntu 16.04 以上), 都用sytemd來管理啟動.

[[email protected] ~]$ sudo systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.

禁止自啟動

[[email protected] ~]$ sudo systemctl disable docker

參考

如非註明轉載, 均為原創. 本站遵循知識共享CC協議,轉載請註明來源