获取镜像
- docker pull
docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]
- Docker 镜像仓库地址:地址的格式一般是 <域名/IP>[:端口号]。默认地址是 Docker Hub。
- 仓库名:如之前所说,这里的仓库名是两段式名称,即 <用户名>/<软件名>。对于 Docker Hub,如果不给出用户名,则默认为 library,也就是官方镜像。
$ docker pull ubuntu:16.04
- docker run
$ docker run -it --rm ubuntu:16.04 bash
-it
interaction 和 terminal,交互式终端--rm
remove,用完后自动删除ubuntu:16.04
使用的镜像bash
运行后使用bash
- docker exec
在运行的容器中执行命令docker exec -it bf130089d033 bash
- -d :
分离模式: 在后台运行 - -i :
即使没有附加也保持STDIN 打开 - -t :
分配一个伪终端
- -d :
列出镜像
- docker image ls || docker images
显示仓库名、标签、镜像 ID、创建时间以及所占用的空间。root@len:~# docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE tomcat 9-jre8 08ea7be8264a 27 hours ago 464MB tomcat latest 27600aa3d7f1 27 hours ago 463MB ubuntu 16.04 a3551444fc85 12 days ago 119MB
- docker system df
查看真实的镜像、容器、数据卷所占用的空间。root@len:~# docker system df TYPE TOTAL ACTIVE SIZE RECLAIMABLE Images 3 1 600.9MB 582.8MB (96%) Containers 1 0 57.43kB 57.43kB (100%) Local Volumes 0 0 0B 0B Build Cache 0 0 0B 0B
- docker image ls -a
显示全部镜像 - docker image prune
删除无意义的虚悬镜像
由于在拉取和构建过程中,版本号被替代后原来的镜像就失去了意义,需要删除:root@len:~/docker/tomcat# docker images REPOSITORY TAG IMAGE ID CREATED SIZE <none> <none> b1d3946144d1 27 seconds ago 503MB <none> <none> 557d0f6e459a 36 hours ago 463MB <none> <none> 594ec29cf32d 36 hours ago 463MB <none> <none> 9a832102d97c 36 hours ago 463MB
如果删除失败则说明有容器在占用,删除容器后再删除虚悬镜像docker image prune
删除镜像
docker image rm [选项] <镜像1> [<镜像2> ...]
<镜像> 可以是:
- 镜像短 ID:3个字符以上即可
- 镜像长 ID:完整的ID
- 镜像名:镜像名
- 镜像摘要:DIGEST号码
Dockerfile
一般的,需要在空白目录新建 Dockerfile
的文件,在里面写入相应指令
- FROM
表示以XX镜像为基础,在其上定制修改。 - RUN
表示执行命令行,++每运行一次 RUN 命令,就会建立一层镜像++,因此要减少 RUN 的层数。有两种格式:- shell 格式
直接写相应 shell 脚本即可 - exec 格式
类似调用函数
- shell 格式
FROM tomcat
COPY index.html /usr/local/tomcat/webapps/ROOT
表示把上下文目录中的 index.html 拷贝到镜像中的目录中
构建自己的镜像
- docker build
参数: -t 表示 target
表示将当前目录的文件打包,目标是myimage的v1版docker build -t myimage:v1 .
看出,此过程分别执行对应的指令,打包成不同的层root@len:~/docker/tomcat# docker build -t myimage . Sending build context to Docker daemon 3.072kB Step 1/2 : FROM tomcat ---> 27600aa3d7f1 Step 2/2 : COPY index.html /usr/local/tomcat/webapps/ROOT ---> Using cache ---> b2baada4a8f5 Successfully built b2baada4a8f5 Successfully tagged myimage:latest
- 参数中
.
的理解
.
指的是上下文环境,并不一定是Dockerfile文件所在的目录(该文件可以在任意地方,使用-f ../XXX
指定),需要什么文件就将什么文件放入该目录再打包。
Dockerfile指令
- ADD
会自动将 tar 包解压
ADD app.tar.gz .
- WORKDIR
由于每条指令对应的是不同层,因此shell的执行路径不一定相同,所以先指定工作目录
WORKDIR /usr/local/tomcat/webapps/ROOT
- EXPOSE
暴露出端口