(八)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

你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!