手机扫一扫访问本页内容

微信扫描点右上角"···"分享到好友或朋友圈

关闭
微信扫一扫可打开小程序

微信长按图片或搜“分享录”可打开小程序

关闭

用Dockerfile构建镜像并运行到容器中

关于安装Docker可以看《在Mac、Windows、Linux上安装Docker以及常用的操作命令》,更多相关内容看Docker系列

Dockerfile是用来构建docker镜像的文件,是一个包含用户可以在命令行上调用组装镜像所有命令的文本文档,Docker可以通过从Dockerfile中读取指令来自动构建镜像。

Dockerfile指令语法

Docker镜像是分层构建、联合挂载的结构,Dockerfile中每一条指令构建一层镜像,用FROM来指定基础镜像,如果不以任何镜像为基础就写成“FROM scratch”。

Dockerfile中,以“#”开头的为注释行,指令(Instruction)采用大写格式,常用的指令说明如下。

FROM:指定当前自定义镜像依赖的环境。
MAINTAINER:镜像创建者信息,已经被标记为过时指令,官方推荐用LABLE。
USER:设置启动容器的用户,可以是用户名或UID,使用这个命令要确认容器中拥有这个用户,并且拥有足够权限。
EXPOSE:开放的端口。
VOLUME:在容器中创建一个挂载点,相当于-v,指定镜像的目录挂载到宿主机上。
ADD:复制文件到镜像,源文件要与Dockerfile位于相同目录中,若源文件是压缩包则会将其解压缩。
COPY:将相对路径下的内容复制到自定义镜像中,源文件要与Dockerfile位于相同目录中,copy只能用于复制,copy比add节省资源。
ARG:设置变量,只在build构建的时候有效,在docker build创建镜像的时候可以用“--build-arg 变量名=变量值”来指定参数。只能先定义ARG,build-arg传递的参数才生效。在multiple stages,每个stages的变量不能通用。
ENV:设置环境变量,只在容器运行的时候有效。
RUN:制作镜像时执行的命令,可以有多个,上而下依次运行,每次运行都会形成新的层,建议用“&&” 放入一行运行。
WORKDIR:定义容器默认的工作目录,对RUN、CMD、ENTRYPOINT、ADD、COPY生效,如果不存在则会创建,可以设置多次。
CMD:指定启动容器时需要运行的命令或者脚本,可以写多个,只以最后一个为准。CMD有三种形式:CMD ["executable","param1","param2",...] (exec形式,这是首选形式)、CMD ["param1","param2"] (作为ENTRYPOINT的默认参数)、CMD command param1 param2 (shell形式)。
ENTRYPOINT:设定容器启动时第一个运行的命令及其参数,有两种形式:ENTRYPOINT ["executable","param1","param2",...](exec形式,这是首选形式)、“ENTRYPOINT command param1 param2”(shell形式)。可以通过使用命令“docker run --entrypoint”来覆盖镜像中ENTRYPOINT指令的内容。如果有多个ENTRYPOINT,只有最后一个运行。如果CMD和ENTRYPOINT共存,只有ENTRYPOINT运行,且最后的CMD会当做ENTRYPOINT的参数。
ONBUILD:当构建一个被继承的Dockerfile时,这个时候就会运行ONBUILD指令,是一个触发指令。
HEALTHCHECK:用于指定某个程序或者指令来监控 docker 容器服务的运行状态。

构建镜像

按照上面的Dockerfile语法编写完Dockerfile文件以后就可以通过下面的命令来构建镜像了。

docker build -t 镜像名:版本号 .

运行到容器中

构建完镜像可以通过“docker images”查看上面构建好的镜像,然后通过下面的命令把镜像运行到容器中,再通过“docker ps”(加“-a”查看所有容器)命令查看运行容器。

docker run -it 镜像名字:TAG
docker run -d --name 唯一的容器名 镜像名字:TAG

另外,还可以通过“docker inspect CONTAINER ID/NAMES”查看容器信息、“docker exec -it CONTAINER ID/NAMES bash或sh”进入容器、“docker logs CONTAINER ID/NAMES”查看日志、“docker rm CONTAINER ID/NAMES”删除容器(加“-f”强制删除正在运行的容器)、“docker rmi IMAGE ID/REPOSITORY:TAG”删除镜像。

更多dockerfile相关信息请查看官网文档


历史上的今天:

展开阅读全文


上一篇:

下一篇:

服务器又要到期了鼓励一下吧
您还可以访问本站的小程序、公众号等所有端,或者下载APP, 在小程序、APP上可以评论文章以及保存图片还有在线客服哦,如您有任何疑问或建议可向作者提出意见反馈
扫码打开小程序可评论文章保存图片,在“我的”有实时在线客服哦,看效果?
关注我的公众号为您分享各类有用信息
分享录多端跨平台系统