构建镜像总结
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 查看容器的一些详细信息;