Docker的三大核心概念之“容器”篇

目录

前言

容器知识点

容器是什么

容器的生命周期

 容器的操作命令

创建并启动容器

启动停止容器

退出容器  

进入容器

删除容器

列出所有运行的容器

后台启动容器

查看容器日志

查看容器/镜像的元数据

查看容器中运行的进程信息

迁移容器 

总结


前言

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,那么容器也会退出。所以对于容器来说,杀死容器中的主进程,则容器也会被杀死。

常用参数说明

--name = "Name" # 给容器指定一个名字
-d # 后台方式运行容器,并返回容器的 id
-i # 以交互模式运行容器,通过和 -t 一起使用
-t # 给容器重新分配一个终端,通常和 -i 一起使用
-P # 随机端口映射(大写)
-p # 指定端口映射(小结),一般可以有四种写法
ip:hostPort:containerPort
ip::containerPort
hostPort:containerPort ( 常用 )
containerPort
# 两则启动命令 区别
# exec 是在容器中打开新的终端,并且可以启动新的进程
# attach 直接进入容器启动命令的终端,不会启动新的进程

启动停止容器

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]

# 常用参数说明
-a # 列出当前所有正在运行的容器 + 历史运行过的容器
-l # 显示最近创建的容器
-n = ? # 显示最近 n 个创建的容器
-q # 静默模式,只显示容器编号。
例如:
docker ps -a

后台启动容器

docker run -d 容器名

例如:

docker run -d centos # 启动 centos ,使用后台方式启动

小贴士:使用后台启动时,如果docker前台没有运行进程,那么该容器会自动退出,所以一般使用前台进程的方式运行启动。

查看容器日志

docker logs -f -t --tail 容器 id

例如:

docker logs -tf --tail 100 05e2ac6c0a68

解释:

# -t 显示时间戳
# -f 打印最新的日志
# --tail 数字 显示多少条!

查看容器/镜像的元数据

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学习之旅!

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值