Docker组件
- docker client:CLI
- docker daemon:处理用户请求
- docker index:中央registry,备份镜像
Docker要素
- docker container
- docker image
- docker file
docker命令2
docker info
docker logs $sample_job
可以查看命令当前状态
docker stop $sample_job
docker restart $sample_job
docker rm $sample_job
docker search (image_name)
docker history (image_name)
docker commit $sample_job (image_name)
将容器保存为镜像
docker push (image_name)
DockerFile
DockerFile+docker build
基本格式
INSTRUCTION argument
- FROM
: - 告诉Docker使用哪个镜像作为基础,第一条必须为FROM指令,可以使用多个FROM指令(每个镜像一次)
- MAINTAINER
作者信息 - RUN
或 RUN ["executable","param1","param2"] - 前者在shell终端运行命令,即 /bin/sh -c;
- 后者使用exec执行,如 RUN ["/bin/bash", "-c", "echo hello"]
- CMD
- 描述容器启动后运行的服务命令,有三种格式
CMD ["executable", "param1", "param2"] 使用exec执行(推荐使用) CMD ["/bin/bash","-c","echo hello"] CMD command param1 param2 在/bin/sh 中执行,以“/bin/sh -c”方法执行。提供给需要交互的应用 CMD echo "hello world" CMD ["param1", "param2"] 提供给ENTRYPOINT 的默认参数 CMD ["-D","--help"]
- 指定启动容器时执行的命令,每个Dockerfile 只能有一条 CMD 命令。如果多个则只会执行最后一条
- 若果用户启动容器时候指定了运行的命令,则会覆盖掉 CMD 指定的命令
- 描述容器启动后运行的服务命令,有三种格式
- EXPOSE 向外部开放端口
- EXPOSE
[ ...] - EXPOSE 22 80 8443
- EXPOSE
- ENV 指定一个环境变量,会被后续RUN指令使用,并在容器运行时保持
EVN <key> <value> ENG PG_MAJOR 9.3.4 RUN ..... ENV PATH /usr/local/postgres-$PG-MAJOR/bin/:$PATH
- ADD 将复制指定的
到容器的 ,其中 可以是Dockerfile所在目录的一个相对路径(文件或目录),也可以是一个URL,还可以是一个tar文件(会自动解压为目录) - ADD
- ADD
- COPY 复制本地的主机的
为容器中的 。若目标路径不存在时,会自动创建 - COPY
- COPY
- ENTRYPOINT 容器启动后执行的命令,并且不可被 docker run 提供的参数覆盖。
- 每个Dockerfile中只能有一个 ENTRYPOINT,当指定多个 ENTRYPOINT时,只有最后一个生效
ENTRYPOINT ["executable", "param1", "param2"] ENTRYPOINT command param1 param2 (shell中执行) 一般是配合CMD使用,CMD提供默认参数,如: ENTRYPOINT ["/usr/sbin/sshd"] CMD ["-D"]
- 每个Dockerfile中只能有一个 ENTRYPOINT,当指定多个 ENTRYPOINT时,只有最后一个生效
- VOLUME 创建一个可以从本地主机或其他容器挂载的挂载点,一般用来存放数据库和需要保持的数据等
- VOLUME ["/data"]
- USER 指定容器运行时的用户名或UID,后续的 RUN也会使用指定用户。使用gosu代替sudo获取管理员权限
- USER daemon
- WORKDIR 指定配置工作目录
WORKDIR /path/to/workdir WORKDIR /a WORKDIR b
- ONBUILD 配置当所创建的镜像作为其他新创建镜像的基础镜像时,所执行的操作指令
ONBUILD [INSTRUCTION] ONBUILD ADD . /app/src ONBUILD RUN /usr/local/bin/python-build --dir /app/src