Docker容器基础

2018-11-11  本文已影响0人  ScienBeast

Docker 对象

docker event state

1_vca4e-SjpzSL5H401p4LCg.png

Dockerfile 用法

Dockerfile 是构建镜像的源代码
docker可以自动化的生成镜像通过dockerfile,dockerfile是一个文本文件包含了用户创建镜像需要的所有指令。

常用指令

FROM
COPY 复制

格式:

COPY 指令将从构建上下文目录中 <源路径> 的文件/目录复制到新的一层的镜像内的 <目标路径> 位置。比如:

COPY a* /mydir/
COPY a?.txt /mydir/

目标路径不需要事先创建,如果目录不存在会在复制文件前先行创建缺失目录。
使用 COPY 指令,源文件的各种元数据都会保留。比如读、写、执行权限、文件变更时间等。

ADD 复制
ADD ubuntu-xenial-core-cloudimg-amd64-root.tar.gz /
小结

COPY和ADD 复制目录时有些特殊,对于目录而言:只复制目录中的内容而不包含目录自身

ADD go /usr/local/      仅仅复制了go目录里的内容没有复制目录
ADD go /usr/local/go/    复制go目录

官方建议:如果需要解压则用ADD,否则用COPY

WORKDIR

可以来指定工作目录(或者称为当前目录),以后各层的当前目录就被改为指定的目录,如该目录不存在,WORKDIR 会帮你建立目录。

ENV

定义容器的环境变量
格式有两种:

ENV VERSION=1.0 DEBUG=on \
    NAME="Happy Feet"

在dockerfile 可以通过$变量 调用

RUN

docker build创建镜像时执行一些指令
RUN <command> 由shell启动,Linux默认为/bin/sh -c, id为1的进程为bin shell,子进程为command

RUN yum install -y wget &&\
         mkdir /app

RUN 会增加中间层镜像,考虑到镜像的大小尽量把所以有命令写入到一个RUN命令下

CMD

Docker 不是虚拟机,容器就是进程。既然是进程,那么在启动容器的时候,需要指定所运行的程序及参数。CMD 指令就是用于指定默认的容器主进程的启动命令的。

CMD /tools/start.sh

命令会自动解释成

CMD [ "sh", "-c", "/tools/start.sh" ]

ENTRYPOINT

<ENTRYPOINT> "<CMD>"

docker 常见命令

docker-compose 编排容器

docker compose 用于在单机上编排容器,便于管理多个容器。

version: '3'
services:
   web:
    image: "ubuntu"
  debian:
    image: "debian"

上面例子是一个简单的compose.yml文件,web和debian代表了连个容器,image代表镜像。
-docker-compose up -d 会在后台创建容器

上一篇下一篇

猜你喜欢

热点阅读