(八)dockerfile常用指令
(1)常用命令
-
FROM,指定base镜像;
-
MAINTAINER,设置镜像的作者,可以任意字符串;
-
COPY,将文件build context 复制到镜像里。
COPY支持两种形式:
①COPY src dest
②COPY ["src","dest"]
注意,src只能指定build context 中的文件或者目录。
-
ENV,设置环境变量,环境变量可以被后面的指令使用。
ENV MY_VERSION 1.3 RUN apt-get install mypackage=$MY_VERSION
-
ADD,与copy类似,从build context复制文件到镜像。不同的是,如果src是归档文件(tar,zip,tgz,xz等),文件会被自动解压到dest。
-
EXPOSE,指定容器中的进程会监听某个端口,docker将该端口暴露出来。
-
VOLUME,将文件或者目录声明为volume。
-
WORKDIR,为后面的RUN,CMD,ENTRYPOINT,ADD或者COPY指令设置镜像中的当前目录。
-
RUN,在容器中运行指定的命令。
-
CMD,容器启动时运行指定的命令。dockerfile中可以添加多个CMD,但是只有最后一条生效。CMD命令可以被docker run之后的参数替换。
-
ENTRYPOINT,设置容器启动时候运行的命令。dockerfile中可以有多个ENTRYPOINT指令,但是只有最后一条生效。CMD或者docker run之后的参数会被当做参数传递给ENTRYPOINT。
创建一个dockerfile:
root@cuiyongchao:/dockerfile# cat Dockerfile
#my dockerfile
FROM busybox
MAINTAINER cuiyongchao@163.com
WORKDIR /dockerfile
RUN touch tmpfil02
COPY ["testfile01","."]
ADD ["testfile01.tar.gz","."]
ENV WELCOM "YOU ARE IN MY CONTAINER,WELCOM!"
root@cuiyongchao:/dockerfile#
构建镜像:
root@cuiyongchao:/dockerfile# docker build -t my-image .
Sending build context to Docker daemon 14.34kB
Step 1/7 : FROM busybox
---> f0b02e9d092d
Step 2/7 : MAINTAINER cuiyongchao@163.com
---> Running in 603035a08fa2
Removing intermediate container 603035a08fa2
---> 900411854c68
Step 3/7 : WORKDIR /dockerfile
---> Running in e81a95656061
Removing intermediate container e81a95656061
---> ab089ef583dd
Step 4/7 : RUN touch tmpfil02
---> Running in 25a5af1ebc5e
Removing intermediate container 25a5af1ebc5e
---> dc0c07e6400d
Step 5/7 : COPY ["testfile01","."]
---> 214e7ed1b78f
Step 6/7 : ADD ["testfile01.tar.gz","."]
---> 28dd901049c5
Step 7/7 : ENV WELCOM "YOU ARE IN MY CONTAINER,WELCOM!"
---> Running in cdd4dd07b271
Removing intermediate container cdd4dd07b271
---> a0fdf1e57442
Successfully built a0fdf1e57442
Successfully tagged my-image:latest
root@cuiyongchao:/dockerfile#
① 构建前确保 build context 中存在需要的文件。
② 依次执行 Dockerfile 指令,完成构建。
运行容器,验证镜像:
root@cuiyongchao:/dockerfile# docker run -it my-image
/dockerfile # ls
testfile01 tmpfil02
/dockerfile # echo $WELCOM
YOU ARE IN MY CONTAINER,WELCOM!
/dockerfile #
① 进入容器,当前目录即为 WORKDIR。如果 WORKDIR 不存在,Docker 会自动为我们创建。
② WORKDIR 中保存了我们希望的文件和目录:
目录 testfile01:由 ADD 指令从 build context 复制的归档文件 testfile01.tar.gz,已经自动解压。
文件 tmpfil02:由 RUN 指令创建。
文件 testfile01:由 COPY 指令从 build context 复制。
③ ENV 指令定义的环境变量已经生效。
文章来源: 博客园
原文链接: https://www.cnblogs.com/cuiyongchao007/p/13915921.html
- 还没有人评论,欢迎说说您的想法!