使用镜像
获取镜像
docker pull [选项] [Docker Registry地址]<仓库名>:<标签>
$ docker pull ubuntu:14.04
运行镜像
$ docker run -it --rm ubuntu:14.04 bash
-i 交互式操作
-t 终端
--rm 容器退出后随之将其删除
ubuntu:14.04:这是指用 ubuntu:14.04 镜像为基础来启动容器。
bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是。
列出镜像
docker images
虚悬镜像
$ docker images -f dangling=true
一般来说,虚悬镜像已经失去了存在的价值,是可以随意删除的,可以用下面的命令删除。
$ docker rmi $(docker images -q -f dangling=true)
中间层镜像
$ docker images -a
列出部分镜像
$ docker images ubuntu
$ docker images ubuntu:16.04
$ docker images -f since=mongo:3.2 (-f filter)
$ docker images -f label=com.example.version=0.1
以特定格式显示
$ docker images -q
$ docker images --format "{{.ID}}: {{.Repository}}"
$ docker images --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}"
docker save 和 docker load
比如我们希望保存这个 alpine 镜像
$ docker save alpine | gzip > alpine-latest.tar.gz
$ docker load -i alpine-latest.tar.gz
删除本地镜像
docker rmi [选项] <镜像1> [<镜像2> ...]
操作容器
启动容器
启动容器有两种方式,一种是基于镜像新建一个容器并启动,另外一个是将在终止 状态(stopped)的容器重新启动。
因为 Docker 的容器实在太轻量级了,很多时候用户都是随时删除和新创建容器。
新建并启动
当利用 docker run 来创建容器时,Docker 在后台运行的标准操作包括:
检查本地是否存在指定的镜像,不存在就从公有仓库下载
利用镜像创建并启动一个容器
分配一个文件系统,并在只读的镜像层外面挂载一层可读写层
从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去
从地址池配置一个 ip 地址给容器
执行用户指定的应用程序
执行完毕后容器被终止
$ sudo docker run ubuntu:14.04 /bin/echo 'Hello world'
$ sudo docker run -t -i ubuntu:14.04 /bin/bash
启动已经终止容器
docker start
后台(background)运行
-d 参数
$ sudo docker run -d ubuntu:14.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"
进入容器
$ sudo docker run -idt ubuntu
243c32535da7d142fb0e6df616a3c3ada0b8ab417937c853a9e1c251f499f550
$ sudo docker ps
CONTAINER ID
TED
243c32535da7
econds ago
c_hypatia
$sudo docker attach nostalgic_hypatia
root@243c32535da7:/#
但是使用 attach 命令有时候并不方便。当多个窗口同时 attach 到同一个容器的 时候,
所有窗口都会同步显示。当某个窗口因命令阻塞时,其他窗口也无法执行操作 了。
导出和导入容器 导出容器
导出容器
$ sudo docker export 7691a814370e > ubuntu.tar
导入容器快照
$ cat ubuntu.tar | sudo docker import - test/ubuntu:v1.0
此外,也可以通过指定 URL 或者某个目录来导入,例如
$sudo docker import http://example.com/exampleimage.tgz example/imagerepo
*注:用户既可以使用 来导入镜像存储文件到本地镜像库,也可以 使用 来导入一个容器快照到本地镜像库。
这两者的区别在于容 器快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状 态),
而镜像存储文件将保存完整记录,体积也要大。此外,从容器快照文件导入 时可以重新指定标签等元数据信息。
删除容器
$sudo docker rm trusting_newton
清理所有处于终止状态的容器
$ docker rm `docker ps -a -q`
访问仓库
登录
可以通过执行 docker login 命令来输入用户名、密码和邮箱来完成注册和登录。
注册成功后,本地用户目录的 .dockercfg 中将保存用户的认证信息。
基本操作
用户无需登录即可通过 docker search 命令来查找官方仓库中的镜像,
并利用 docker pull 命令来将它下载到本地。
自动创建
自动创建(Automated Builds)功能对于需要经常升级镜像内程序来说,十分方 便。
有时候,用户创建了镜像,安装了某个软件,如果软件发布新版本则需要手动 更新镜像。。
而自动创建允许用户通过 Docker Hub 指定跟踪一个目标网站(目前支持 GitHub 或 BitBucket)
上的项目,一旦项目发生新的提交,则自动执行创建。
要配置自动创建,包括如下的步骤:
创建并登录 Docker Hub,以及目标网站;
在目标网站中连接帐户到 Docker Hub;
在 Docker Hub 中 配置一个自动创建;
选取一个目标网站中的项目(需要含 Dockerfile)和分支;
指定 Dockerfile 的位置,并提交创建。
之后,可以 在Docker Hub 的 自动创建页面 中跟踪每次创建的状态。