保存镜像为文件
docker save 08f7fa803374 > image.tar
08f7fa803374 是镜像的id
image.tar 是保存镜像的名称
DockerFile
我们简单的梳理一下。首先,My computer 中有本地 docker 的实例。DockerFile是我们用 VI 编写的,第一行永远是 from。
1.编写 Doctor fire
2.build 中会形成一个本地的镜像
3.run 使得镜像变成一个具体实例,Stops tart restored,暂且不说
4.变成具体实例后,使用 commit 又变成新的镜像。
5.具体实例有各种版本和标签号
6.使用 pull 可以将 docker 从仓库里边拉下来
7.采用 push 将其放在阿里云上
DockerFile 的体系结构
From——基础镜像,当前新镜像是基于哪个镜像的,创建新镜像的基础镜像,尽可使用精简的基础镜像,如debian:jessie
MAINTAINER——镜像维护者的姓名和邮箱地址
RUN——容器构建时需要运行的命令 (linux的命令)
EXPOSE——当前容器对外暴露出的端口
WORKDIR——指定在创建容器后,终端默认登陆的进来木工作目录,一个落脚点。
ENV——用来构建镜像过程中设置环境变量
ADD——将宿主机目录下的文件拷贝进镜像且 ADD 命令会自动处理 URL 和解压 tar 压缩包。
COPY——
(1)类似 ADD 拷贝文件和目录到镜像中
(2)将从构建上下文目录中<源路径>的文件/目录复制到新的一层的镜像内的<目标路径>位置
VOLUME——容器数据卷,用于数据保存和持久化工作
CMD——
(1)指定一个容器启动时运行的命令
(2)DockerFile 中可以有多个 CMD 指令,但只有最后一个生效,CMD 会被Docker run 之后的参数替换
ENTRYPOINT——
(1)指定一个容器启动时要运行的命令
(2)ENTRYPOINT 的目的和 CMD 一样,都是在指定容器启动程序及参数
ONBUILD—— 当构建一个被继承的 DockerFile 运行命令时,父镜像在被子继承后父镜像的 ONBUILD 被触发。
小案例:
自定义centos
# 继承基础的centos镜像
FROM centos
# 指定作者信息
MAINTAINER myName<myName@163.com>
# 定义环境变量
ENV mypath /tmp
# 设置当前的工作目录,通过环境变量指定
WORKDIR $mypath
# 运行 yum 命令,安装 vim 和 net-tools 工具
RUN yum -y install vim
RUN yum -y install net-tools
# 暴露 80 端口,运行容器时就可以使用“-p 宿主机端口:容器中端口”指定端口映射
EXPOSE 80
# 容器启动时运行的指令
# 启动容器时,只运行最后一条CMD指令
CMD echo $mypath
CMD echo "success-------------------------ok"
CMD /bin/bash
docker build -f Dockerfile2 -t mycentos . 命令构建镜像。其中,-f 用来指定你的 Dockerfile 文件路径;-t 用来指定创建镜像的名称
> docker build -f Dockerfile2 -t mycentos .
Sending build context to Docker daemon 30.21kB
Step 1/10 : FROM centos
latest: Pulling from library/centos
8ba884070f61: Pull complete
Digest: sha256:a799dd8a2ded4a83484bbae769d97655392b3f86533ceb7dd96bbac929809f3c
Status: Downloaded newer image for centos:latest
---> 9f38484d220f
Step 2/10 : MAINTAINER myName<myName@163.com>
---> Running in a6a9d55e4d45
Removing intermediate container a6a9d55e4d45
---> d7381d0b5a77
Step 3/10 : ENV mypath /tmp
---> Running in 8869a2f9705b
Removing intermediate container 8869a2f9705b
---> 2fb2ec363a4a
Step 4/10 : WORKDIR $mypath
---> Running in 2034e28d3c11
Removing intermediate container 2034e28d3c11
---> ed1ec63c5f95
Step 5/10 : RUN yum -y install vim
---> Running in a410721bf127
Loaded plugins: fastestmirror, ovl
Determining fastest mirrors
* base: mirrors.aliyun.com
* extras: mirrors.163.com
* updates: mirrors.aliyun.com
Resolving Dependencies
--> Running transaction check
...more...
Dependency Installed:
gpm-libs.x86_64 0:1.20.7-5.el7
...more...
which.x86_64 0:2.20-7.el7
Complete!
Removing intermediate container a410721bf127
---> 14d5b8e356be
Step 6/10 : RUN yum -y install net-tools
---> Running in 9e42eb5b854c
Loaded plugins: fastestmirror, ovl
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.163.com
* updates: mirrors.aliyun.com
Resolving Dependencies
--> Running transaction check
...more...
Installed:
net-tools.x86_64 0:2.0-0.24.20131004git.el7
Complete!
Removing intermediate container 9e42eb5b854c
---> 7488c7837498
Step 7/10 : EXPOSE 80
---> Running in 59fb82c9351a
Removing intermediate container 59fb82c9351a
---> 2208c2b5c5a4
Step 8/10 : CMD echo $mypath
---> Running in 4e6e1f1f38b0
Removing intermediate container 4e6e1f1f38b0
---> 79ffde662850
Step 9/10 : CMD echo "success-------------------------ok"
---> Running in f3da03cff7e4
Removing intermediate container f3da03cff7e4
---> 3c2beb3a7025
Step 10/10 : CMD /bin/bash
---> Running in 79e70ac3bb38
Removing intermediate container 79e70ac3bb38
---> 1a7a1d7e2839
Successfully built 1a7a1d7e2839
Successfully tagged mycentos:latest