日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
再見(jiàn)Docker,是時(shí)候擁抱下一代容器工具了

什么是 Linux 容器?

Linux 容器是由 Linux 內(nèi)核所提供的具有特定隔離功能的進(jìn)程,Linux 容器技術(shù)能夠讓你對(duì)應(yīng)用及其整個(gè)運(yùn)行時(shí)環(huán)境(包括全部所需文件)一起進(jìn)行打包或隔離。從而讓你在不同環(huán)境(如開(kāi)發(fā)、測(cè)試和生產(chǎn)等環(huán)境)之間輕松遷移應(yīng)用的同時(shí),還可保留應(yīng)用的全部功能。

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名與空間、虛擬空間、營(yíng)銷軟件、網(wǎng)站建設(shè)、劍閣網(wǎng)站維護(hù)、網(wǎng)站推廣。

Linux 容器還有利于明確劃分職責(zé)范圍,減少開(kāi)發(fā)和運(yùn)維團(tuán)隊(duì)間的沖突。這樣,開(kāi)發(fā)人員可以全心投入應(yīng)用開(kāi)發(fā),而運(yùn)維團(tuán)隊(duì)則可專注于基礎(chǔ)架構(gòu)維護(hù)。由于 Linux 容器基于開(kāi)源技術(shù)構(gòu)建,還將便于你在未來(lái)輕松采用各類更新、更強(qiáng)的技術(shù)產(chǎn)品。包括 CRI-O、Kubernetes 和 Docker 在內(nèi)的容器技術(shù),可幫助你的團(tuán)隊(duì)有效簡(jiǎn)化、加速和編排應(yīng)用的開(kāi)發(fā)與部署。

什么是 Docker?

Docker 是一個(gè)開(kāi)源的應(yīng)用容器引擎,屬于 Linux 容器的一種封裝,Docker 提供簡(jiǎn)單易用的容器使用接口,讓開(kāi)發(fā)者可以打包他們的應(yīng)用以及依賴包到一個(gè)可移植的容器中,然后發(fā)布到任何流行的 Linux 機(jī)器上。容器是完全使用沙箱機(jī)制,相互之間不會(huì)有任何接口。

Docker 是目前很流行的 Linux 容器解決方案,即使 Docker 是目前管理 Linux 容器的一個(gè)非常方便的工具,但它也有兩個(gè)缺點(diǎn):

  • Docker 需要在你的系統(tǒng)上運(yùn)行一個(gè)守護(hù)進(jìn)程。
  • Docker 是以 root 身份在你的系統(tǒng)上運(yùn)行該守護(hù)程序。

這些缺點(diǎn)的存在可能有一定的安全隱患,為了解決這些問(wèn)題,下一代容器化工具 Podman 出現(xiàn)了 。

什么是 Podman ?

Podman 是一個(gè)開(kāi)源的容器運(yùn)行時(shí)項(xiàng)目,可在大多數(shù) Linux 平臺(tái)上使用。Podman 提供與 Docker 非常相似的功能。正如前面提到的那樣,它不需要在你的系統(tǒng)上運(yùn)行任何守護(hù)進(jìn)程,并且它也可以在沒(méi)有 root 權(quán)限的情況下運(yùn)行。

Podman 可以管理和運(yùn)行任何符合 OCI(Open Container Initiative)規(guī)范的容器和容器鏡像。Podman 提供了一個(gè)與 Docker 兼容的命令行前端來(lái)管理 Docker 鏡像。

 
 
 
 
  1. Podman 官網(wǎng)地址:https://podman.io/
  2. Podman 項(xiàng)目地址:https://github.com/containers/libpod

安裝 PodmanPodman

