常用文件模板(不断更新)

Dockerfile文件格式

# 基础镜像,tag不写默认为latest
# 只能写一次
FROM <image>
FROM <image>:<tag>
# example
# FROM centos

# 作者信息name一般为邮箱
MAINTAINER <name>
# example
# MAINTAINER zhima<1158778689@qq.com>

# 设置镜像的元数据标签信息
LABEL <info>
# example
# LABEL version="1.0"
# LABEL description="this is description"

# 设置环境变量
ENV <key> <value>
ENV <key>=<value> <key>=<value> ...
# example
# ENV DIRPATH /path

# 设置运行RUN CMD ENTRYPOINT的用户名
USER <userName>
USER <UID>

# 设置工作目录
# 对RUN,CMD,ENTRYPOINT,COPY,ADD生效
# 如果不存在则会创建
WORKDIR 镜像内地址
# example
# 使用$读取环境变量
# WORKDIR $DIRPATH

# 定义变量
# 在docker build创建镜像的时候,使用 --build-arg <varname>=<value>来指定参数
ARG <name>[=<default value>]

# 为子镜像设置命令
# 当本镜像作为其他容器的基础镜像的时候,INSTRUCTION会在子镜像运行的时候执行
ONBUILD [INSTRUCTION]
# example
# ONBUILD RUN ls -al

# 添加文件到镜像
# source可写
# 宿主机的绝对路径
# 本Dockerfile所在目录的相对路径
# url,如果使用url,则此ADD相当于wget
# source如果是压缩包,则会自动解压
ADD <source> <dest>

# 复制文件到镜像中
# COPY的<source>只能是本地文件,其他用法与ADD一致
COPY <source> <dest>

# 在**构建**镜像的时候运行的命令,一般是安装命令
RUN <command>
RUN ["executable","param1"]
# example
# RUN yum install -y gcc
# 下面三行RUN命令是为了解决以下这个错误的
# Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist
# RUN cd /etc/yum.repos.d/
# RUN sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
# RUN sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*

# 暴露容器运行时的监听端口给外部
EXPOSE <port>
# 但是EXPOSE并不会使容器访问主机的端口
# 如果想使得容器与主机的端口有映射关系,必须在容器启动的时候加上 -p参数

# 数据卷
# 这种是匿名数据卷 宿主机会在/var/lib/docker/volumes下生成一个随机命名的目录
# 可以在运行容器的时候,指定挂载卷的名字
# -v 卷名:镜像内想要被挂载的地址2
VOLUME ["镜像内想要被挂载的地址1","镜像内想要被挂载的地址2"]
VOLUME "镜像内想要被挂载的地址1" "镜像内想要被挂载的地址2" 

# 容器**运行**的时候运行的命令
CMD <command>
CMD ["executable","param1"]
# example
# CMD ["cd","/usr/local"]
# CMD cd /usr/local
 
# 容器运行的时候运行的命令
ENTRYPOINT java -jar demo.jar
ENTRYPOINT ["java","-jar","demo.jar"]
# ENTRYPOINT和CMD的区别
# 不同之处
#   1.ENTRYPOINT不会被运行的command覆盖,而CMD则会被覆盖
#   2.如果我们在Dockerfile种同时写了ENTRYPOINT和CMD
#   并且CMD指令不是一个完整的可执行命令,那么CMD指定的内容将会作为ENTRYPOINT的参数
#   3.docker run image <参数>
#    传入的参数会追加在ENTRYPOINT之后
#    如果是CMD,会直接覆盖此CMD
# 相同之处
#   只能写一条,如果写了多条,那么只有最后一条生效
#   容器启动时才运行
# 如果我们在Dockerfile种同时写了ENTRYPOINT和完整的CMD,ENTRYPOINT一定会执行,CMD不会执行

Docker-compose文件格式

# 指定compose版本,一般3.1就可以了
version: '3.1'

# 服务列表
services:
  # 自定义服务名
	service_name1:
        # 使用docker build构建镜像
        # Dockerfile的地址
        build:
            context: .
            dockerfile: custom-Dockerfile
        # 如果dockerfile文件名就叫Dockerfile,则可以使用简写模式
        # build: .

        # 如果有build则是指定构建出来的镜像的镜像名
        # 如果没有build则是指定运行的镜像
        image: <imageName>:<tag>
        # 指定运行容器的名称
        container_name: <container_name>
        # 容器卷技术
        volumes:
            - /usr/local/mysql # 匿名挂载
            - VolumeName:/home/zhima #具名挂载
            - /temp/mysql/config:/etc/mysql/conf.d # 宿主机挂载
        # 端口映射
        ports:
            - "宿主机端口:容器端口"
        # 运行容器的时候的参数
        command: [
            "param1",
            "param2"
        ]
        # 指定加入的网络
        networks: 
            - network1
            - network2
	# 第二个服务
	service_name2:
		# 使用构建好的镜像
		image: <imageName>:<tag>
        stdin_open: true # 类似于docker run -d
        tty: true  # 类似于docker run -t
        depends_on:
        	- service_name1
networks:
	network1:     
		driver: bridge   
	network2: 	
		driver: bridge
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

芝麻\n

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值