以前学编程语言的时候,总是从 hello world 开始,
此处也就借用 hello world 来开始 podman
1. hello world
podman 能让你在容器内运行一个程序,
如:输出 hello world
如上:
podman run ubuntu:15.10 /bin/echo "hello world"
podman run
podman 的命令格式为:podman COMMAND ...
run 这个 COMMAND 用来 运行(启动)一个 容器
ununtu:15.10
用来指定要运行的 镜像,
podman 首先会在本地主机上查找该镜像是否存在,
镜像不存在的话,就会到 镜像仓库 里面下载镜像,(如上行 3,可以看到 podman 也是到 docker 仓库查找镜像)
/bin/echo "Hello world"
在容器里面执行的命令,最后一行可以看到输出的结果
好多时候会是 /bin/bash,来配合其他选项(-i,-t)提供一个 shell 环境
2. 容器几个基本的概念
(虽然这些文章是说 podman,但在初学的过程中,感觉理解 podman 无法避开 docker 的样子,所以会有一些 docker 的内容;podman 和 docker 的使用类似,(类比 yum 和 dnf),命令有很大的重合部分)
docker 中的基本组成:
-
镜像(image)
-
镜像可以理解为一个“模板”,是一个静态的磁盘文件,这个文件里面会包含一些特定的软件包,
-
如:将 apache 的相关内容制作为一个镜像,将来加载运行这个镜像的时候,就得到了一个可以运行 apache 的环境。
-
类比:虚拟机中安装 CentOS 8 的时候,需要一个 CentOS 8 的 iso 镜像
-
(上一节 OCI 提到,主要的标准之一就是 Image)
-
-
容器(container)
- 镜像运行起来后,就是一个容器
-
仓库
-
仓库就是用来保存镜像,本机上没有的镜像,就到仓库里面查找。
-
类比 yum 本机上没有的程序,就到仓库里面查找
-
公开仓库
-
私有仓库(个人搭建)
-
3. 运行交互式容器
过 podman 的两个参数 -i -t 让 podman 运行的容器提供“交互”界面
(docker 也是一样,前面说过 podman 和 docker 的命令有很大一部分重合,后续不在赘述)
-i | --interactive
Keep STDIN open even if not attached
-t | --tty
Allocate a pseudo-TTY for container (也就是提供一个终端)
示例如下: