Docker 的基本命令和 Dockerfile 的指令

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 timeout

docker logout
退出登录

docker build -t  .
根据 Dockerfile 的内容创建镜像,并给镜像命名。

docker run -p 4000:80 
运行容器,本地主机的4000端口映射到容器的80端口。

docker run -d -p 4000:80 
后台运行容器。

docker stop 
关闭指定的容器,为容器的ID。

docker kill  
强制关闭指定的容器。

docker rm 
删除指定的容器。

docker rm $(docker ps -a -q) 
删除所有的容器。(在 Windows 中,需在 Git Bash 或 Bash for Windows 中执行该 Linux 命令)

docker rmi 
删除指定的镜像。

docker rmi $(docker images -q) 
删除所有的镜像。(在 Windows 中,需在 Git Bash 或 Bash for Windows 中执行该 Linux 命令)

docker tag  /:
给镜像打标签,以便上传镜像。

docker push /:
上传镜像。

docker run /:
运行镜像。

docker pull 
下载镜像。

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 /a
WORKDIR b
WORKDIR c
RUN pwd
# 最终路径是/a/b/c

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

ENV DIRPATH /path
WORKDIR $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

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

你可能感兴趣的:(Docker)