Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。
下载安装
项目在github上面: https://github.com/docker/compose/releases
下载:
curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
给docket-compose 可执行的权限
chmod +x /usr/local/bin/docker-compose
设置软链接
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
验证是否安装
docker-compose version
卸载
rm /usr/local/bin/docker-compose
Dockerfile
Dockerfile参数
FROM 设置镜像使用的基础镜像
MAINTAINER 设置镜像的
LABEL MAINTAINER的替代者,设置镜像的标签
EXPOSE 暴露容器的端口
ADD 构建镜像时,拷贝文件到容器中
COPY 构建镜像时从宿主机拷贝文件到容器中
ENTRIPOINT 设置容器启动后执行的命令
CMD 设置容器启动后执行的命令
VOLUME 设置挂载卷
ENV 设置容器的环境变量
ARG 设置系统的环境变量
USER 设置运行RUN CMD ENTRYPOINT的用户名
WORKDIR 设置RUN CMD ENTRYPOINT COPY ADD指令的工作目录
ONBUILD 设置镜像的ONBUILD指令
STOPSIGNAL 设置容器的退出信号量
FROM
Dockerfile中的第一个非注释行,用来指定基础镜像,默认情况下会先尝试从本地获取基础镜像,本地没有的话就会去DockerHub中拉取,常用的书写格式 如下:
FROM image
FROM image:tag
FORM image:@:digest
MAINTAINER
用来指定作者的信息
LABEL
描述镜像的各种元数据
LABEL com.example.version="0.0.1-beta"
ADD or COPY
COPY仅仅支持将本地的文件复制到容器中,使用ADD支持TAR文件和URL路径
使用ADD时注意,如果是tar包的话,宿主机上的tar包拷贝到image中会被解压, 但是过URL下载链接的制作镜像时,tar包不会被自动解压, 而且容器中的目录最后需要加上/ 不然启动不起来
ENTRIPOINT or CMD
都是在指定容器启动后的命令
entrypoint两种格式
ENTRYPOINT ["executable","param1","param2"]
ENTRYPOINT command param1 param2 (shell中执行)
ENTRYPOINT可以指定容器启动后执行的命令,当指定多个时,同样也只有最后一个命令会生效,并且它不能被docker run中指定的参数所覆盖
cmd的三种格式
CMD ["executable","param1","param2"] # 使用exec执行
CMD command param1 param2 # 在 /bin/sh 中执行
CMD ["param1","param2"] # 给ENTRYPOINT提供默认的参数
VOLUME
卷, 这个参数和我们启动容器时使用的docker run -v 宿主机目录:容器目录类似这种挂载券操作, 下面命令中的挂载点其实是容器中的目录,宿主机中的目录会被随机生成
VOLUME mountpoint # 如 VOLUME /data1
EXPOSE
指定容器和外部进行通信的端口以及协议, EXPOSE 可以指个端口. 默认的协议是tcp协议
EXPOSE <port>
EXPOSE 80/tcp 9999/udp
ENV
ENV <key> <value> # 一次只能指定一对k-v
ENV <kay>=<value> # 一行指定多个k-v, 如果中间有空格通过\转义,或者使用""标识, 而且\还可以表示换行