镜像操作
- 获取镜像到本地
docker pull [OPTIONS] [REPOSITROY] NAME[:TAG|@DIGEST]
docker pull ubuntu:14.04 #既是从官方仓库获取library用户获取标签为14.04的Ubuntu镜像
- 查看本地镜像
docker images [OPTIONS] [REPOSITORY[:TAG]]
## examples
docker images #列出本地镜像,不包括虚镜像(dangling images),仓库名和标签均为</p><none>
docker images -a #列出本地镜像,包括虚镜像
docker images ubuntu
docker images ubuntu:16.04 #列出指定镜像
docker images -f dangling=true #列出虚镜像, -f 后面加上过滤条件
- 删除本地镜像
docker rmi [OPTIONS] IMAGE [IMAGE...]
## examples
docker rmi ubuntu
docker rmi b39de1d79a53 #可以指定image的ID,有多个删除时,ID间加空格即可
docker rmi $(docker images -q -f dangling=true) #删除虚镜像
- commit定制镜像
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
## examples
## 大致可以分为启动,进入,修改,查看,提交
## 启动一个名为webserver的nginx容器
docker run --name webserver -d -p 80:80 nginx
## 以交互终端方式进到webserver容器中
docker exec -it webserver bash
## 修改容器并退出,这里将nginx的欢迎页面更换成我们自己的
echo "<h1>Hello Docker!</h1>" > /usr/share/nginx/html/index.html
exit
## 查看更改
docker diff webserver
## 生成新的镜像
docker commit --author "blinkdr<zhouleyong22@126.com>" --message "修改默认首页" webserver nginx:v2
## 查看新生成的镜像
docker images nginx
## 查看镜像的修改的历史
docker history nginx:v2
## 使用新镜像启动新的server
docker run --name web2 -d -p 81:80 nginx:v2
虽然可以利用commit命令,通过以上方式定制镜像,但是并不推荐这么做
- build定制镜像
docker build [OPTIONS] PATH | URL | -
build后面跟着的是构建上下文,通常是Dockerfile所在的路径
5.1 过Dockerfile定制
## examples
mkdir mynginx
cd mynginx
touch Dockerfile
Dockerfile内容为
FROM nginx
RUN echo "<h1>Hello Docker!</h1>" > /usr/share/nginx/html/index.html
## 定制名为nginx的新镜像
docker build -t nginx:v3 .
注意最后的“.”号,这里的“.”代表的是上下文的路径
5.2 通过URL构建
## git repo
docker build https://github.com/gogits/gogs.git
## tar压缩包
docker build http://server/context.tar.gz
5.3 其他方式构建
docker build - < Dockerfile
cat Dockerfile | docker build -
docker build - < context.tar.gz
docker build -f /path/to/docker/file
更多的Dockerfile用法将在后续文章中介绍
- 其他镜像操作命令
docker history #查看镜像的历史信息
docker import #
docker load #从tar压缩文件或标准输入中加载镜像
docker push #推送镜像到仓库中
docker save #打包镜像到压缩文件(默认到标准输出)
docker search #在仓库中搜索镜像
docker tag #
## examples
docker save alpine | gzip > alpine-latest.tar.gz
docker load -i alpine-latest.tar.gz
docker save <镜像名> | bzip2 | pv | ssh <用户名>@<主机名> 'cat | docker load'
可以通过以上三个命令来进行镜像在服务器间的迁移,但不推荐这么做