容器(Container)——镜像运行时的实体

镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的 类 和 实例 一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等 。

容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的 命名空间

命令

1.新建并启动容器

docker run -d -i -t centos:latest /bin/bash
##参数说明
-d:守护进程方式
-t:分配一个伪终端
-i:标准输入即交互模式

退出终端可以命令行输入exit或者ctrl+d、ctrl+c

或直接在命令行上输出
docker run centos:latest  /bin/echo "hello"

2.查看容器进程

docker ps -a
##说明
-a:显示所有  不加-a 只显示正在运行中

3.启动、停止、重启容器

启动:docker start 容器ID
停止:docker stop 容器ID
	 docker kill 容器ID
重启:docker restart 容器ID

4.查看容器信息

docker inspect 容器ID
例子:
docker inspect -f '{{.ID}}' fe39
fe3930a2c29a973c97e15feb1a8b77edc37934c2c4c7d8e2a8e701e581046c45

5.进入容器

docker attach 容器ID
##多窗口会同步显示

docker exec -it 容器ID
##直接在容器运行命令

使用nsenter进入容器

rpm -qa | grep util-linux
##没有需要下载
地址:https://www.kernel.org/pub/linux/utils/util-linux/

编写一个变量
PID=$(docker inspect --format "{{.State.Pid}}" 容器ID)

nsenter --target $PID --mount --uts --ipc --net --pid
##参数说明
--target pid:指定被进入命名空间的目标进程的pid
--mount:进入mount命名空间
--uts:进入uts命名空间
--ipc:进入ipc命名空间
--net:进入net命名空间

6.导出与导入容器

导出:
docker export 容器ID > centos7.tar
##说明:导出为容器快照
导入:
cat centos7.tar | docker import centos7.tar - centos:test
##容器快照文件中导入镜像不保存容器元数据
保存完整的用docker load

7.删除容器

docker rm 容器ID

批量删除
docker rm $(docker ps -a -q)

附加docker国内镜像加速

/etc/docker/daemon.json

##没有此文件则创建
daemon.json:


{
    "registry-mirrors": ["https://registry.docker-cn.com","http://hub-mirror.c.163.com"]
}