docker-安裝部署

防走丟

轉載自:https://www.cnblogs.com/caoweixiong/p/12186736.html

 

前言

從 2017 年 3 月開始 docker 在原來的基礎上分爲兩個分支版本: Docker CE 和 Docker EE。

Docker CE 即社區免費版,Docker EE 即企業版,強調安全,但需付費使用。

Docker 官方建議要 CentOS7.0 及以上系統版本,本文介紹 Docker CE 在CentOS下的安裝使用。

 

 

1.前提條件

1.1.內核

 Docker運行對內核要求比較高,因此一般建議直接在Ubuntu這樣的平臺運行。但作爲一個容器標準,Docker也是支持其他如CentOS, Mac OS X, Windows等平臺。目前Docker支持以下版本CentOS:

  • CentOS 7(64位)
  • CentOS 6.5(64位)及以後

在運行CentOS 6.5及以後版本時,需要內核版本>=2.6.32-431,因爲這些內核包含了運行Docker的一些特定修改。

$ uname -r
2.6.32-431.17.1.el6.x86_64

注:網上很多教程說CentOS6.5必須要升級內核到3.10才能使用docker,其實是【可選】升級,但最好升級。

 

1.2.Device Mapper

Docker默認使用AUFS作爲存儲驅動,但是AUFS並沒有被包括在Linux的主線內核中。CentOS中可以使用Device Mapper作爲存儲驅動,這是在2.6.9內核版本引入的新功能。我們需要先確認是否啓用該功能:

$ ls -l /sys/class/misc/device-mapper
lrwxrwxrwx 1 root root 0 May  1 20:55 /sys/class/misc/device-mapper -> ../../devices/virtual/misc/device-mapper

如果沒有檢測到Device Mapper,需要安裝device-mapper軟件包:

$ sudo yum install -y device-mapper

然後重新加載dm_mod內核模塊:

$ sudo modprobe dm_mod

 

 

2.安裝

2.1.CentOS 7

2.2.1.準備

  • CentOS7能上外網

  • yum -y install gcc

  • yum -y install gcc-c++

  • 卸載舊版本

yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-selinux \ docker-engine-selinux \ docker-engine

如果 yum 報告未安裝任何這些軟件包,這表示情況正常。

  

2.2.2.安裝

  • 安裝依賴包

yum install -y yum-utils device-mapper-persistent-data lvm2
  • 設置stable鏡像倉庫

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
或
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

  • 更新yum軟件包索引

yum makecache fast

如果這是自添加 Docker 鏡像倉庫以來您首次刷新軟件包索引,系統將提示您接受 GPG 密鑰,並且將顯示此密鑰的指紋。驗證指紋是否正確,並且在正確的情況下接受此密鑰。指紋應匹配 060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35。

  • 安裝docker

1、安裝指定版本:

yum list docker-ce.x86_64  --showduplicates | sort -r    #從高到低列出Docker-ce的版本

該軟件包名稱是軟件包名稱(docker-ce)加上版本字符串(第二列),從第一個冒號(:)一直到第一個連字符,並用連字符(-)分隔。

例如:指定版本(docker-ce-18.09.9)進行安裝:

yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io

# 例如:
yum install docker-ce-18.09.9 docker-ce-cli-18.09.9 containerd.io

2、安裝最新版本:

yum -y install docker-ce
  • 啓動docker

執行以下命令啓動docker:

systemctl start docker
  • 測試docker

 

 

2.2.CentOS 6.5

2.2.1.準備

  • 禁用selinux [可選]

由於Selinux和LXC有衝突,所以需要禁用selinux.編輯/etc/selinux/config,設置兩個關鍵變量.

SELINUX=disabled
SELINUXTYPE=targeted

注:網上有教程說要設置,但我建議不要設置,因爲會影響安全性

  • 安裝Fedora EPEL源

yum install http://ftp.riken.jp/Linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm

  • 添加hop5.repo源

cd /etc/yum.repos.d
wget http://www.hop5.in/yum/el6/hop5.repo

 

2.2.2.yum安裝

  • 升級帶aufs模塊的3.10內核【可選】

yum install kernel-ml-aufs kernel-ml-aufs-devel

修改grub的主配置文件/etc/grub.conf,設置default=0,表示第一個title下的內容爲默認啓動的kernel(一般新安裝的內核在第一個位置):

重啓系統 reboot now,然後執行以下命令查看是否已經是3.10內核:

查看內核是否支持aufs:

  • 安裝docker

安裝依賴:

yum install redhat-lsb        
yum install device-mapper-libs
yum install libcgroup*

如出現以下錯誤:

解決辦法是編輯/etc/yum.repos.d/epel.repo,把基礎的恢復(baseurl),鏡像(mirrorlist)的地址註釋掉:

 

安裝docker:

yum install docker-io

如出現以下報錯:

Error: Cannot retrieve metalink for repository: epel. Please verify its path and try again

