容器(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"]
}