什么是 Linux 容器?
Linux 容器是由 Linux 内核所提供的具有特定隔离功能的进程,Linux 容器技术能够让你对应用及其整个运行时环境(包括全部所需文件)一起进行打包或隔离。从而让你在不同环境(如开发、测试和生产等环境)之间轻松迁移应用的同时,还可保留应用的全部功能。
Linux 容器还有利于明确划分职责范围,减少开发和运维团队间的冲突。这样,开发人员可以全心投入应用开发,而运维团队则可专注于基础架构维护。由于 Linux 容器基于开源技术构建,还将便于你在未来轻松采用各类更新、更强的技术产品。包括 CRI-O、Kubernetes 和 Docker 在内的容器技术,可帮助你的团队有效简化、加速和编排应用的开发与部署。
什么是 Docker?
Docker 是一个开源的应用容器引擎,属于 Linux 容器的一种封装,Docker 提供简单易用的容器使用接口,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上。容器是完全使用沙箱机制,相互之间不会有任何接口。
Docker 是目前很流行的 Linux 容器解决方案,即使 Docker 是目前管理 Linux 容器的一个非常方便的工具,但它也有两个缺点:
- Docker 需要在你的系统上运行一个守护进程。
- Docker 是以 root 身份在你的系统上运行该守护程序。
这些缺点的存在可能有一定的安全隐患,为了解决这些问题,下一代容器化工具 Podman 出现了 。
什么是 Podman ?
Podman 是一个开源的容器运行时项目,可在大多数 Linux 平台上使用。Podman 提供与 Docker 非常相似的功能。正如前面提到的那样,它不需要在你的系统上运行任何守护进程,并且它也可以在没有 root 权限的情况下运行。
Podman 可以管理和运行任何符合 OCI(Open Container Initiative)规范的容器和容器镜像。Podman 提供了一个与 Docker 兼容的命令行前端来管理 Docker 镜像。
- Podman 官网地址:https://podman.io/
-
- Podman 项目地址:https://github.com/containers/libpod
安装 PodmanPodman
目前已支持大多数发行版本通过软件包来进行安装,下面我们来举几个常用发行版本的例子。
- $ sudo yum -y install podman
- $ sudo apt-get update -qq
- $ sudo apt-get install -qq -y software-properties-common uidmap
- $ sudo add-apt-repository -y ppa:projectatomic/ppa
- $ sudo apt-get update -qq
- $ sudo apt-get -qq -y install podman
- $ brew cask install podman
- $ sudo subscription-manager repos --enable=rhel-7-server-extras-rpms
- $ sudo yum -y install podman
- $ sudo pacman -S podman
更多系统的安装方法,可参考官方文档:https://github.com/containers/libpod/blob/master/install.md
使用 Podman
使用Podman 非常的简单,Podman 的指令跟 Docker 大多数都是相同的。下面我们来看几个常用的例子:
运行一个容器
- $ podman run -dt -p 8080:8080/tcp \
- -e HTTPD_VAR_RUN=/var/run/httpd \
- -e HTTPD_MAIN_CONF_D_PATH=/etc/httpd/conf.d \
- -e HTTPD_MAIN_CONF_PATH=/etc/httpd/conf \
- -e HTTPD_CONTAINER_SCRIPTS_PATH=/usr/share/container-scripts/httpd/ \
- registry.fedoraproject.org/f27/httpd /usr/bin/run-httpd
列出运行的容器
- $ podman ps -a
分析一个运行的容器
- $ podman inspect -l | grep IPAddress\":
- "SecondaryIPAddresses": null,
- "IPAddress": "",
查看一个运行中容器的日志
- $ sudo podman logs --latest
- 10.88.0.1 - - [07/Feb/2018:15:22:11 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.55.1" "-"
- 10.88.0.1 - - [07/Feb/2018:15:22:30 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.55.1" "-"
- 10.88.0.1 - - [07/Feb/2018:15:22:30 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.55.1" "-"
- 10.88.0.1 - - [07/Feb/2018:15:22:31 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.55.1" "-"
- 10.88.0.1 - - [07/Feb/2018:15:22:31 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.55.1" "-"
(编辑:ASP站长网)
|