代码改变世界

Docker:镜像构建与进入容器总结

2017-10-30 16:52  huoit  阅读(1100)  评论(0编辑  收藏  举报

 

构建镜像总结

docker构建镜像有两种方法:

1、使用docker commit + 容器

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

-a, --author="" Author (e.g., "John Hannibal Smith <hannibal@a-team.com>")
-m, --message="" Commit message
-p, --pause=true Pause container during commit

例如:

docker pull 某某镜像;//先下载某某基础镜像

docker run --name mycontainer -d 某某镜像 //跑起来一个容器

docker exec mycontainer /bin/bash //进入镜像

apt-get update 

apt-get install xxx //做一些安装修改

exit //退出镜像

docker commit mycontainer myimages/testimage:v1 //从容器创建一个自己的镜像,打上tag

docker save --output testimage_v1.tar testimage:v1 //把镜像保存成tar包到本地 


2、使用docker build +Dockerfile文件

 docker build [OPTIONS] PATH | URL 

--force-rm=false 不管构建成功失败都删除产生的中间容器
--no-cache=false 构建镜像的时候不使用缓存
-q,--quiet=false 禁止容器生成输出
--rm=true 构建成功时候删除中间容器
-t,--tag="" 给镜像打tag

上面的Path中 用 . 表示当前路径

 

例如:在当前路径构建一个镜像

docker build -t mytestimage:v1 . 

 

 

进入容器总结

1、使用docker exec -it 容器名  /bin/bash

 docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

-d  [command]: 后台运行一个Linux命令;如:docker exec -d  容器01 touch /temp/mytext ;这个命令在容器01里面创建一个文件

-e [varname=value] 设置一个环境变量;如:docker exec -e  var1=1 容器01 bash ;会在当前会话创建一个var1的环境变量,只在当前会话有效

-i :即使没有附加也保持STDIN 打开
-t :分配一个伪终端;如:docker exec -ti 容器01 /bin/bash ;命令会保持一个连接容器的终端;

这种方法在前文测试时候经常见到过

2、使用docker attach 容器名

docker attach 容器名

这个模式进入容器后,当多个窗口同时使用该命令进入该容器时,所有的窗口都会同步显示。如果有一个窗口阻塞了,那么其他窗口也无法再进行操作。

docker inspect 查看容器的一些详细信息;