关于ubuntu上使用docker环境的小记

关于ubuntu上使用docker环境的小记

docker环境是一种隔离式的系统,用户在容器中进行操作,互不影响,可以随时创建和销毁,比较方便和灵活。这里记录一些细节吧。
首先,我们可以直接利用dockerhub的镜像来创建容器,即docker run ---- -it,这里使用-it是为了获得伪交互终端,后面也要跟/bin/bash这种不退出的命令(注:伪终端只是为了提供更好的可视化,可是伪终端并不代表不退出,在加了-it的情况下,仍然在最后使用了会结束的命令的话,仍然容器在一段时间后退出,所以需要用bash这种不退出的命令;但是如果不加-it,只用bash的话,这样容器会把bash当成不活跃进程,自动退出,所以需要加-it。另外再不加-it的情况下,把后面的命令改成sleep 120,那么容器也会在120s后退出)。
如果想要个人的镜像,则需要进行镜像的生成,常常使用Dockerfile来进行,Dockerfile里边有一系列操作,类似与shell操作,如ADD,COPY.RUN等,前两个是将本地(其实也是先拷贝到docker引擎)的文件同步到镜像系统,RUN则是运行命令,一般会在Dockerfile中指定FROM,后面是基础镜像,一般是ubuntu系列,然后也会有WORKDIR,这是指定工作路径,跟shell的cd比较像,当指定后,容器启动时会切换到该路径。
在Dockerfile中还会有CMD ENTRYPOINT这两个命令,作用都是在容器启动时自动运行,前者会被docker run后面的实际命令所覆盖,后者则会将实际命令作为参数。这两个命令会影响后面所说的伪交互。
利用Dockerfile生成镜像的命令是docker build -t {tag} -f Dockerfile .,后面的.表示默认Dockerfile所在的目录,到时候docker引擎会把该路径下的所有文件同步到镜像,然后上面的ADD等操作也是在对这些文件进行操作。
当创建好image后,我们可以根据Image进行容器创建,命令是docker run {-it } image {command},这里要注意-it指定是伪交互模式,即可以进入容器中,访问其文件系统。但是如果我们在dockerfile中使用了ENTRYPOINT,则无法利用伪交互,除非 我们将ENTRYPOINT后的命令改为/bin/bash等允许交互的命令,否则,我们的容器一经运行就会退出。

另外,在使用Dockerfile构建image时,会使用缓存,即之前创建过的缓存层,如果不用,则要指定–no-cache,还可以使用–cache-from指定特定的cache镜像,注意,image是层级结构,上层依赖下层,某一层镜像变了,上面层都会受就影响

===============================
贴个链接:
关于image的config信息
可用docker inspect image_id查看,里面有container_config和config,可查看对应的CMD,其中container_config表明了父image的信息,如果当前image是父image的容器commit而来则会有信息,如果是import来的,则没有。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值