容器是 Docker 的另一个核心概念。 简单来说,容器是镜像的一个运行实例。所不同的是,镜像是静态的只读文件,而容器带有运行时需要的可写文件层,同时,容器中的应用进程处于运行状态。
如果认为虚拟机是模拟运行的一整套操作系统(包括内核、 应用运行态环境和其他系统环境)和跑在上面的应用。 那么 Docker 容器就是独立运行的一个(或一组)应用,以及它们必需的运行环境。
5.1 创建容器
- 获取centos:7.5.1804的镜像
docker pull centos:7.5.1804

- 创建容器
docker create -i -t centos:7.5.1804 /bin/bash

说明:
I. 创建一个交互式的容器
II. -i: 允许你对容器内的标准输入 (STDIN) 进行交互
III. -t: 在新容器内指定一个伪终端或终端。
- 启动容器
docker start bcc

- 新建并启动容器
前面的操作是先创建容器, 然后再启动容器. 也可以使用run来直接新建并启动容器
启动一个交互式的centos容器
docker run -it centos:7.5.1804 /bin/bash
说明:
检查本地是否存在指定的镜像,不存在就从公有仓库下载;
利用镜像创建一个容器,并启动该容器;
分配一个文件系统给容器,并在只读的镜像层外面挂载一层可读写层 ;
查看有哪些容器
查看启动的容器
docker ps

- 查看所有容器
docker ps -a

- 启动后台容器进程
docker run -itd centos:7.5.1804 /bin/bash
5.2 停止容器
docker stop bcc

5.3 进入容器
在使用 -d 参数时,容器启动后会进入后台(有些容器默认就是后台, 比如centos容器)。此时想要进入容器,可以通过以下指令进入:
docker exec -it bcc /bin/bash

通过指定 -it参数来保持标准输入打开, 并且分配一个伪终端。可以看到会打开一个新的 bash 终端,在不影响容器内其他应用的前提下,用户可以与容器进行交五。
5.4 删除容器
- 删除已经停止的容器
docker rm ea5c

- 删除正在运行的容器
先停止, 再删除
docker rm -f bcc

5.5 导入和导出容器
某些时候,需要将容器从一个系统迁移到另外一个系统,此时可以使用 Docker 的导人 和导出功能,这也是 Docker 自身提供的一个重要特性。
为了测试容器是否导出和导入成功, 我们在centos容器中创建一个新的文件

5.5.1 导出容器
导出容器是指,导出一个已经创建的容器到一个文件,不管此时这个容器是否处于运行状态.
docker export -o '/home/atguigu/test_for_centos.tar' 9fa

可以把导出的tar文件, 传输到其他设备, 再通过导入命令导入, 实现容器的迁移.
5.5.2 导入容器
将上节导出的容器导入之后会成为镜像.
docker import test_for_centos.tar -- test/mycentos:1.0

使用新的镜像启动容器:

刚才创建的文件还在
5.6 查看容器
5.6.1 查看容器详情
docker container inspect 9fa
会以 json 格式返回包括容器 Id、创建时间、路径、状态、镜像、配置等在内的各项信息

5.6.2 查看容器内进程
docker top 9fa
这个子命令类似于 Linux 系统中的 top 命令, 会打印出容器内的进程信息, 包括 PID 、 用户、时间、命令等

5.6.3 查看统计信息
docker stats --no-stream 9fa
会显示 CPU 、内存、存储、网络等使用情况的统计信息

5.7 容器和主机之间复制文件
容器和主机之间进行文件复制的时候, 要保证容器已经启动.
5.7.1 从主机复制到容器
docker cp test.txt 9fa:/

5.7.2 从容器复制到主机
docker cp 9fa:/a.txt ./