目前已支持大多數(shù)發(fā)行版本通過(guò)軟件包來(lái)進(jìn)行安裝,下面我們來(lái)舉幾個(gè)常用發(fā)行版本的例子。

  • Fedora / CentOS
 
 
 
 
  1. $ sudo yum -y install podman
  • Ubuntu
 
 
 
 
  1. $ sudo apt-get update -qq
  2. $ sudo apt-get install -qq -y software-properties-common uidmap
  3. $ sudo add-apt-repository -y ppa:projectatomic/ppa
  4. $ sudo apt-get update -qq
  5. $ sudo apt-get -qq -y install podman
  • MacOS
 
 
 
 
  1. $ brew cask install podman
  • RHEL 7
 
 
 
 
  1. $ sudo subscription-manager repos --enable=rhel-7-server-extras-rpms
  2. $ sudo yum -y install podman
  • Arch Linux
 
 
 
 
  1. $ sudo pacman -S podman

更多系統(tǒng)的安裝方法,可參考官方文檔:https://github.com/containers/libpod/blob/master/install.md

使用 Podman 

使用Podman 非常的簡(jiǎn)單,Podman 的指令跟 Docker 大多數(shù)都是相同的。下面我們來(lái)看幾個(gè)常用的例子:

運(yùn)行一個(gè)容器

 
 
 
 
  1. $ podman run -dt -p 8080:8080/tcp  \
  2. -e HTTPD_VAR_RUN=/var/run/httpd  \
  3. -e HTTPD_MAIN_CONF_D_PATH=/etc/httpd/conf.d \
  4. -e HTTPD_MAIN_CONF_PATH=/etc/httpd/conf \
  5. -e HTTPD_CONTAINER_SCRIPTS_PATH=/usr/share/container-scripts/httpd/ \
  6. registry.fedoraproject.org/f27/httpd /usr/bin/run-httpd

列出運(yùn)行的容器

 
 
 
 
  1. $ podman ps -a

分析一個(gè)運(yùn)行的容器

 
 
 
 
  1. $ podman inspect -l | grep IPAddress\":
  2. "SecondaryIPAddresses": null,
  3. "IPAddress": "",

