首页 > 其他分享 >Docker(五):Dockerfile基础指令

Docker(五):Dockerfile基础指令

时间:2023-01-07 11:11:30浏览次数:35  
标签:-- CMD ADD nginx chown 指令 Docker COPY Dockerfile

参考地址:https://blog.csdn.net/weixin_43526371/article/details/126332507

 

 

构建三部曲

编写 Dockerfile
使用 docker build 命令从 Dockerfile 构建图像
docker run 镜像
指令
FROM LABEL RUN EXPOSE WORKDIR ENV
USER VOLUME ADD COPY CMD ENTRYPOINT

FROM
基础镜像,基于的镜像

# FROM 镜像:TAG

FROM centos:centos7

LABEL - (MAINTAINER <name> 维护者 已弃用)
标签

# LABEL <key>=<value> <key>=<value> <key>=<value> ...

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."

RUN
容器构建的时候执行的命令(分 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 <port> [<port>/<protocol>...]

EXPOSE 80/tcp
EXPOSE 80/udp

WORKDIR
指定创建容器后,终端默认登录进来的工作目录,相当于落脚点

# WORKDIR 路径

WORKDIR /path/to/workdir

ENV
定义环境变量

# ENV <key>=<value> ...

ENV FOO=/bar
WORKDIR ${FOO} # WORKDIR /bar

USER
指定该镜像以什么样的用户去执行,如果都不指定,默认为root

# USER <user>[:<group>]
# USER <UID>[:<GID>]

FROM microsoft/windowsservercore
RUN net user /add patrick
USER patrick

VOLUME
容器卷,相当于 -v

# VOLUME ["/data"]

VOLUME /var/lib/mysql

ADD
将宿主机目录下的文件拷贝进镜像且会自动处理URL和解压tar压缩包,相当于COPY+解压

# ADD [--chown=<user>:<group>] <src>... <dest>
# ADD [--chown=<user>:<group>] ["<src>",... "<dest>"]

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/

COPY
类似ADD,拷贝文件和目录到镜像中

# COPY [--chown=<user>:<group>] <src>... <dest>
# COPY [--chown=<user>:<group>] ["<src>",... "<dest>"]

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/
CMD - (分 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"]

ENTRYPOINT - (分 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

标签:--,CMD,ADD,nginx,chown,指令,Docker,COPY,Dockerfile
From: https://www.cnblogs.com/js1314/p/17032264.html

相关文章

  • Docker(三):镜像仓库 - 公共仓库、私有仓库 - commit、tag、push
    参考地址:https://blog.csdn.net/weixin_43526371/article/details/125828194镜像分层和UnionFSdocker的镜像实际上由一层一层的文件系统组成,这种层级的文件系统就是Unio......
  • [Docker]使用Docker开启一个MariaDB服务并在宿主机里访问服务
    先把镜像下载下来dockerpullmariadb从第四行开始就是下载的镜像文件了,因为docker有一个文件分层机制(联合文件系统),所以一个镜像会分成好几个文件。镜像下载完成之后......
  • 轻量级实时容器Docker查看日志工具实践
    轻量级实时容器Docker查看日志工具实践     介绍一款使用了几个月的开源小工具,Dozzle。基于MIT许可,它是一款轻量、简单的容器日志查看工具。其源代码基于GOLANG开发......
  • Docker通过容器生成镜像
    参考地址:https://blog.csdn.net/JineD/article/details/106343404根据镜像启动容器:dockerrun  根据启动容器创建新镜像:dockercommit  将由容器生成的镜像push......
  • docker中启动所有的容器命令
    docker中启动所有的容器命令dockerstart$(dockerps-a|awk'{print$1}'|tail-n+2)docker中关闭所有的容器命令dockerstop$(dockerps-a|awk'{p......
  • docker 与 kubernetes
    最近尝试安装 kubernetes因为墙的问题弄的是焦头烂额,特记录下一.Docker的安装参照官方文档配置yum源为阿里源基本安装就没啥问题 二.cri-dockerd安装因为国内......
  • 使用docker的好处和作用(docker主要功能介绍)
    由于不同的机器有不同的操作系统,以及不同的库和组件,在将一个应用部署到多台机器上需要进行大量的环境配置操作。Docker主要解决环境配置问题,它是一种虚拟化技术,对进......
  • docker部署jenkins
    1、拉取jenkins镜像:dockerpulljenkins:2.60.32、在本地创建Jenkins-home目录:mkdir-p/home/jenkins_home  (-p是指确保目录存在,如果不存在就创建,像没有/home目录的......
  • docker常用命令
    查看镜像dockerimages运行一个镜像dockerrun-p8080:80-dnginx查看正在运行的镜像dockerps停止一个容器的运行(817689e03b44为容器id)dockerstop817......
  • Vue:TDesign Starter 自定义指令控制权限
    Vue支持自定义指令,具体API说明可以参考下面两个文档:Vue.directive(id,[definition])Vue自定义指令1.钩子函数Vue.directive提供了几个钩子函数,分别是:bindi......