容器化的应用
什么是容器化的应用
所谓的“容器化的应用”,或者“应用的容器化”,就是指应用程序不再直接和操作系统打交道,而是封装成镜像,再交给容器环境去运行。
容器的镜像,从功能上看,和常见的tar、rpm、deb等安装包一样,都打包了应用程序,不同在于:
- 镜像中不仅有基本的可执行文件,还有应用运行时的整个系统环境
这让镜像具有了很好的跨平台便携性和兼容性
docker pull busybox
获取了一个打包了 busybox 应用的镜像,里面固化了 busybox 程序和它所需的完整运行环境
docker run busybox echo hello world
- 提取镜像里的各种信息,运用 namespace、cgroup、chroot 技术创建出隔离环境
- 再运行busybox的echo命令,输出hello world
常用的镜像操作
镜像的标识
我们可以通过镜像的名称和标签组合起来(REPOSITORY:TAG)标识,也可以通过镜像的ID(IMAGE ID)来标识
docker pull
docker pull alpine:3.15
docker pull ubuntu:jammy
拉取镜像
docker rmi
docker rmi redis
docker rmi d4c
删除镜像
docker images
docker images
列出所有镜像
常用的容器操作
容器的标识
容器可以通过容器ID(CONTAINER ID)或容器名称(NAMES)来标识
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
总结
- 常用的镜像操作有 docker pull、docker images、docker rmi,分别是拉取镜像、查看镜像和删除镜像。
- 用来启动容器的 docker run 是最常用的命令,它有很多参数用来调整容器的运行状态,对于后台服务来说应该使用 -d。
- docker exec 命令可以在容器内部执行任意程序,对于调试排错特别有用。
- 其他常用的容器操作还有 docker ps、docker stop、docker rm,用来查看容器、停止容器和删除容器。 以上内容来自罗剑锋老师的《Kubernetes入门实战课》。
《极客时间-Kubernetes入门实战课》学习笔记 Day4