Docker安裝與配置

Docker 安裝與配置

1.查看內核版本,要高於3.10
$ uname -r
4.4.0-36-generic

2.更新包信息,確定APT以https的方式工作,並安裝ca-certificates
$ sudo apt-get update

$ sudo apt-get install apt-transport-https ca-certificates

3.加入新的GPG密鑰
$ sudo apt-key adv –keyserver hkp://p80.pool.sks-keyservers.net:80 –recv-keys 58118E89F3A912897C070ADBF76221572C52609D

4 打開 /etc/apt/sources.list.d/docker.list 次目錄下的docker.list的文件,如果沒有就自己創建一個docker.list 文件,並在其中加入配置(注意各個版本ubuntu加入的配置行不一樣),然後保存並退出

$ sudo touch /etc/apt/sources.list.d/docker.list

$ sudo vim /etc/apt/sources.list.d/docker.list

4.1 Ubuntu Precise 12.04 (LTS) :
deb https://apt.dockerproject.org/repo ubuntu-precise main

4.2 On Ubuntu Trusty 14.04 (LTS)
deb https://apt.dockerproject.org/repo ubuntu-trusty main

4.3 Ubuntu Wily 15.10
deb https://apt.dockerproject.org/repo ubuntu-wily main

4.4 Ubuntu Xenial 16.04 (LTS)
deb https://apt.dockerproject.org/repo ubuntu-xenial main

5.1 再次更新包索引

$ sudo apt-get update

6.1 清除舊的repo庫

$ sudo apt-get purge lxc-docker

6.2從正確的庫中查看Apt

$ apt-cache policy docker-engine

出現如下提示證明安裝成功

這裏寫圖片描述

7 更新包管理
$ sudo apt-get update

8 安裝推薦包
sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual

9.對於Ubuntu Precise 12.04 (LTS)的操作,其他版本無需操作

$ sudo apt-get update

$ sudo apt-get install linux-image-generic-lts-trusty

$ sudo reboot

10.更新APT包索引
$ sudo apt-get update

11.安裝Docker
$ sudo apt-get install docker-engine

12.運行Docker一個小例子
$ sudo service docker start

13.查看Docker是否正確安裝
$ sudo docker run hello-world
這裏寫圖片描述
出現如上信息表示安裝成功!

二.遇到的問題及其解決方案
1./etc/apt/sources.list.d/docker.list  修改好的此文家要查看一下安放位置和內容是否正確
2.sudo apt-get update 的時候出現如下不能更新問題
這裏寫圖片描述

解決方案:
$ sudo apt-key adv –keyserver keyserver.ubuntu.com –recv-keys 8D5A09DC9B929006
(後面的key碼爲自己機器上的提示碼,可能各有不同)

3.使用代理上網可以無法拉取鏡像

1、如果docker主機不需要通過代理連接外網

則docker的相關命令(如docker search)或docker容器與網絡相關的操作都可以正常進行,不需要特殊設置。

2、當docker主機 是通過代理才能連接外網時,採用服務方式啓動守護進程

如果docker守護進程是通過服務的方式啓動的(sudo start docker)

當我們執行如 docker search ubuntu 命令時,會報錯
Error response from daemon: Get https://index.docker.io/v1/search?q=ubuntu: dial tcp: lookup index.docker.io on 127.0.1.1:53: read udp 127.0.1.1:53: i/o timeout

而且這時啓動的容器,在容器內也無法連接外網。

需要通過設置來完成。

3、當docker主機 是通過代理才能連接外網時,讓docker守護進程可連接外網,非服務啓動方式

通過如下方式啓動docker守護進程

sudo HTTP_PROXY=http://代理地址:端口 docker daemon

這時執行如 docker search ubuntu 命令時,可以成功。 注意,這並不需要docker主機自己設置代理上網(也就是docker進程沒有利用主機設置的代理上網)。

但是正常啓動的容器,在容器內也無法連接外網。

4、當docker主機 是通過代理才能連接外網時,採用服務方式啓動

可以修改 /etc/default/docker 配置文件

If you need Docker to use an HTTP proxy, it can also be specified here.

export http_proxy=”http://127.0.0.1:3128/”

export http_proxy=”http://代理地址:端口”

這樣採用 sudo start docker方式啓動守護進程後

這時執行如 docker search ubuntu 命令時,可以成功。

注意,這並不需要docker主機自己設置代理上網(也就是docker進程沒有利用主機設置的代理上網)。

但是正常啓動的容器,在容器內也無法連接外網。

5、怎麼讓容器通過代理上網

容器本身是一個輕量級的linux系統,我們可以通讓主機上網一樣設置讓其上網。容器上網和讓docker守護進程聯網沒有關係。

方法一:臨時聯網

在shell界面上設置臨時環境變量: export http_proxy=”http://代理ip地址:端口”

如:export http_proxy=”http://10.41.70.8:80”

一旦設置正確的環境變量http_proxy,容器就可以正常上網了。

因爲是臨時的,shell關閉後,環境變量就沒了。

方法二:修改主目錄下的.bashrc文件,增加兩行

http_proxy=http://yourproxyaddress:proxyport
export http_proxy

就是把環境變量http_proxy持久化,但只對該用戶登錄有效。

注意:容器設置代理 和 docker主機設置代理以及docker守護進程設置代理無關,也就是容器只會使用自己的代理信息上網。

參考文檔

發佈了26 篇原創文章 · 獲贊 9 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章