Docker 101 - 实战

docker

Basic Operation

1
2
3
4
$ sudo docker pull ubuntu
# 也可能加上版本号 name:version
$ sudo docker pull ubuntu:14.04

如果不指定具体的标记,则默认使用 latest 标记信息。

下载完成后,可以看到本地有以下Images

1
2
3
4
5
6
7
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
docker.cn/docker/ubuntu 14.04 5506de2b643b 3 weeks ago 199.3 MB
docker.cn/docker/ubuntu 14.04.1 5506de2b643b 3 weeks ago 199.3 MB
docker.cn/docker/ubuntu latest 5506de2b643b 3 weeks ago 199.3 MB
docker.cn/docker/ubuntu trusty 5506de2b643b 3 weeks ago 199.3 MB

如果不指定具体的tag,则会只下载latest,不过一个image可能不只有一个tag,像上面显示的,latest 又名 14.04, 14.04.1, trusty。但它们的Image ID是同一个。

如何更换镜像源:

Image 源在中国也是被墙的,安装可以试着用其它源,建议docker.cn源,很快。

从其它仓库下载时需要指定完整的仓库注册服务器地址。例如

1
2
# 实测docker.cn能用
$ sudo docker pull docker.cn/docker/ubuntu

RUN

如果是第三方源,运行时,也要使用第三方源的全路径:

1
$ sudo docker run docker.cn/docker/ubuntu:14.04 /bin/echo 'Hello world'

下面的命令则启动一个 bash 终端,允许用户进行交互。

1
2
$ sudo docker run -t -i docker.cn/docker/ubuntu:14.04 /bin/bash
root@af8bae53bdd3:/#

其中,-t 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上, -i 则让容器的标准输入保持打开。

进程

Docker 容器在运行完后就自动销毁了,如果有交互的contrainer,使用ctrl-c退后,也会被stop。如果查看 docker ps时会发现当前运行容器为空,如果想看到一个正在动行的docker容器,可以使用 ctrl-p & ctrl-q退回到Host中,而container仍在运行,或者在启动时加上 -d 来实现deamon 运行。

先看当前运行着的实例列表:

1
2
3
4
5
6
$ docker ps
你先看到下面的信息:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e1d0c9193025 ubuntu:14.04 nc -l 8000 5 seconds ago Up 4 seconds silly_curie

CLI

  • docker version
    查看版本
  • docker images
    显示镜像列表
  • docker ps
    显示容器列表
  • docker run IMAGE_ID
    指定镜像, 运行一个容器
  • docker start/stop/pause/unpause/kill/restart CONTAINER_ID
    操作容器状态
  • docker tag IMAGE_ID [REGISTRYHOST/][USERNAME/]NAME[:TAG]
    给指定镜像命名
  • docker pull/push NAME:TAG
    下载, 推送镜像到 Docker registry server , NAME 部分包括了服务地址
  • docker rm/rmi CONTAINER_ID/IMAGE_ID
    删除容器, 镜像
  • docker inspect CONTAINER_ID/IMAGE_ID
    查看细节信息
  • docker top CONTAINER_ID
    查看指定的运行容器的进程情况
  • docker info
    查看系统配置信息
  • docker save/load
    保存, 恢复镜像信息
  • docker commit CONTAINER_ID
    从容器创建镜像
  • docker export > xxx.tar
    保存一个容器
  • docker import - < xxx.tar
    恢复一个容器
  • docker cp CONTAINER_ID:PATH HOSTPATH
    从镜像复制文件到实体机
  • docker diff CONTAINER_ID
    查看容器相对于镜像的文件变化
  • docker logs CONTAINER_ID
    查看容器日志
  • docker build
    从 Dockerfile 构建镜像
  • docker history IMAGE_ID
    查看镜像的构建历史

Common Images

REF::