容器化的应用

153 阅读3分钟

容器化的应用

什么是容器化的应用

所谓的“容器化的应用”,或者“应用的容器化”,就是指应用程序不再直接和操作系统打交道,而是封装成镜像,再交给容器环境去运行。

image.png

容器的镜像,从功能上看,和常见的tar、rpm、deb等安装包一样,都打包了应用程序,不同在于:

  • 镜像中不仅有基本的可执行文件,还有应用运行时的整个系统环境

这让镜像具有了很好的跨平台便携性和兼容性

docker pull busybox

获取了一个打包了 busybox 应用的镜像,里面固化了 busybox 程序和它所需的完整运行环境

docker run busybox echo hello world

  1. 提取镜像里的各种信息,运用 namespace、cgroup、chroot 技术创建出隔离环境
  2. 再运行busybox的echo命令,输出hello world

常用的镜像操作

镜像的标识

我们可以通过镜像的名称和标签组合起来(REPOSITORY:TAG)标识,也可以通过镜像的ID(IMAGE ID)来标识

image.png

docker pull

docker pull alpine:3.15
docker pull ubuntu:jammy

拉取镜像

docker rmi

docker rmi redis    
docker rmi d4c

删除镜像

docker images

docker images

列出所有镜像

image.png

常用的容器操作

容器的标识

容器可以通过容器ID(CONTAINER ID)或容器名称(NAMES)来标识

image.png

docker run

基本的格式是“docker run 设置参数”,再跟上“镜像名或 ID”,后面可能还会有附加的“运行命令”

docker run -h srv alpine hostname

这里的 -h srv 就是容器的运行参数,alpine 是镜像名,它后面的 hostname 表示要在容器里运行的“hostname”这个程序,输出主机名

常用参数

-it 表示开启一个交互式操作的 Shell,这样可以直接进入容器内部,就好像是登录虚拟机一样。(它实际上是“-i”和“-t”两个参数的组合形式)

-d 表示让容器在后台运行,这在我们启动 Nginx、Redis 等服务器程序的时候非常有用。

--name 可以为容器起一个名字,方便我们查看,不过它不是必须的,如果不用这个参数,Docker 会分配一个随机的名字

docker exec

对于正在运行中的容器,我们可以使用 docker exec 命令在里面执行另一个程序。

效果和 docker run 很类似,但因为容器已经存在,所以不会创建新的容器。它最常见的用法是使用 -it 参数打开一个 Shell,从而进入容器内部

docker exec -it red_srv sh

这样我们就“登录”进了 Redis 容器,可以很方便地查看服务的运行状态或者日志

docker stop

docker stop red_srv

停止正在运行的容器

docker start

docker start red_srv

启用已停止的容器

docker ps

加上-a

docker ps -a

列出所有运行过的容器

docker rm

docker rm 2164 # 这里2164是red_srv的容器ID

image.png

总结

  1. 常用的镜像操作有 docker pull、docker images、docker rmi,分别是拉取镜像、查看镜像和删除镜像。
  2. 用来启动容器的 docker run 是最常用的命令,它有很多参数用来调整容器的运行状态,对于后台服务来说应该使用 -d。
  3. docker exec 命令可以在容器内部执行任意程序,对于调试排错特别有用。
  4. 其他常用的容器操作还有 docker ps、docker stop、docker rm,用来查看容器、停止容器和删除容器。 以上内容来自罗剑锋老师的《Kubernetes入门实战课》。

《极客时间-Kubernetes入门实战课》学习笔记 Day4 774a0d4e91146e72b83719c671f4b6d.jpg