docker 笔记

1、docker build 命令构建镜像的格式:

docker build [选项] <上下文路径/URL/->

 指定了构建上下文的路径。docker build 命令会将上下文目录下的内容打包交给 Docker 引擎以帮助构建镜像。docker build命令可以使用-f 参数来指定dockerfile,默认是 ‘PATH/Dockerfile’ (PATH是构建上下文)

在dockerfile中的copy指令,例如:

COPY ./package.json /app/

指的是复制 上下文(context) 目录下的 package.json 到镜像的app目录下。

2、CMD 和 ENTRYPOINT 命令

CMD是容器启动以后,默认执行的命令。ENTRYPOINT是容器启动以后要执行命令。如果docker run指定执行命令(docker run跟在镜像名后面的是 command,运行时会替换 CMD 的默认值。)或者dockerfile里面中有entrypoint命令(当存在 ENTRYPOINT 后,CMD 的内容将会作为参数传给 ENTRYPOINT),CMD指令会被覆盖。

3、RUN 指令是用来执行命令行命令的。Dockerfile 中每一个指令都会建立一层,RUN 也不例外。每一个 RUN 的行为都会新建立一层,在其上执行这些命令,执行结束后,commit 这一层的修改,构成新的镜像。

镜像是多层存储,每一层的东西并不会在下一层被删除,会一直跟随着镜像。因此镜像构建时,一定要确保每一层只添加真正需要添加的东西,任何无关的东西都应该清理掉。

4、docker exec :在运行的容器中执行命令或者进入容器。 

在容器 mynginx 中以交互模式执行容器内 /root/runoob.sh 脚本:

runoob@runoob:~$ docker exec -it mynginx /bin/sh /root/runoob.sh
http://www.runoob.com/

docker exec -it helk-elasticsearch /bin/bash 表示在容器 helk-elasticsearch中开启一个交互模式的终端(进入容器)。

5、VOLUME

定义匿名卷, 并且我们以这个镜像run了一个容器的时候,docker会在安装目录下的指定目录下面生成一个目录来绑定容器的匿名卷。可以在dockers run时候使用 -v将当前主机的某个目录绑定匿名卷, 来作为挂载点。例如:

docker run -itd -name redis1 -v /data:/share/data image-redis    //运行一个容器并且将当前机器的/data目录绑定到容器的匿名卷中

容器运行时应该尽量保持容器存储层不发生写操作,对于数据库类需要保存动态数据的应用,其数据库文件应该保存于卷(volume)中为了防止运行时用户忘记将动态文件所保存目录挂载为卷,在 Dockerfile 中,我们可以事先指定某些目录挂载为匿名卷,这样在运行时如果用户不指定挂载,其应用也可以正常运行,不会向容器存储层写入大量数据。

 

dockerfile中有VOLUME指令,但是它只能定义目标,不能定义

主机目录在容器运行时声明:主机目录(挂载点)从本质上说是依赖于主机的。 这是为了保留image的可移植性,因为不能保证给定的主机目录在所有主机上都可用。 因此,您无法从Dockerfile中挂载主机目录。 VOLUME指令不支持指定host-dir参数。 创建或运行容器时,必须指定挂载点。

参考:https://docs.docker.com/engine/reference/builder/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值