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
- Docker的基本命令和Dockerfile的指令
- DOCKERFILE的CMD指令和ENTRYPOINT指令
- Dockerfile、Docker镜像和Docker容器的关系
- Docker DockerFile指令
- 【Docker】Dockerfile指令
- Docker -- dockerFile指令说明
- Dockerfile COPY指令和ADD指令的区别
- docker 的基本命令
- Docker-Dockerfile语法以及一些命令/关键字的区别浅析
- Docker的安装和基本命令
- Docker的理解和基本命令
- Docker使用-完整的Dockerfile
- Dockerfile的书写规则和指令的使用方法
- docker学习笔记16:Dockerfile 指令 ADD 和 COPY介绍
- docker学习笔记16:Dockerfile 指令 ADD 和 COPY介绍
- Dockerfile创建自定义Docker镜像以及CMD与ENTRYPOINT指令的比较
- Docker学习(一):Ubuntu下Docker的一些基本指令和注意事项
- docker的一些基本命令
- java中几个概念的总结
- 包
- EasyNVR RTSP摄像机转HLS直播服务器中使用Onvif协议控制预置位
- 常用的3d向量方法,根据《3d数学基础:图形与游戏开发》中第六章改写的c#版
- jvm源码阅读笔记[7]-从jstat -gccause命令谈到jvm中都有哪些GC cause
- Docker的基本命令和Dockerfile的指令
- redis中事务(Transaction)的使用
- 编写优质嵌入式C程序
- Netty实战读书笔记三:EventLoop和线程模型
- CUDA中Block大小的选择
- 32位电脑和64位电脑的区别
- 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 L. The Heaviest Non-decreasing Subsequence Problem
- 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 F. Overlapping Rectangles
- C++百度笔试题