1.定制一个Web服务器:用nginx镜像启动一个容器,命名为webserver,并且映射了80端口dockerrun--namewebserver-d-p80:80nginx
2.使用dockerexec命令进入容器,修改其内容docker exec -itwebserver bash
3.通过docker diff命令看到具体的改动dockerdiffwebserver
4.docker commit命令,可以将容器的存储层保存下来成为镜像(docker commit命令,所有对镜像的操作都是黑箱操作。用于一些特殊的应用场合,比如被入侵后保存现场等。但是,不要使用docker commit定制镜像,定制行为应该使用Dockerfile来完成。)dockercommit[选项]<容器ID或容器名>[<仓库名>[:<标签>]]dockercommit\--author"TaoWang"\--message"修改了默认网页"\webserver\nginx:v2
5.想列出已经下载下来的镜像,可以使用dockerimages命令
6.docker history具体查看镜像内的历史记录dockerhistorynginx:v2
7.建立一个文本文件,并命名为Dockerfile:$mkdirmynginx$cdmynginx$touchDockerfile其内容为:FROMnginxRUNecho'
Hello, Docker!
'>/usr/share/nginx/html/index.htmldockerbuild来构建这个镜像nginx:v3$dockerbuild-tnginx:v3.dockerbuild[选项]<上下文路径/URL/->
8.docker file命令:
1)RUN shell格式:RUN<命令> exec格式:RUN["可执行文件","参数1","参数2"] 用来执行命令行命令
2)COPY shell格式:COPY<源路径>...<目标路径> exec格式:COPY["<源路径1>",..."<目标路径>"](<源路径>可以是多个,甚至可以是通配符)
3)ADD 所有的文件复制均使用COPY指令,仅在需要自动解压缩的场合使用ADD
4)CMD shell格式:CMD<命令> exec格式CMD["可执行文件","参数1","参数2"...] shell格式,命令执行完后shell会退出,启动容器建议使用exec格式,并且要求以前台形式运行
5)ENTRYPOINT 在运行时也可以替代CMD,不过要略显繁琐,需要通过docker run的参数--entrypoint来指定
6)ENV设置环境变量ENV VERSION=1.0DEBUG=on\NAME="HappyFeet"
7)ARG构建参数ARG<参数名>[=<默认值>]
8)VOLUME定义匿名卷VOLUME["<路径1>","<路径2>"...]
9)EXPOSE EXPOSE<端口1>[<端口2>...]指令是声明运行时容器提供服务端口,这只是一个声明,在运行时并不会因为这个声明应用就会开启这个端口的服务, docker run -P时,会自动随机映射EXPOSE的端口
10)WORKDIR<工作目录路径>以后各层的当前目录就被改为指定的目录,如该目录不存在,WORKDIR会帮你建立目录
11)USER指定当前用户 USER <用户名>和WORKDIR相似,都是改变环境状态并影响以后的层
12)HEALTHCHECK 健康检查来判断其Web服务是否在正常工 HEALTHCHECK --interval=5s --timeout=3s
13)ONBUILD后面跟的是其它指令,在当前镜像构建时并不会被执行。只有当以当前镜像为基础镜像,去构建下一级镜像的时候才会被执行。
9.docker import [选项] <文件>|| -[<仓库名>[:<标签>]]从rootfs压缩包导入生成镜像
10.$ docker save alpine | gzip > alpine-latest.tar.gz 将镜像保存为归档文件
将alpine-latest.tar.gz文件复制到了到了另一个机器上,用下面这个命令加载镜像:
$ docker load -i alpine-latest.tar.gz
Loaded image: alpine:latest
11.删除本地镜像docker rmi 选项] <镜像1> [<镜像2> ...]其中,<镜像>可以是镜像短ID、镜像长ID、镜像名或者镜像摘要,docker images默认列出的就已经是短ID了,一般取前3个字符以上,只要足够区分于别的镜像就可以.并非所有的docker rmi都会产生删除镜像的行为,有可能仅仅是取消了某个标签而已.
删除虚镜像$ docker rmi $(docker images -q -f dangling=true)使用docker images -q来配合可以成批的删除镜像
删除所有仓库名为redis的镜像:$ docker rmi $(docker images -q redis)