Ubuntu14.04安装Docker

前段时间参加了EMC Hackathon 2018,取得第二名的成绩,短短几天内接触了很多新的东西,其中就包含Docker的相关内容。抽空陆续总结一下比赛中的东西。
比赛连接:https://github.com/ghostplant/Hackathon_2018


Docker安装

  • 默认安装好了Linux系统。这里使用Ubuntu14.04.

安装步骤

1、首先使用root来登录ubuntu
2、是否安装了wget,如果没安装使用如下命令:
sudo apt-get update
sudo apt-get install wget
3、获取最新版的docker:
wget -qO- https://get.docker.com/ | sh
4、验证是否安装正确
sudo docker run hello-world
就是获取一个helloworld的image,然后运行会看到 helloworld welcome等


  • 上面是基础的安装,下面是一些优化的操作:

1、权限问题 >>>两种方法
docker 进程通过监听一个 Unix Socket 来替代 TCP 端口。在默认情况下,docker 的 Unix Socket属于root用户,当然其他用户可以使用sudo方式来访问。因为这个原因, docker 进程就一直是root用户运行的。
因此为了方便起见,不用每次都登录root输入密码,可以作如下:

创建 docker 用户组并添加用户
1)使用具有sudo权限的用户来登录你的Ubuntu。
2)创建 docker 用户组并添加用户:$ sudo usermod -aG docker ubuntu
3)销登录并重新登录
4)验证 docker 用户不使用 sudo 命令开执行 Docker:$ docker run hello-world

方法二
1)# 添加一个新的docker用户组:sudo groupadd docker
2)# 添加当前用户到docker用户组里,注意这里的king为ubuntu登录用户名
sudo gpasswd -a king docker
3)# 重启Docker后台监护进程:sudo service docker restart
4)# 重启之后,尝试一下,是否生效:docker version
5)#若还未生效,则系统重启,则生效:sudo reboot

2、调整内存和交换空间

当我们使用 Docker 运行一个镜像的时候,我们可能会看到如下的信息提示:

WARNING: Your kernel does not support cgroup swap limit. WARNING: Your
kernel does not support swap limit capabilities. Limitation discarded.

为了防止以上错误信息提示的出现,我们需要在系统中启用内存和交换空间。我们需要修改系统的 GUN GRUB (GNU GRand Unified Bootloader) 来启用内存和交换空间。开启方法如下:

1)使用具有sudo权限的用户来登录你的Ubuntu。
2)编辑 /etc/default/grub 文件
3)设置 GRUB_CMDLINE_LINUX 的值如下:
    GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"
4)保存和关闭文件
5)更新 GRUB
    $ sudo update-grub
6)重启系统。

3、防火墙问题

UB中的防火墙是UFW而不是iptables
防火墙会对一些端口进行过滤,因此需要进行docker端口的防火墙入站规则设置:

1)使用具有sudo权限的用户来登录你的Ubuntu。
2)验证UFW的安装和启用状态
    $ sudo ufw status
3)打开和编辑/etc/default/ufw文件
    $ sudo nano /etc/default/ufw
4)设置 DEFAULT_FORWARD_POLICY 如下:
    DEFAULT_FORWARD_POLICY="ACCEPT"
5)保存关闭文件。
6)重新加载UFW来使新规则生效。
    $ sudo ufw reload
7)允许 Docker 端口的入站规则
    $ sudo ufw allow 2375/tcp

4、DNS问题
设置docker自己的DNS,而不是使用主机中的默认的192或是127等作为DNS:
在桌面环境下使用这些配置来运行 docker 容器的时候, Docker 用户会看到如下的警告:

    WARNING: Local (127.0.0.1) DNS resolver found in resolv.conf and containers can't use it. Using default external servers : [8.8.8.8 8.8.4.4]

该警告是因为 Docker 容器不能使用本地的DNS服务。相反 Docker 使用一个默认的外部域名服务器。

为了避免此警告,你可以给 Docker 容器指定一个DNS服务器。或者你可以禁用 NetworkManager 的 dnsmasq。不过当禁止 dnsmasq 可能使某些网络的DNS解析速度变慢。

为 Docker 指定一个DNS服务器:

1)使用具有sudo权限的用户来登录你的Ubuntu。
2)打开并编辑 /etc/default/docker
    $ sudo vim /etc/default/docker
3)添加设置
    DOCKER_OPTS="--dns 8.8.8.8"

使用8.8.8.8替换如192.168.1.1的本地DNS服务器。你可以指定多个DNS服务器,多个DNS服务器使用空格分割例如

    --dns 8.8.8.8 --dns 8.8.4.4

推荐使用国内镜像源:

DOCKER_OPTS="--registry-mirror=https://registry.docker-cn.com"

警告:如果你正在使用的电脑需要连接到不同的网络,一定要选择一个公共DNS服务器。
4)保存关闭文件。
5)重启 Docker 进程:$ sudo restart docker

5)升级Docker

$ wget -N https://get.docker.com/ | sh
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容