Docker的基本命令和Dockerfile的指令

来源:互联网 发布:java电子邮箱格式校验 编辑:程序博客网 时间:2024/06/16 14:59

1. 基本命令

docker --version查看docker的版本信息docker info查看docker的基本信息docker images查看docker的本地镜像docker ps查看正在运行的容器docker ps -a查看所有的容器(包括未运行的)docker login登录Docker Hub的账号,以便从Docker Hub下载或上传镜像。如果不登录账号,pull或push时,可能报错:net/http: TLS handshake timeoutdocker logout退出登录docker build -t <image-name> .根据 Dockerfile 的内容创建镜像,并给镜像命名。docker run -p 4000:80 <image-name>运行容器,本地主机的4000端口映射到容器的80端口。docker run -d -p 4000:80 <image-name>后台运行容器。docker stop <hash>关闭指定的容器,<hash>为容器的ID。docker kill <hash> 强制关闭指定的容器。docker rm <hash>删除指定的容器。docker rm $(docker ps -a -q) 删除所有的容器。docker rmi <image-name>删除指定的镜像。docker rmi $(docker images -q) 删除所有的镜像。docker tag <image-name> <username>/<repository-name>:<tag-name>给镜像打标签,以便上传镜像。docker push <username>/<repository-name>:<tag-name>上传镜像。docker run <username>/<repository-name>:<tag-name>运行镜像。docker pull <image-name>下载镜像。

2. Dockerfile

Dockerfile 是一个文本文件,该文件的内容是创建镜像和启动容器时相关的指令。

Dockerfile 中以 # 号开头的行表示注释。

Docker 可以通过 docker build 命令根据 Dockerfile 的内容来创建镜像。

这里,先介绍 Dockerfile 中常用的指令选项。

2.1 FROM

语法:FROM

用 FROM 指定构建镜像的基础源镜像(父镜像),如果本地没有指定的镜像,则会自动从 Docker 的公共库 pull 镜像下来。

FROM 必须是 Dockerfile 中非注释行的第一个指令,即一个 Dockerfile 从FROM语句开始。FROM可以在一个 Dockerfile 中出现多次,如果有需求在一个 Dockerfile 中创建多个镜像。如果FROM语句没有指定镜像标签,则默认使用latest标签。

2.2 MAINTAINER

语法:MAINTAINER

指定创建镜像的用户。

2.3 WORKDIR

语法:WORKDIR

为后面的RUN、CMD、ENTRYPOINT等指令,配置当前的工作目录。

可以使用多个WORKDIR指令,后续命令如果参数是相对路径,则会基于之前命令指定的路径。

WORKDIR /aWORKDIR bWORKDIR cRUN pwd# 最终路径是/a/b/c

WORKDIR指令可以在ENV设置变量之后调用环境变量。

ENV DIRPATH /pathWORKDIR $DIRPATH/$DIRNAME# 最终路径是 /path/$DIRNAME

2.4 ADD

语法:ADD

将文件(支持远程URL格式)拷贝到容器指定的路径中(支持通过 Go 的正则模糊匹配)。

可以是文件或者目录,但必须是 Dockerfile 所在路径的相对路径。如果是文件,表示拷贝文件本身;如果是目录,只会拷贝该目录中的所有文件(不包括目录本身)。

必须是绝对路径,如果不存在,就会自动创建。

ADD . /app# 将Dockerfile文件所在目录中的所有文件,拷贝至/app目录

2.5 RUN

语法:RUN

每条RUN指令将在当前镜像基础上执行指定的命令,并提交为新的镜像,后续的RUN都以之前RUN提交后的镜像为基础。

镜像是分层的,可以通过一个镜像的任何一个历史提交点来创建,类似源码的版本控制。

RUN产生的缓存在下一次构建镜像时默认不会失效,就会被重用,但可以通过–no-cache选项禁用缓存,即docker build –no-cache。

2.6 EXPOSE

语法:EXPOSE […]

指定docker容器对外开放的端口,可同时指定多个端口。

EXPOSE 80# 指定容器的端口为80

2.7 ENV

语法: ENV

定义环境变量。

会被后续的RUN指令使用,并在容器运行时保留。

ENV NAME World# 定义环境变量$NAME的值为World

2.8 CMD

语法:CMD

CMD 指令在 Dockerfile 中只能使用一次,如果有多个,则只有最后一个会生效。

CMD 的作用是为了在启动容器时提供一个默认的命令执行选项。如果用户启动容器时指定了运行的命令,则会覆盖掉CMD指定的命令。

注意:CMD 在启动容器的时候执行,build(创建镜像)时不执行;而 RUN 只是在创建镜像时执行,镜像构建完成之后,启动容器就与RUN无关了,不要混淆两者的用法。

2.9 COPY

COPY 的用法与 ADD 相同,只不过COPY不支持远程的URL。

2.10 VOLUME

语法:VOLUME

创建一个可以从本地主机或其他容器挂载的挂载点。

net/http: TLS handshake timeout

阅读全文
0 0
原创粉丝点击