容器是镜像的一个运行实例,和镜像不同的地方是镜像只是一个只读文件而容器则是一个可写文件。容器独立运行中一个或者一组它们所需要的运行环境。其中,包括了文件系统,shell环境等
本篇文章涉及知识点:创建容器、启动容器、终止容器、进入容器内操作、删除容器和通过导入导出容器并且实现容器的迁移等
一:创建容器
1,新建容器:docker create -t 镜像名:标签(-t 为docker分配一个伪终端并绑定在容器标准输入上。 -i 让容器的标准输入保持打开(交互模式)。 --name 给容器起名字)
举例:docker create -it centos:latest 创建一个centos的容器。可以通过docker ps -a 查看
docker create --name mycentos -it centos 创建一个名字为mycentos的容器
2,启动容器:docker start 容器名字
3,新建一个容器并且启动
命令格式:docker run -it 镜像名:标签 /bin/bash (允许用户进行交互操作)
举例:docker run -it centos:latest /bin/bash
docker run -it centos:latest /bin/bash "hello world" (创检容器并输入一个hello world)
扩展:利用docker run 来创建容器时,docker在后台运行的标准操作包括
(1)检查本地是否存在指定镜像,如果没有自动会从共有仓库下载
(2)利用镜像创建并启动一个容器
(3)分配一个文件系统,并在只读镜像层的外面挂载一层可读可写层
(4)从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中
(5)从网桥的地址池配置一个IP地址给容器
(6)执行用户指定的应用程序
(7)执行完毕后容器被终止
(8)在交互模式下,用户可以通过所创建的终端来输入命令进行操作
(9)容器的核心是所执行的应用程序,所需要的资源都是应用程序运行需要的。
(10)退出exit或者ctrl+d ,如果想要退出容器而不结束容器进程,可以输入ctrl-q +ctrl -p即可
4,容器启动后会返回一个唯一的ID,我们可以通过docker ps命令来查看容器信息
(1)docker run -d 运行一个新的容器,我们可以通过-d 来让它作为一个后台运行
(2)启动一个容器:docker start 容器名或者容器ID
(3)停止一个容器:docker stop 容器名
(4)重启一个容器:docker restart 容器名
(5)查看容器详细信息:docker inspect 容器名(若要查看某一项可以通过-f 来指定)
举例: docker inspect -f ‘{{.NetworkSettings.IPAddress}}‘ 容器ID
5,进入容器操作
使用-d参数后,容器启动后会自动进入到后台,某些时候我们需要进入到容器操作,有多种方式,这里介绍docker attach 和 docker exec -it
(1)使用docker attach允许我们进入到后台进程
(2)--sig-proxy=false 不允许容器转发信号。
注意:使用attach命令有时候不太方便。比如,当多个窗口同时attach到同一个容器时,所有窗口都会同步显示。当某个窗口因为命令阻塞时,其他窗口也就无法执行操作了。
(3)docker exec -it 容器ID或者容器名 /bin/bash 直接进入到容器当中
6,容器导入和导出
(1)导出容器:docker export 容器ID > 导出文件
举例: docker export d17f898a49e > centos7.tar
docker export -o centos7.tar d17f898a49e
(2)导入容器:docker import 或者docker load
区别:docker import会丢弃所有历史记录和原数据信息,仅仅只保留容器当中状态。类似于虚拟机快照。而docker load (镜像存储文件,将保存完整的记录,不过体积也比较大)导入容器快照时,还可以重新指定标签等原数据信息
举例:docker import centos7.tar centos 运行完可以使用docker images查看
docker load --input centos.tar 或者docker load < centos7.tar
7,删除容器
(1)docker rm 删除一个容器,删除容器之前需要先停止其运行状态。强制删除可以使用-f
举例: docker rm centos7(命令格式:docker rm 容器ID或者容器名字)
(2)批量删除多个容器
举例:docker rm $(docker ps -qa)可以批量删除容器,运行完可以使用docker ps -a查看
原文:https://www.cnblogs.com/mayaohui/p/11439856.html