上一章中我们讲了一些docker的基本概念,以及构建镜像,并运行,以及docker的基本概念和如何docker进行shell交互,比如说使用docker run -it --rm 镜像名称 base命令,

虚悬镜像

当新镜像和原来的镜像同名的时候,原镜像则会将名字取消掉,取而代之的则是新的镜像,原来的镜像就会显示

 

docker images 模糊查找 docker images -f_redis

 使用$ docker image ls -f dangling=true命令查看

一般来说,虚悬镜像已经失去了存在的价值,是可以随意删除的,可以用下面的命令删除。 $ docker image prune

$ docker image ls -a 查看中间层镜像

列出部分镜像

docker image ls ubuntu

$ docker image ls ubuntu:14.04

-f是fifter的缩写 ,也就是过滤的意思

docker image ls -f since=mongo:3.2

docker images 模糊查找 docker images -f_docker_02

 -q 列出镜像id,配合-f 列出镜像id 作为 docker rm的参数

go格式化

$ docker image ls --format "{{.ID}}: {{.Repository}}"

 

删除本地镜像

docker image rm [选项] [ ...],一般情况下 使用id作为参数删除就可以,但是我们也可以用长id的前三位就可以表示镜像了,但是更常用的则是

docker images 模糊查找 docker images -f_docker_03

 --digests 摘要信息进行删除,

当前镜像之中,如果属于某个容器,不乱容器启动没启动,都不可以删除,应该先删除容器,再删除镜像,命令则是docker rm 

下面则是构建一个nginx的镜像

docker run --name webserver -d -p 80:80 nginx,可以看到nginx 映射了80端口,这个时候就可以访问本台虚拟机的nginx了

你也可以使用exec命令执行脚本

docker exec -it webserver bash

root@3729b97e8226:/# echo '

Hello, Docker!

' > /usr/share/nginx/html/index.html

root@3729b97e8226:/# exit 

这样我们就修改了容器的底层,再次访问本机则可以看到

docker images 模糊查找 docker images -f_nginx_04

 

使用 Dockerfile 定制镜像

docker images 模糊查找 docker images -f_redis_05

 dockerfile文件第一行必须是from指令,FROM 指定基础镜像,但是使用FROM scratch 则表示不以任何镜像为基础的镜像

RUN 执行命令

run有两种方式:

RUN echo 'Hello, Docker!'  /usr/share/nginx/html/index.html这种称之为shell 

下面则是exec方式

exec 格式: RUN ["可执行文件", "参数1", "参数2"] ,

FROM debian:jessie RUN apt-get update RUN apt-get install -y gcc libc6-dev make RUN wget -O redis.tar.gz "http://download.redis.io/releases/redis-3.2.5.tar.gz" RUN mkdir -p /usr/src/redis RUN tar -xzf redis.tar.gz -C /usr/src/redis --strip-components=1 RUN make -C /usr/src/redis RUN make -C /usr/src/redis install

不过这种方式没有必要,因为每run一次,就会新建一层镜像,等到我们命令执行完成之后,则会新建7个镜像,

docker images 模糊查找 docker images -f_redis_06

构建镜像

那么就在刚刚创建的文件夹中使用

docker build d -t nginx:v3 命令构建镜像吧,

docker images 模糊查找 docker images -f_redis_07

 build命令格式为:

docker build [选项] <上下文路径>

镜像构建上下文(Context)

docker上下文路径,表示docker会将这个上下文路径中的内容打包给docker远程仓库,这里需要记住的是,上下文路径都是相对路径,../或者/opt 会发现docker找不到路径上的文件,因为这已经超出了docker的目录范围,

docker images 模糊查找 docker images -f_docker images 模糊查找_08

甚至build 命令可以直接使用url 构建镜像

docker build https://github.com/twang2218/gitlab-ce-zh.git#:8.14

使用压缩包构建

docker build http://server/context.tar.gz

docker images 模糊查找 docker images -f_docker_09

 

docker images 模糊查找 docker images -f_nginx_10