容器是独立运行的一个或一组应用,以及它们的运行态环境。
一、容器管理
- 新建并启动容器:docker run。
- 如:docker run ubuntu:18.04 /bin/echo 'Hello world',在输出一个 “Hello World”之后终止容器。
- 如:docker run -t -i ubuntu:18.04 /bin/bash,-t 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上, -i 则让容器的标准输入保持打开。
- 后台执行:-d,容器会在后台运行,不会把输出的结果 (STDOUT) 打印到宿主机上面(输出结果可以用 docker container logs [container ID or NAMES] 查看)。
- docker run的后台操作:
- 检查本地是否存在指定的镜像,不存在就从 registry 下载
- 利用镜像创建并启动一个容器
- 分配一个文件系统,并在只读的镜像层外面挂载一层可读写层
- 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去
- 从地址池配置一个 ip 地址给容器
- 执行用户指定的应用程序
- 执行完毕后容器被终止
- 启动已终止容器:docker container start
- 终止容器:docker container stop
- 当 Docker 容器中指定的应用终结时,容器也自动终止。
- 可以使用docker container start 命令来重新启动。
- 终止并重新启动:docker container restart。
- 删除容器:docker container rm
- 清除所有终止容器:$ docker container prune
二、进入容器
- docker attach:附加到一个正在运行的容器来查看或者交互,接管或共享容器的 STDIN, STDOUT, STDERR。
- 格式:docker attach
- 退出 attach 但不停止容器,按 Ctrl+P Ctrl+Q。(注意是连着Ctrl+P Ctrl+Q,不是Ctrl+P或Ctrl+Q)
- docker exec:在运行的容器中运行新的命令,可以执行任何在容器中颁布的命令,包括 bash。
- 格式:docker exec [选项]
- docker exec 不会影响在容器中正在运行的其他过程。可以在不影响其他过程的情况下,利用此命令进行例如查看日志、运行调试工具等操作。(也就是说exit不会影响容器主进程而导致退出)
举例:attach进入容器(后台运行容器,运行bash,保持输入,并分配伪终端)
即可执行bash。
举例:exec进入容器
三、导入&导出容器
- 导出容器快照到本地文件:docker export >
- 导入容器快照:docker import [options] file|URL|- [repository[:tag]]