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万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章