大前提:
用一个有sudo权限的账号登陆ubuntu。 如果账号没有sudo的权限,登陆后输入sudo -s,然后输入此账号密码即可。 这样就不用每个命令开头都输入sudo
开始安装
- 确保安装了wget
使用which命令来确认
which wget
如果没装,使用下列两个命令安装
apt-get update
apt-get install wget
- 获取最新的Docker安装包
输入下方命令:
wget -qO- https://get.docker.com/
| sh
自动安装,等待结束。
-
确认docker是否被正确安装
docker run hello-world
可选的Docker配置
- 创建docker用户组创建用户组,加入你的账号
假设你的账号名就是 docker,用下列命令创建并加入你的账号
usermod -aG docker docker
登出然后登入,确保你的用户拥有正确的权限
确认能否正常运行docker
docker run
hello-world
- 调整memory和swap
运行Docker时,可能会看到下列信息:
WARNING: Your kernel does not support cgroup swap limit. WARNING: Your kernel does not support swap limit capabilities. Limitation discarded.
为了消除这个警告,你要调整memory和swap,使用GNU GRUB (GNU GRand Unified Bootloader), 按照下列步骤做:
编辑 /etc/default/grub
gedit /etc/default/grub
将 GRUB_CMDLINE_LINUX 改成如下:
GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"
存盘退出此文件
更新 GRUB
update-grub
重启系统
- 启动防火墙
如果你在运行docker的环境下使用了防火墙,还需要做些额外配置。docker是使用“桥接”方式来管理容器间的网络通信。缺省情况下,防火墙会挡住所有外部IP。所有要想在这种情况下,正常运行docker,要正确地设置防火墙的forward策略。
此外,防火墙在缺省情况下,会拒绝所有进入的流量,所以要想使你的容器被其他主机访问,你应该允许它们访问docker的端口(缺省是2375)
配置如下:
确认安装了防火墙并已经启动
ufw status
如果没启动,输入命令
ufw enable
编辑 /etc/default/ufw
gedit /etc/default/ufw
设置 DEFAULT_FORWARD_POLICY
DEFAULT_FORWARD_POLICY="ACCEPT"
存盘退出此文件
重启防火墙
ufw reload
允许访问Docker 端口.
ufw allow 2375/tcp
- 配置DNS
当启动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缺省使用的是外部的命名服务器。 要解决这个问题,你要设定一个DNS服务器来给docker的容器使用,或者在NetworkManager里让dnsmasq 失效,但这样可能会让DNS解析的有点慢。
设定DNS的步骤:
编辑 /etc/default/docker
gedit /etc/default/docker
找到 DOCKER_OPTS="--dns 8.8.8.8" 用一个本地的DNS来替换8.8.8.8.
也可以设定多个DNS. 用空格分隔: --dns 8.8.8.8 --dns 192.168.5.1
存盘退出此文件
重启Docker 守护进程.
restart docker
- 更新 Docker
使用下列命令来更新docker
wget -N https://get.docker.com/
| sh