目录
前言
Docker 的三个核心概念是镜像、容器和仓库,而容器是基于镜像创建的可运行实例。相较于传统虚拟机,Docker容器提供轻量化的虚拟化方式、安装便捷、启停速度快。本文介绍容器一些知识点和常用命令。
容器知识点
容器是什么
Docker 容器是用于运行应用程序的轻量级虚拟化运行时环境。每个容器代表一个软件包,其中包含运行特定应用程序所需的代码、系统工具、库、依赖项和配置文件。它们与主机和在主机上运行的其他实例是独立和隔离的。运行容器化环境时,实际上是在容器内部创建该文件系统的读写副本。
容器的生命周期
容器的生命周期是容器可能处于的状态。容器的生命周期分为5种,分别如下:
(1)created:初建状态
(2)running:运行状态
(3)stopped:停止状态
(4)paused:暂停状态
(5)deleted:删除状态
各生命周期之前的转换关系如图所示:
容器的操作命令
说明:有镜像才能创建容器,我们这里使用 centos 的镜像来演示容器命令,就是虚拟一个 centos !
docker pull centos
创建并启动容器
容器十分轻量,用户可以随时创建和删除它。容器创建命令:
docker create
例如:
docker create -it --name=centos1 centos
小贴士:如果使用docker create
命令创建的容器处于停止状态,我们可以使用docker start
命令来启动它。
容器启动两种命令:
(1)已经创建好直接启动命令
docker start
例如:
docker start centos1
(2)直接基于镜像新建一个容器并启动(相当于先执行docker create
命令从镜像创建容器,然后再执行docker start
命令启动容器)
docker run
例如:
docker run -it centos /bin/bash # 使用centos进行用交互模式启动容器,在容器内执行/bin/bash命令!
小贴士:如果通过 exit 退出 sh,那么容器也会退出。所以对于容器来说,杀死容器中的主进程,则容器也会被杀死。
常用参数说明
启动停止容器
docker start ( 容器 id or 容器名 ) # 启动容器docker restart ( 容器 id or 容器名 ) # 重启容器docker stop ( 容器 id or 容器名 ) # 停止容器docker kill ( 容器 id or 容器名 ) # 强制停止容器
退出容器
exit # 容器停止退出ctrl + P + Q # 容器不停止退出
进入容器
(1)使用docker attach
命令进入容器,例如:
docker attach centos1
注意: 使用docker attach命令在多个终端上同时运行时,所有终端窗口会同时显示相同的内容。 当一个命令行窗口中的某个命令被阻塞时,其他命令行窗口也无法运行。所以我们一般不会使用docker attach
进入容器。
(2)使用 docker exec 命令进入容器,例如:
docker exec -it centos1 sh
注意:使用该命令进入容器,会单独启动一个 sh 进程,每个窗口都是独立且互不干扰的,也是使用最多的一种方式。
删除容器
docker rm 容器 id # 删除指定容器docker rm -f $(docker ps -a -q) # 删除所有容器docker ps -a -q|xargs docker rm # 删除所有容器
列出所有运行的容器
docker ps [OPTIONS]
docker ps -a
后台启动容器
docker run -d 容器名
例如:
docker run -d centos # 启动 centos ,使用后台方式启动
小贴士:使用后台启动时,如果docker前台没有运行进程,那么该容器会自动退出,所以一般使用前台进程的方式运行启动。
查看容器日志
docker logs -f -t --tail 容器 id
例如:
docker logs -tf --tail 100 05e2ac6c0a68
解释:
查看容器/镜像的元数据
docker inspect 容器 id
例如:
docker inspect 05e2ac6c0a68
查看容器中运行的进程信息
docker top 容器id
例如:
docker top 05e2ac6c0a68
从容器内拷贝文件到主机上
docker cp 容器id:容器内路径 目的主机路径
测试(容器内执行,创建一个文件测试 ):
[root@daxiong ~]# docker run -it centos /bin/bash
[root@e5d3945c674f /]# cd home/
[root@e5d3945c674f home]# touch test
[root@e5d3945c674f home]# ls
test
[root@e5d3945c674f home]# exit
exit# linux复制查看,是否复制成功
[root@daxiong ~]# docker cp e5d3945c674f:/home/test /home
[root@daxiong ~]# cd /home/
[root@daxiong home]# ls
test
迁移容器
导出容器命令:
docker export CONTAINER
具体操作步骤如下:
docker exec -it centos sh # 进入容器
cd /tmp && touch test # 创建文件
执行导出命令
docker export centos > centos.tar
导入容器命令:
docker import [OPTIONS] file|URL [REPOSITORY[:TAG]]
具体操作步骤如下:
docker import centos.tar centos:test
验证是否迁移成功:
docker run -it busybox:test sh
/ # ls /tmp
test
小提示:通过docker export
命令导出的文件,可以使用docker import
命令导入,执行完docker import
后会变为本地镜像,最后再使用docker run
命令启动该镜像,这样我们就实现了容器的迁移。
总结
通过本文,相信你对容器的基本概念和组成有了一定的了解,容器的各种生命周期操作命令也比较熟悉吧。您也应该比较清楚容器和镜像之间的区别。镜像包含了容器运行所需的文件系统结构和内容,是一个静态的只读文件,而容器在镜像的只读层上创建了一个可写层,容器中的进程是处于运行状态,容器是真正的应用载体。
如果本篇博客对您有一定的帮助,大家记得留言+点赞+收藏哦。欢迎关注,一起docker学习之旅!