
Dockerfiledocker build 命令从 Dockerfile 构建图像docker run 镜像
FROMLABELRUNEXPOSEWORKDIRENV
USERVOLUMEADDCOPYCMDENTRYPOINT
基础镜像,基于的镜像
# FROM 镜像:TAG
FROM centos:centos7
(MAINTAINER 维护者 已弃用) 标签
# LABEL = = = ...
LABEL "com.example.vendor"="ACME Incorporated"
LABEL com.example.label-with-value="foo"
LABEL version="1.0"
LABEL description="This text illustrates \
that label-values can span multiple lines."
容器构建的时候执行的命令(分
shell和exec形式)RUN 指令在
docker build时运行
# RUN 命令
# shell形式
RUN /bin/bash -c 'source $HOME/.bashrc; \
echo $HOME'
# exec形式
RUN ["/bin/bash", "-c", "echo hello"]
当前容器对外暴露的端口
# EXPOSE [/...]
EXPOSE 80/tcp
EXPOSE 80/udp
指定创建容器后,终端默认登录进来的工作目录,相当于落脚点
# WORKDIR 路径
WORKDIR /path/to/workdir
定义环境变量
# ENV = ...
ENV FOO=/bar
WORKDIR ${FOO} # WORKDIR /bar
指定该镜像以什么样的用户去执行,如果都不指定,默认为root
# USER [:]
# USER [:]
FROM microsoft/windowsservercore
RUN net user /add patrick
USER patrick
容器卷,相当于
-v
# VOLUME ["/data"]
VOLUME /var/lib/mysql
将宿主机目录下的文件拷贝进镜像且会
自动处理URL和解压tar压缩包,相当于COPY+解压
# ADD [--chown=:] ...
# ADD [--chown=:] ["",... ""]
ADD hom* /mydir/
ADD hom?.txt /mydir/
ADD --chown=55:mygroup files* /somedir/
ADD --chown=bin files* /somedir/
ADD --chown=1 files* /somedir/
ADD --chown=10:11 files* /somedir/
类似
ADD,拷贝文件和目录到镜像中
# COPY [--chown=:] ...
# COPY [--chown=:] ["",... ""]
COPY hom* /mydir/
COPY hom?.txt /mydir/
COPY --chown=55:mygroup files* /somedir/
COPY --chown=bin files* /somedir/
COPY --chown=1 files* /somedir/
COPY --chown=10:11 files* /somedir/
shell 和 exec 形式)指定容器运行后执行的命令
只能有一条CMD指令Dockerfile。如果列出多个,CMD 则只有最后一个CMD才会生效,其他不会生效
CMD 指令在
docker run时运行
$ docker run -it image /bin/bash相当于在dockerfile的最后一行追加了一行CMD指令
(CMD ["/bin/bash", "run"]),那么原有的指令便不会执行如:
CMD ["catalina.sh", "run"] CMD ["/bin/bash","run"]
# CMD ["executable","param1","param2"]
# CMD ["param1","param2"]
# CMD command param1 param2
FROM ubuntu
CMD echo "This is a test." | wc -
FROM ubuntu
CMD ["/usr/bin/wc","--help"]
shell 和 exec 形式)用来指定一个容器启动时要运行的命令
# ENTRYPOINT ["executable", "param1", "param2"]
# ENTRYPOINT command param1 param2
FROM ubuntu
ENTRYPOINT ["top", "-b"]
CMD ["-c"]
nginx:test)FROM nginx
ENTRYPOINT ["nginx", "-c"] # 定参
CMD ["/etc/nginx/nginx.conf"] # 变参
| docker命令 | 衍生出的实际命令 |
|---|---|
docker run nginx:test | nginx -c /etc/nginx/nginx.conf |
docker run nginx:test -c /etc/nginx/new.conf | nginx -c /etc/nginx/new.conf |