查看一個(gè)運(yùn)行中容器的日志

 
 
 
 
  1. $ sudo podman logs --latest
  2. 10.88.0.1 - - [07/Feb/2018:15:22:11 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.55.1" "-"
  3. 10.88.0.1 - - [07/Feb/2018:15:22:30 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.55.1" "-"
  4. 10.88.0.1 - - [07/Feb/2018:15:22:30 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.55.1" "-"
  5. 10.88.0.1 - - [07/Feb/2018:15:22:31 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.55.1" "-"
  6. 10.88.0.1 - - [07/Feb/2018:15:22:31 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.55.1" "-"

查看一個(gè)運(yùn)行容器中的進(jìn)程資源使用情況

 
 
 
 
  1. $ sudo podman top 
  2.   UID   PID  PPID  C STIME TTY          TIME CMD
  3.     0 31873 31863  0 09:21 ?        00:00:00 nginx: master process nginx -g daemon off;
  4.   101 31889 31873  0 09:21 ?        00:00:00 nginx: worker process

停止一個(gè)運(yùn)行中的容器

 
 
 
 
  1. $ sudo podman stop --latest

刪除一個(gè)容器

 
 
 
 
  1. $ sudo podman rm --latest

以上這些特性基本上都和 Docker 一樣,Podman 除了兼容這些特性外,還支持了一些新的特性。

給容器設(shè)置一個(gè)檢查點(diǎn)

 
 
 
 
  1. $ sudo podman container checkpoint 

需要 CRIU 3.11 以上版本支持,CRIU 項(xiàng)目地址:https://criu.org/

根據(jù)檢查點(diǎn)位置恢復(fù)容器

 
 
 
 
  1. $ sudo podman container restore 

遷移容器

Podman 支持將容器從一臺(tái)機(jī)器遷移到另一臺(tái)機(jī)器。

首先,在源機(jī)器上對(duì)容器設(shè)置檢查點(diǎn),并將容器打包到指定位置。

 
 
 
 
  1. $ sudo podman container checkpoint  -e /tmp/checkpoint.tar.gz
  2. $ scp /tmp/checkpoint.tar.gz :/tmp

其次,在目標(biāo)機(jī)器上使用源機(jī)器上傳輸過(guò)來(lái)的打包文件對(duì)容器進(jìn)行恢復(fù)。

 
 
 
 
  1. $ sudo podman container restore -i /tmp/checkpoint.tar.gz

配置別名

如果習(xí)慣了使用 Docker 命令,可以直接給 Podman 配置一個(gè)別名來(lái)實(shí)現(xiàn)無(wú)縫轉(zhuǎn)移。你只需要在 .bashrc 下加入以下行內(nèi)容即可:

 
 
 
 
  1. $ echo "alias docker=podman" >> .bashrc
  2. $ source .bashrc

Podman 如何實(shí)現(xiàn)開(kāi)機(jī)重啟容器

由于 Podman 不再使用守護(hù)進(jìn)程管理服務(wù),所以不能通過(guò)守護(hù)進(jìn)程去實(shí)現(xiàn)自動(dòng)重啟容器的功能。那如果要實(shí)現(xiàn)開(kāi)機(jī)自動(dòng)重啟容器,又該如何實(shí)現(xiàn)呢?

其實(shí)方法很簡(jiǎn)單,現(xiàn)在大多數(shù)系統(tǒng)都已經(jīng)采用 Systemd 作為守護(hù)進(jìn)程管理工具。這里我們就可以使用 Systemd 來(lái)實(shí)現(xiàn) Podman 開(kāi)機(jī)重啟容器,這里我們以啟動(dòng)一個(gè) Nginx容器為例子。

首先,我們先運(yùn)行一個(gè) Nginx 容器。

 
 
 
 
  1. $ sudo podman run -t -d -p 80:80 --name nginx nginx

然后,在建立一個(gè) Systemd 服務(wù)配置文件。

 
 
 
 
  1. $ vim /etc/systemd/system/nginx_container.service
  2. [Unit]
  3. Description=Podman Nginx Service
  4. After=network.target
  5. After=network-online.target
  6. [Service]
  7. Type=simple
  8. ExecStart=/usr/bin/podman start -a nginx
  9. ExecStop=/usr/bin/podman stop -t 10 nginx
  10. Restart=always
  11. [Install]
  12. WantedBy=multi-user.target

接下來(lái),啟用這個(gè) Systemd 服務(wù)。

 
 
 
 
  1. $ sudo systemctl daemon-reload
  2. $ sudo systemctl enable nginx_container.service
  3. $ sudo systemctl start nginx_container.service

服務(wù)啟用成功后,我們可以通過(guò) systemctl status 命令查看到這個(gè)服務(wù)的運(yùn)行狀況。

 
 
 
 
  1. $ sudo systemctl status nginx_container.service
  2. ● nginx_container.service - Podman Nginx Service
  3.    Loaded: loaded (/etc/systemd/system/nginx_container.service; enabled; vendor preset: disabled)
  4.    Active: active (running) since Sat 2019-08-20 20:59:26 UTC; 1min 41s ago
  5.  Main PID: 845 (podman)
  6.     Tasks: 16 (limit: 4915)
  7.    Memory: 37.6M
  8.    CGroup: /system.slice/nginx_container.service
  9.            └─845 /usr/bin/podman start -a nginx
  10. Aug 20 20:59:26 Ubuntu-dev.novalocal systemd[1]: Started Podman Nginx Service.

之后每次系統(tǒng)重啟后 Systemd 都會(huì)自動(dòng)啟動(dòng)這個(gè)服務(wù)所對(duì)應(yīng)的容器。

其它相關(guān)工具

Podman 只是 OCI 容器生態(tài)系統(tǒng)計(jì)劃中的一部分,主要專注于幫助用戶維護(hù)和修改符合 OCI 規(guī)范的容器鏡像。其它的組件還有 Buildah、Skopeo 等。

Buildah

雖然 Podman 也可以支持用戶構(gòu)建 Docker 鏡像,但是構(gòu)建速度比較慢。并且默認(rèn)情況下使用 VFS 存儲(chǔ)驅(qū)動(dòng)程序會(huì)消耗大量磁盤空間。

Buildah 是一個(gè)專注于構(gòu)建 OCI 容器鏡像的工具,Buildah 構(gòu)建速度非??觳⑹褂酶采w存儲(chǔ)驅(qū)動(dòng)程序,可以節(jié)約大量的空間。

Buildah 基于 fork-exec 模型,不以守護(hù)進(jìn)程運(yùn)行。Buildah 支持 Dockerfile 中的所有命令。你可以直接使用 Dockerfiles 來(lái)構(gòu)建鏡像,并且不需要任何 root 權(quán)限。Buildah 也支持用自己的語(yǔ)法文件構(gòu)建鏡像,可以允許將其他腳本語(yǔ)言集成到構(gòu)建過(guò)程中。

下面是一個(gè)使用 Buidah 自有語(yǔ)法構(gòu)建的例子。

Buildah 和 Podman 之間的一個(gè)主要區(qū)別是:Podman 用于運(yùn)行和管理容器, 允許我們使用熟悉的容器 CLI 命令在生產(chǎn)環(huán)境中管理和維護(hù)這些鏡像和容器,而 Buildah 主用于構(gòu)建容器。

項(xiàng)目地址:https://github.com/containers/buildah

Skopeo

Skopeo 是一個(gè)鏡像管理工具,允許我們通過(guò) Push、Pull和復(fù)制鏡像來(lái)處理 Docker和符合 OCI 規(guī)范的鏡像。

項(xiàng)目地址:https://github.com/containers/skopeo

延伸閱讀

什么是 OCI?

OCI (Open Container Initiative),是一個(gè)輕量級(jí),開(kāi)放的治理結(jié)構(gòu)(項(xiàng)目)。在 Linux 基金會(huì)的支持下成立,致力于圍繞容器格式和運(yùn)行時(shí)創(chuàng)建開(kāi)放的行業(yè)標(biāo)準(zhǔn)。

OCI 項(xiàng)目由 Docker、CoreOS 和容器行業(yè)中的其領(lǐng)導(dǎo)者在 2015 年 6 月的時(shí)候啟動(dòng),OCI 的技術(shù)委員會(huì)成員包括 Red Hat、Microsoft、Docker、Cruise、IBM、Google、Red Hat 和 SUSE 等。

什么是 CRI?

CRI(Container Runtime Interface)是 Kubernetes v1.5 引入的容器運(yùn)行時(shí)接口,它將 Kubelet 與容器運(yùn)行時(shí)解耦,將原來(lái)完全面向 Pod 級(jí)別的內(nèi)部接口拆分成面向 Sandbox 和 Container 的 gRPC 接口,并將鏡像管理和容器管理分離到不同的服務(wù)。

什么是 CNI?

CNI(Container Network Interface)是 CNCF 旗下的一個(gè)項(xiàng)目,是 Google 和 CoreOS 主導(dǎo)制定的容器網(wǎng)絡(luò)標(biāo)準(zhǔn)。CNI 包含方法規(guī)范、參數(shù)規(guī)范等,是 Linux 容器網(wǎng)絡(luò)配置的一組標(biāo)準(zhǔn)和庫(kù),用戶可以根據(jù)這些標(biāo)準(zhǔn)和庫(kù)來(lái)開(kāi)發(fā)自己的容器網(wǎng)絡(luò)插件。CNI 已經(jīng)被 Kubernetes、Mesos、Cloud Foundry、RKT 等使用,同時(shí) Calico、Weave等項(xiàng)目都在為 CNI 提供插件。

總結(jié)

本文介紹三個(gè)了符合 CRI 標(biāo)準(zhǔn)的容器工具 Podman、 Buildah 和 Skopeo。這三個(gè)工具都是基于 *nix 傳統(tǒng)的 fork-exec 模型,解決了由于 Docker 守護(hù)程序?qū)е碌膯?dòng)和安全問(wèn)題,提高了容器的性能和安全。


分享名稱:再見(jiàn)Docker,是時(shí)候擁抱下一代容器工具了
URL分享:http://www.5511xx.com/article/dpsjggp.html