Docker学习(四): 操作容器
特别声明:
博文主要是学习过程中的知识整理,以便之后的查阅回顾。部分内容来源于网络(如有摘录未标注请指出)。内容如有差错,也欢迎指正!
=============系列文章=============
3. Docker学习(三): Dockerfile指令介绍
=================================
容器操作以介绍命令为主
启动
新建并启动:docker run
示例1:docker run ubuntu:14.04 /bin/echo 'Hello World'
示例2:docker run -it ubuntu:14.04 /bin/bash
docker run 创建容器时,进行的操作为:
-
- 检查本地是否存在指定的镜像,不存在就从公有仓库下载
- 利用镜像创建并启动一个容器
- 分配一个文件系统,并在只读的镜像层外面挂载一层可读写层
- 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去
- 从地址池配置一个ip地址给容器
- 执行用户指定的应用程序
- 执行完毕后容器被终止
启动已终止容器:docker start 容器ID
守护状态运行(后台运行)
docker run -d
示例:docker run -d ubuntu:14.04
注:容器是否会长久运行,是和docker run指定的命令有关,和-d参数无关。
终止容器
docker stop 容器ID
进入容器
attach命令:Docker自带的命令。当多个窗口同时attach到同一个容器的时候,所有窗口都会同步显示。某个窗口因命令阻塞时,其他窗口也无法执行操作了。
示例:docker attach 容器ID/名称
nsenter命令:在util-linux包2.23版本后包含。nsenter启动一个新的shell进程(默认是/bin/bash),同时会把这个新进程切换到和目标target进程相同的命名空间,这样就相当于进入了容器内部。nsenter要正常工作需要有root权限。
示例:PID=$(docker-pid container_id)
nsenter --target $PID --mount --uts --ipc --net --pid
.bashrc_docker:下载并将内容放到.bashrc中
示例:echo $(docker-pid <container_id>)
docker-enter <container_id> ls
导出和导入
导出:导出本地某个容器,docker export命令
示例:docker export container_id > ubuntu.tar
导入:从容器快照文件中再导入为镜像,docker import
示例:docker import URL/文件目录 example/imagerepo
注:用户既可以使用docker load来导入镜像存储文件到本地镜像库,也可以使用docker import来导入一个容器快照到本地镜像库。两者的而区别在于容器快照文件将丢弃所有的历史记录和元数据信息,而镜像存储文件将保存完整记录,体积也要大。此外,从容器快照文件导入时可以重新制定标签等元数据信息。
删除容器
删除处于终止状态的容器:docker rm 容器ID/名称
删除处于运行状态的容器:docker rm -f 容器ID/名称
清除所有处于终止状态的容器:docker rm $(docker ps -a -q)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
参考:《docker_practice》