日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

查看docker运行状态_docker商业版受限?请了解下crio

發布時間:2025/1/21 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 查看docker运行状态_docker商业版受限?请了解下crio 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Talk is cheap in Open Source, ?show me the way to achieve!

--大魏

關于CRI-O前世今生:

  • 最早的容器格運行時是lxc
  • Docker最早讓容器火起來,docker最開始用lxc,覺得隔離性差,開發libcontainer,最終形成runc。所以說,runc是docker的獨生子。
  • K8S時,發現市面上docker挺火,因此就用docker。
  • docker越做越重,CoreOS做了rkt容器格式。rkt與K8S協同工作比較好。
  • 容器運行時格式有點多了,linux基金會主導的開源項目說:我們要做一個container runtime標準。叫OCI。以后容器運行時要符合這個標準。docker的獨生子runc在第一時間符合了OCI標準。
  • K8S為了與容器運行時解耦(主要是docker),提出了CRI(Container Runtime Interface)標準。它是一組與K8S與container runtime進行交互的接口。所以說,CRI和OCI并不沖突:K8S定義的是它調用容器運行時的標準接口,OCI定義的是容器運行時本身的標準。
  • OCI關于容器運行時的標準提出來以后,紅帽想可以專門為K8S做一個輕量級的容器運行時。紅帽自然會考慮到它自己全力投入的K8S發布的CRI標準(K8S紅帽代碼貢獻第二),因此決定重用了runc等基本組件來啟動容器, 并實現了一個最小的 CRI 接口。它叫CRI-O。所以說,CRI-O是CRI的一種標準實現。
  • 當Red Hat正在開發其CRI-O,Docker也在研究CRI標準,這導致創建了另一個名為containerd的運行時(實際上是從docker engine剝離出來的)。所以新版本的docker會多一層containerd。kubernetes將containerd接入到cri的標準中。即cri-containerd。
  • 由于容器的和K8S的發展史,最終暫時形成如下局面:從概念上,從PaaS頂層到底層的調用關系是:Orchestration API ->ContainerEngine API ->Kernel API現有pass平臺的調用架構(OpenShift3的模式,調用了docker):KubernetesMaster->Kubelet->DockerEngine-> containerd -> runc -> Linux Kernel紅帽的主張是(OpenShift4的模式):Kubernetes Master->Kubelet-> CRI-O -> runc ->Linux kernel有一些開發者想用如下的模式:KubernetesMaster->Kubelet->CRI-containerd->containerd -> runc ->Linux kernel

    CRIO對于企業而言,最大的好處了消除了docker守護進行的單點故障。

    接下來,本文驗證下docker和CRIO在進程停止情況下容器的表現。

    在RHEL7.8上運行docker 13.1.

    [root@repo ~]# cat /etc/redhat-release

    Red Hat Enterprise Linux Server release 7.8 (Maipo)

    [root@repo ~]# docker version

    Client:

    ?Version:? ? ? ? ?1.13.1

    ?API version:? ? ?1.26

    ?Package version: docker-1.13.1-161.git64e9980.el7_8.x86_64

    ?Go version:? ? ? go1.10.3

    ?Git commit:? ? ? 64e9980/1.13.1

    ?Built:? ? ? ? ? ?Tue Mar? 3 09:15:29 2020

    ?OS/Arch:? ? ? ? ?linux/amd64

    Server:

    ?Version:? ? ? ? ?1.13.1

    ?API version:? ? ?1.26 (minimum version 1.12)

    ?Package version: docker-1.13.1-161.git64e9980.el7_8.x86_64

    ?Go version:? ? ? go1.10.3

    ?Git commit:? ? ? 64e9980/1.13.1

    ?Built:? ? ? ? ? ?Tue Mar? 3 09:15:29 2020

    ?OS/Arch:? ? ? ? ?linux/amd64

    ?Experimental:? ? false

    docker處于運行狀態:

    這個版本的docker已經包含了containerd:

    [root@repo ~]# systemctl status docker |grep -i containerd

    ? ? ? ? ? ?├─3027 /usr/bin/docker-containerd-current -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --metrics-interval=0 --start-timeout 2m --state-dir /var/run/docker/libcontainerd/containerd --shim docker-containerd-shim --runtime docker-runc --runtime-args --systemd-cgroup=true

    ? ? ? ? ? ?└─3149 /usr/bin/docker-containerd-shim-current b076f2741f964d0c691f308e53b2096d98abb1aef44c134963eff6209fbb8c60 /var/run/docker/libcontainerd/b076f2741f964d0c691f308e53b2096d98abb1aef44c134963eff6209fbb8c60 /usr/libexec/docker/docker-runc-current

    其架構圖是:

    我通過docker運行一個gogs容器:

    [root@repo ~]# docker ps

    CONTAINER ID? ? ? ? IMAGE? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? COMMAND? ? ? ? ? ? ? ? ? CREATED? ? ? ? ? ? ?STATUS? ? ? ? ? ? ? PORTS? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? NAMES

    b076f2741f96? ? ? ? repo.ocp4.example.com:5000/gogs/gogs? ?"/app/gogs/docker/..."? ?8 days ago? ? ? ? ? Up 13 minutes? ? ? ?0.0.0.0:10022->22/tcp, 0.0.0.0:10080->3000/tcp? ?gogs

    瀏覽器訪問gogs,正常:

    停止docker進程:

    [root@repo ~]# systemctl stop docker

    [root@repo ~]# systemctl status docker

    查看運行的docker容器,已經無法查看:

    [root@repo ~]# docker ps

    Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

    瀏覽器訪問失敗。

    接下來,我使用我安裝好的一套OCP4驗證CRIO。

    查看在worker-0上運行的pods,26個:

    [centos@lb.weixinyucluster3 ~]$ oc get pods -A -o wide? |grep -i worker-0 |grep -i running |wc -l

    26

    登錄worker-0,查看crio進程狀態:

    關閉crio進程:

    [root@worker-0 ~]# systemctl stop crio

    查看運行在worker-0上的pod數量,依然是26個:

    [centos@lb.weixinyucluster3 ~]$ oc get pods -A -o wide? |grep -i worker-0 |grep -i running |wc -l

    26

    啟動worker-0節點上的crio,查看其版本:

    [root@worker-0 ~]# systemctl start crio

    接下來,看一下如何運維CIR-O。主要使用podman。

    Podman曾經是CRI-O項目中的一部分,后來被分離出成為一個獨立項目,libpod.Podman(Pod Manager)的目標是提供一個跟Docker相似體驗的容器CLI,提供給使用者創立和運行容器。podman不需要守護程序,利用用戶命名空間模擬容器中的 root,所以 Podman 不需要接入具有 root 權限的 socket。

    除了podman外,還有buildah和skopeo兩個輔助工具。
    • buildah實現的是dockerfile的腳本化執行。
    • podman對標的是docker命令的代替。
    podman命令行如下:podman images - list imagespodman ps - lists running containerspodman pull - pulls (copies) container image from repository (ie: redhat and/or docker hub)podman run - run a containerpodman logs - display logs of a container (can be used with --follow)podman rm - remove one or more containerspodman rmi - remove one or more imagespodman stop - stops one or more containerspodman kill $(podman ps -q) - kill all running containerspodman rm $(podman ps -a -q) - deletes all stopped containerspodman 原生支持runc。[root@workstation ~]# podman infohost:BuildahVersion: 1.6-devConmon:package: podman-1.0.0-2.git921f98f.module+el8+2785+ff8a053f.x86_64path: /usr/libexec/podman/conmonversion: 'conmon version 1.14.0-dev, commit: be8255a19cda8a598d76dfa49e16e33? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?7769d4528-dirty'Distribution:distribution: '"rhel"'version: "8.0"MemFree: 2311213056MemTotal: 3964555264?OCIRuntime:?package: runc-1.0.0-54.rc5.dev.git2abd837.module+el8+2769+577ad176.x86_64path: /usr/bin/runcversion: 'runc version spec: 1.0.0'SwapFree: 1073737728SwapTotal: 1073737728arch: amd64cpus: 2hostname: workstation.example.comkernel: 4.18.0-67.el8.x86_64os: linuxrootless: falseuptime: 1h 38m 30.4s (Approximately 0.04 days)insecure registries:registries:- core.example.com:5000registries:registries:- registry.redhat.io- quay.io- docker.io- registry.fedoraproject.org- core.example.com:5000store:ConfigFile: /etc/containers/storage.confContainerStore:number: 0GraphDriverName: overlayGraphOptions:- overlay.override_kernel_check=trueGraphRoot: /var/lib/containers/storageGraphStatus:Backing Filesystem: xfsNative Overlay Diff: "true"Supports d_type: "true"ImageStore:number: 0RunRoot: /var/run/containers/storage查看鏡像:

    想更多關注OCP和云原生?請關注書籍:

    參考:https://lwn.net/Articles/741897/https://xuxinkun.github.io/2017/12/12/docker-oci-runc-and-kubernetes/http://crunchtools.com/competition-heats-up-between-cri-o-and-containerd-actually-thats-not-a-thing/https://yq.aliyun.com/articles/66626https://blog.csdn.net/u013812710/article/details/79001463https://www.yangcs.net/posts/cri-o/

    總結

    以上是生活随笔為你收集整理的查看docker运行状态_docker商业版受限?请了解下crio的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。