解決辦法是編輯/etc/yum.repos.d/epel.repo,把基礎的恢復(baseurl),鏡像(mirrorlist)的地址註釋掉:

如出現如下錯誤:

原因是:網絡問題,下載失敗。解決辦法:則執行多幾次yum install docker-io命令,直至下載並安裝成功(我這裏耗時1個多小時)。

繼續安裝,如出現以下信息,則說明能正常安裝:

  • 啓動docker

執行以下命令啓動docker:

service docker start

如出現以上提示則說明安裝並啓動成功。

如出現以下提示則說明安裝失敗:

解決方法:執行以下命令刪除docker-io

sudo yum remove docker-io

執行以下命令手工安裝docker:

rpm -ivh ./docker-engine-1.7.1-1.el6.x86_64.rpm

注:安裝包下載地址:https://yum.dockerproject.org/repo/main/centos/6/Packages/

再次執行以下命令啓動docker:

service docker start

【可選】設置在服務器啓動時啓動:

chkconfig docker on

 

 

3.使用

  •  查看docker版本
docker version

  •  查看docker日誌
cat /var/log/docker

  • 搜索鏡像
docker search tomcat

 注:start代表受歡迎程度。OFFICIAL代表官方版本

  • 查看當前所有鏡像
docker images
  • 下載鏡像
docker pull centos
  • 運行容器
docker run centos echo "hello word"
  • 運行容器 hello word
docker run hello-world

輸出這段提示以後,hello world 就會停止運行,容器自動終止。

 

 

4.刪除

可以使用yum來刪除docker

  • 查詢刪除docker

1.列出docker包的具體的名字

$ sudo yum list  installed | grep docker
containerd.io.x86_64                 1.2.4-3.1.el7 
docker-ce.x86_64                     3:18.09.3-3.el7
docker-ce-cli.x86_64                 1:18.09.3-3.el7

2.刪除docker

$ sudo yum -y remove containerd.io.x86_64 \
                     docker-ce.x86_64 \
                     docker-ce-cli.x86_64  
  • 直接刪除docker

複製代碼

sudo yum remove docker \
                  docker-io \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

複製代碼

備註:以上命令只會刪除docker運行環境,並不會刪除鏡像,容器,卷文件,以及用戶創建的配置文件。

清除鏡像和容器文件:

sudo rm -rf /var/lib/docker

手動查找並刪除用戶創建的配置文件。

 

 

5.注意

5.1.手動掛載cgroup

低版本的Redhat(6.3)可能要手動掛載cgroup,具體操作方法如下:

  • 首選禁用cgroup對應服務cgconfig
 service cgconfig stop # 關閉服務 
 chkconfig cgconfig off # 取消開機啓動
  • 然後掛載cgroup,可以命令行掛載
mount -t cgroup none /cgroup  #僅本次有效
  • 或者修改配置文件,編輯/etc/fstab,加入
none                    /cgroup                 cgroup  defaults        0 0

 

5.2.以非root用戶管理docker

Docker守護程序綁定到Unix socket而不是TCP端口。默認情況下,Unix socke是root用戶纔有,而其他用戶只能通過使用sudo使用它。Docker守護程序始終以root用戶身份運行。

如果您不想在docker命令前加上sudo,請創建一個名爲docker的Unix組並向其添加用戶。當Docker守護程序啓動時,它會創建一個可由該docker組成員訪問的Unix socket。

  • 1.創建docker組
sudo groupadd docker
  • 2.添加user到docker組
sudo usermod -aG docker $USER

請將$USER替換爲系統中你的除root外的某個用戶。

  • 3.註銷並重新登錄,以便重新評估您的組成員身份。

如果在虛擬機上進行測試,則可能需要重新啓動虛擬機才能使更改生效。

  • 4.驗證是否可以通過不使用sudo運行docker命令。
 docker run hello-world

 

如果最初在添加用戶到docker組之前,使用的是sudo的Dokcer 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/.docker" -R

 

5.3.鏡像加速

鑑於國內網絡問題,後續拉取 Docker 鏡像十分緩慢,我們可以需要配置加速器來解決。

Docker國內鏡像:

  • 網易加速器:http://hub-mirror.c.163.com
  • 官方中國加速器:https://registry.docker-cn.com
  • ustc的鏡像:https://docker.mirrors.ustc.edu.cn

也可使用私人鏡像加速器地址,如使用阿里雲的鏡像加速器:登錄阿里雲->產品->搜索"容器鏡像服務"->鏡像庫->鏡像加速器。

新版的 Docker 使用 /etc/docker/daemon.json(Linux) 來配置 Daemon。

請在該配置文件中加入(沒有該文件的話,請先建一個):

vi /etc/docker/daemon.json 
{ 
  "registry-mirrors": ["https://hub-mirror.c.163.com"] 
} 

配置成功後,CentOS6.5重啓:

service docker restart

配置成功後,CentOS7重啓:

systemctl daemon-reload     #重啓加速配置文件
systemctl restart docker    #重啓docker後臺服務
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章