Docker

安装

注意:以下安装方法只适用于旧版本,若想获得最新版本Docker,请阅读 官方文档

运行环境为 Ubuntu,参考 官方文档#install-docker-ce-ubuntu

1. 先安装官方推荐的依赖。

$ sudo apt-get update
 
$ sudo apt-get install \
    linux-image-extra-$(uname -r) \
    linux-image-extra-virtual

2. 更新依赖的列表信息并允许 HTTPS 获取仓库。

$ sudo apt-get update
 
$ sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common

3. 添加官方的 GPG 密钥并验证。

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
 
# Verify that the key fingerprint is 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88.
$ sudo apt-key fingerprint 0EBFCD88
 
pub   4096R/0EBFCD88 2017-02-22
      Key fingerprint = 9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88
uid                  Docker Release (CE deb) <docker@docker.com>
sub   4096R/F273FCD8 2017-02-22

4. 安装当前操作系统架构支持的仓库版本。

这里选择的是 x86_64 架构。

$ sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

5. 再次更新依赖的列表后安装引擎。

这里安装的是 Docker CE 社区版本。

$ sudo apt-get update
$ sudo apt-get install docker-ce


快速指南

容器

开启简单 flask 打印页面。

$ sudo docker run -d -P training/webapp python app.py

重命名容器。

$ sudo docker run -d -P --name web training/webapp python app.py

上面的命令绑定 udp。

$ sudo docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py

审查 docker 端口所使用的主机 ip。

$ sudo docker port [container name] 5000

实时打印日志

$ sudo docker logs -f [container name]

审查容器信息。

$ sudo docker inspect -f '{{ .NetworkSettings.IPAddress }}' [container name]

停止容器运行。

$ sudo docker stop [container name]

重新运行容器。

$ sudo docker start [container name]

删除容器。

$ sudo docker rm [container name]

镜像

审查本地镜像。

$ sudo docker images

将容器打包为镜像(备注信息、作者信息、容器标识、镜像名)。

$ sudo docker commit -m="[summary]" -a="[author name]" [container id] [image name]

删除镜像。

$ sudo docker rmi [image name]

容器间通讯

说明:真实命名的含义是在本例中使用的 container 或者 image 等命名采用测试的真实命名。

容器间相互访问(这里为真实命名)。

$ sudo docker run -d -P --name web --link db:db training/webapp python app.py

审查指定容器的环境变量信息(这里为真实命名)。

$ sudo docker run --rm --name web2 --link db:db training/webapp env

交互式命令行启动已连接的容器(这里为真实命名)。

$ sudo docker run -t -i --rm --link db:db training/webapp /bin/bash

和上面的都是相关命令,这里安装一个可以 ping link 对象的软件(这里为真实命名)。

$ sudo apt-get install -yqq inetutils-ping

挂载卷

把主机的文件夹挂载到 container 上面(这里为真实命名)。

$ sudo docker run -d -P --name web -v /webapp training/webapp python app.py

观察你挂载的文件夹(这里为真实命名)。

$ sudo docker run -t -i --name archer -v /home/python/sinatra:/opt/saber 31fa814ba25a /bin/bash

只读挂载(这里为真实命名)。

$ sudo docker run -d -P --name web -v /src/webapp:/opt/webapp:ro training/webapp python app.py

挂载文件(这里为真实命名)。

$ sudo docker run --rm -it -v ~/.bash_history:/.bash_history ubuntu /bin/bash

创建挂载目录,非常保险的设计,即使你删掉了创建它的容器挂载卷也不会消失(这里为真实命名)。

$ sudo docker run -d -v /dbdata --name dbdata training/postgres echo Data-only container for postgres

把上面的容器创建出来的挂载目录共享到别的容器中(这里为真实命名)。

$ sudo docker run -d --volumes-from dbdata --name db1 training/postgres

备份一个挂载卷并压缩(这里为真实命名)。

$ sudo docker run --volumes-from dbdata -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /dbdata


常用命令

该部分内容来自 Kev 贡献。

# 配置docker启动参数
echo 'DOCKER_OPTS="-H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375 --insecure-registry 0.0.0.0/0"' | sudo tee -a /etc/default/docker
 
# 一键安装docker
curl -sSL https://get.docker.com/ubuntu/ | sudo bash
 
# non sudo
sudo usermod -aG docker [group]
 
# 自动重启container
docker run -d --restart=always xxx
 
# 连接远程docker
docker -H x.x.x.x:2375 ps
 
# 进入container调试
docker exec -it xxx bash
 
# 删除所有[exited]的container
docker rm -vf $(docker ps -aqf status=exited)
 
# 删除所有[dangling]的images
docker rmi -f $(docker images -qf dangling=true)
 
# 查看CPU/MEM负载
docker stats xxx


Docker Compose

Compose 是定义和运行多容器Docker应用程序的工具。您可以使用文件配置应用程序的服务。然后使用Compose的单个命令,从配置中创建并启动制定项目。

官方文档
项目 Github

下载并安装 Compose 指定版本 v1.15.0

官方文档#install-compose

sudo -i curl -L https://github.com/docker/compose/releases/download/1.15.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
ln -sf /usr/local/bin/{docker-compose,fig}

检测是否安装成功。

$ docker-compose --version
docker-compose version 1.15.0, build 1719ceb

FIXME

Jovi Meng 2017/09/05 11:19