近日在阿里雲ECS服務器(centos系統)中安裝docker,參考官方指南
https://docs.docker.com/engine/installation/linux/centos/ 大概流程都能跑通,但是中途發生了一些意外情況,特記錄備案以免后來再次踩坑。
一、需要有登錄ECS的工具(推薦Xshell)和擁有root權限的用戶。
二、確保linux內核版本是3.10以上並且是64位的centos版本。如果不能滿足這個前提,建議看官繞道走吧。
檢查linux版本命令如下
$ uname -r 3.10.0-229.el7.x86_64
以上前提條件都滿足,接下來就開始安裝。
三、升級yum安裝包,確保都是最新的版本
$ sudo yum update
四、在yum repository增加docker的repository
$ sudo vim /etc/yum.repos.d/docker.repo ## 在vim編輯器中輸入以下內容后保存 [dockerrepo] name=Docker Repository baseurl=https://yum.dockerproject.org/repo/main/centos/$releasever/ enabled=1 gpgcheck=1 gpgkey=https://yum.dockerproject.org/gpg
五、到這一步都進展順利,接下來開始通過yum安裝docker-engine了。想不到的事情發生了。。。
$ sudo yum install docker-engine
## yum開始從docker repository下載組件... 一切貌似進展順利,然而突然出現一個錯誤
warning: /var/cache/yum/x86_64/7/dockerrepo/packages/docker-engine-selinux-1.10.3-1.el7.centos.noarch.rpm: Header V4 RSA/SHA512 Signature, key ID 2c52609d: NOKEY Retrieving key from https://yum.dockerproject.org/gpg GPG key retrieval failed: [Errno 12] Timeout on https://yum.dockerproject.org/gpg: (28, 'Resolving timed out after 3512 milliseconds')
怎么回事?從https://yum.dockerproject.org/repo/main/centos都能順利下載其他組件,怎么就卡在https://yum.dockerproject.org/gpg這一步呢?
ping yum.dockerproject.org 顯示一切網絡正常。重試幾次仍然同樣故障。苦苦思索和嘗試仍然沒有結果,最后決定先繞道吧。(有知道的同學告知一聲,不勝感激)
繞道的辦法:
1. 從本機中打開
https://yum.dockerproject.org/gpg,下載PKI證書文件
2. 在Xshell進行以下操作
$ sudo vim /usr/local/docker.gpg
## 在VIM編輯器中把本地下載的證書內容復制過去,保存
-----BEGIN PGP PUBLIC KEY BLOCK----- mQINBFWln24BEADrBl5p99uKh8+rpvqJ48u4eTtjeXAWbslJotmC/CakbNSqOb9o ddfzRvGVeJVERt/Q/mlvEqgnyTQy+e6oEYN2Y2kqXceUhXagThnqCoxcEJ3+KM4R mYdoe/BJ/J/6rHOjq7Omk24z2qB3RU1uAv57iY5VGw5p45uZB4C4pNNsBJXoCvPn TGAs/7IrekFZDDgVraPx/hdiwopQ8NltSfZCyu/jPpWFK28TR8yfVlzYFwibj5WK dHM7ZTqlA1tHIG+agyPf3Rae0jPMsHR6q+arXVwMccyOi+ULU0z8mHUJ3iEMIrpT X+80KaN/ZjibfsBOCjcfiJSB/acn4nxQQgNZigna32velafhQivsNREFeJpzENiG HOoyC6qVeOgKrRiKxzymj0FIMLru/iFF5pSWcBQB7PYlt8J0G80lAcPr6VCiN+4c NKv03SdvA69dCOj79PuO9IIvQsJXsSq96HB+TeEmmL+xSdpGtGdCJHHM1fDeCqkZ hT+RtBGQL2SEdWjxbF43oQopocT8cHvyX6Zaltn0svoGs+wX3Z/H6/8P5anog43U 65c0A+64Jj00rNDr8j31izhtQMRo892kGeQAaaxg4Pz6HnS7hRC+cOMHUU4HA7iM zHrouAdYeTZeZEQOA7SxtCME9ZnGwe2grxPXh/U/80WJGkzLFNcTKdv+rwARAQAB tDdEb2NrZXIgUmVsZWFzZSBUb29sIChyZWxlYXNlZG9ja2VyKSA8ZG9ja2VyQGRv Y2tlci5jb20+iQI4BBMBAgAiBQJVpZ9uAhsvBgsJCAcDAgYVCAIJCgsEFgIDAQIe AQIXgAAKCRD3YiFXLFJgnbRfEAC9Uai7Rv20QIDlDogRzd+Vebg4ahyoUdj0CH+n Ak40RIoq6G26u1e+sdgjpCa8jF6vrx+smpgd1HeJdmpahUX0XN3X9f9qU9oj9A4I 1WDalRWJh+tP5WNv2ySy6AwcP9QnjuBMRTnTK27pk1sEMg9oJHK5p+ts8hlSC4Sl uyMKH5NMVy9c+A9yqq9NF6M6d6/ehKfBFFLG9BX+XLBATvf1ZemGVHQusCQebTGv 0C0V9yqtdPdRWVIEhHxyNHATaVYOafTj/EF0lDxLl6zDT6trRV5n9F1VCEh4Aal8 L5MxVPcIZVO7NHT2EkQgn8CvWjV3oKl2GopZF8V4XdJRl90U/WDv/6cmfI08GkzD YBHhS8ULWRFwGKobsSTyIvnbk4NtKdnTGyTJCQ8+6i52s+C54PiNgfj2ieNn6oOR 7d+bNCcG1CdOYY+ZXVOcsjl73UYvtJrO0Rl/NpYERkZ5d/tzw4jZ6FCXgggA/Zxc jk6Y1ZvIm8Mt8wLRFH9Nww+FVsCtaCXJLP8DlJLASMD9rl5QS9Ku3u7ZNrr5HWXP HXITX660jglyshch6CWeiUATqjIAzkEQom/kEnOrvJAtkypRJ59vYQOedZ1sFVEL MXg2UCkD/FwojfnVtjzYaTCeGwFQeqzHmM241iuOmBYPeyTY5veF49aBJA1gEJOQ TvBR8Q== =Fm3p -----END PGP PUBLIC KEY BLOCK-----
$ sudo rpm --import /usr/local/docker.gpg
3.手工導入docker的PKI公鑰證書,安裝總算能順利進行下去了
六、安裝docker-engine完成后,啟動docker服務
$ sudo systemctl start docker.service
七、測試docker服務是否成功
$ sudo docker run hello-world
##看到以下輸出,就大功告成了
Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world 03f4658f8b78: Pull complete a3ed95caeb02: Pull complete Digest: sha256:8be990ef2aeb16dbcb9271ddfe2610fa6658d13f6dfb8bc72074cc1ca36966a7 Status: Downloaded newer image for hello-world:latest Hello 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. 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal. To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash Share images, automate workflows, and more with a free Docker Hub account: https://hub.docker.com For more examples and ideas, visit: https://docs.docker.com/userguide/
