溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

containerd怎么編譯

發布時間:2021-12-20 09:41:16 來源:億速云 閱讀:874 作者:iii 欄目:云計算

這篇文章主要介紹“containerd怎么編譯”,在日常操作中,相信很多人在containerd怎么編譯問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”containerd怎么編譯”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

編譯containerd/runc
  1. 任意公有云廠商購買一臺虛擬機,綁fip(116.196.115.229)

  2. 登錄vm安裝go,并設置GOROOT/GOPATH環境變量
    [root@containerd bin]# wget https://dl.google.com/go/go1.12.5.linux-amd64.tar.gz
    [root@containerd bin]# tar -xvf go1.12.5.linux-amd64.tar.gz -C /usr/local

    [root@containerd bin]# /usr/local/go/bin/go version

    go version go1.12.5 linux/amd64
    編輯/root/.bash_profile文件,添加如下設置后sourcePATH=$PATH:/usr/local/go/bin
    export PATH

    export GOROOT=/usr/local/go/
    export GOPATH=/root/go[root@containerd ~]# source .bash_profile

  3. Build the development environment

    [root@containerd ~]# go get github.com/containerd/containerd
    [root@containerd ~]# wget -c https://github.com/google/protobuf/releases/download/v3.5.0/protoc-3.5.0-linux-x86_64.zip
    [root@containerd ~]# unzip protoc-3.5.0-linux-x86_64.zip -d /usr/local
    [root@containerd ~]# yum install -y btrfs-progs-devel libseccomp-devel

  4. 編譯runc
    [root@containerd ~]# go get github.com/opencontainers/runc[root@containerd containerd]# cd $GOPATH/src/github.com/opencontainers/runc

    [root@containerd runc]# make

    go build -buildmode=pie  -ldflags "-X main.gitCommit="eb4aeed24ffbf8e2d740fafea39d91faa0ee84d0">

    [root@containerd runc]# make install

    install -D -m0755 runc /usr/local/sbin/runc

    [root@containerd runc]# ls -rtl /usr/local/sbin

    total 11752

    -rwxr-xr-x 1 root root 12031832 May 10 17:33 runc

    [root@containerd runc]# runc --version

    runc version 1.0.0-rc8+dev

    commit: eb4aeed24ffbf8e2d740fafea39d91faa0ee84d0

    spec: 1.0.1-dev

  5. 編譯containerd
    [root@containerd runc]# cd $GOPATH/src/github.com/containerd/containerd
    [root@containerd containerd]# make
    + bin/ctr
    + bin/containerd
    + bin/containerd-stress
    + bin/containerd-shim
    + bin/containerd-shim-runc-v1
    + bin/containerd-shim-runc-v2
    + binaries
    [root@containerd containerd]# make install
    + install bin/ctr bin/containerd bin/containerd-stress bin/containerd-shim bin/containerd-shim-runc-v1 bin/containerd-shim-runc-v2

    [root@containerd containerd]# ls -rtl /usr/local/bin

    total 133152

    -rwxr-x--- 1 root root  4433736 Nov 14  2017 protoc

    -rwxr-xr-x 1 root root 29709728 May 10 17:35 ctr

    -rwxr-xr-x 1 root root 51831136 May 10 17:35 containerd

    -rwxr-xr-x 1 root root 25094688 May 10 17:35 containerd-stress

    -rwxr-xr-x 1 root root  7302016 May 10 17:35 containerd-shim

    -rwxr-xr-x 1 root root  8980256 May 10 17:35 containerd-shim-runc-v1

    -rwxr-xr-x 1 root root  8980320 May 10 17:35 containerd-shim-runc-v2


    [root@containerd containerd]# containerd --version
    containerd github.com/containerd/containerd v1.2.0-551-g57fbb16 57fbb16234fa6c8a61e5e907a4148ea3b05bce1d

  6. containerd以daemon方式運行

    1. 準備containered.service文件
      [root@containerd ~]# cat /usr/lib/systemd/system/containerd.service
      [Unit]
      Description=containerd container runtime
      Documentation=https://containerd.io
      After=network.target

      [Service]
      ExecStartPre=-/sbin/modprobe overlay
      ExecStart=/usr/local/bin/containerd

      Delegate=yes
      KillMode=process
      # Having non-zero Limit*s causes performance problems due to accounting overhead
      # in the kernel. We recommend using cgroups to do container-local accounting.
      LimitNPROC=infinity
      LimitCORE=infinity
      LimitNOFILE=1048576
      # Comment TasksMax if your systemd version does not supports it.
      # Only systemd 226 and above support this version.
      TasksMax=infinity

      [Install]
      WantedBy=multi-user.target

    2. enable設置開機自啟動
      [root@containerd system]# systemctl enable containerd.service
      Created symlink from /etc/systemd/system/multi-user.target.wants/containerd.service to /usr/lib/systemd/system/containerd.service.

    3. 準備containerd配置文件

      [root@containerd ~]# cat /etc/containerd/config.toml

      subreaper = true  

      oom_score = -999

      [debug]

       level = "debug"

      [metrics]

       address = "127.0.0.1:1338"

      [plugins.linux]

       runtime = "runc"

       shim_debug = true

    4. 啟動containerd服務
      [root@containerd system]# systemctl start containerd.service
      [root@containerd system]# systemctl status containerd.service
      ● containerd.service - containerd container runtime
         Loaded: loaded (/usr/lib/systemd/system/containerd.service; enabled; vendor preset: disabled)
         Active: active (running) since Fri 2019-05-10 17:55:35 CST; 4s ago
           Docs: https://containerd.io
        Process: 18319 ExecStartPre=/sbin/modprobe overlay (code=exited, status=0/SUCCESS)
       Main PID: 18321 (containerd)
          Tasks: 13
         Memory: 25.1M
         CGroup: /system.slice/containerd.service
                 └─18321 /usr/local/bin/containerd

      May 10 17:55:35 containerd containerd[18321]: time="2019-05-10T17:55:35.396003271+08:00" level=error msg="Failed to load cni during init, please check CRI plugin status before ... cni config"
      May 10 17:55:35 containerd containerd[18321]: time="2019-05-10T17:55:35.396193437+08:00" level=info msg="loading plugin \"io.containerd.grpc.v1.introspection\"..." type=io.containerd.grpc.v1
      May 10 17:55:35 containerd containerd[18321]: time="2019-05-10T17:55:35.396280636+08:00" level=info msg="Start subscribing containerd event"
      May 10 17:55:35 containerd containerd[18321]: time="2019-05-10T17:55:35.396365663+08:00" level=info msg="Start recovering state"
      May 10 17:55:35 containerd containerd[18321]: time="2019-05-10T17:55:35.396383092+08:00" level=info msg=serving... address=/run/containerd/containerd.sock.ttrpc
      May 10 17:55:35 containerd containerd[18321]: time="2019-05-10T17:55:35.396415058+08:00" level=info msg=serving... address=/run/containerd/containerd.sock
      May 10 17:55:35 containerd containerd[18321]: time="2019-05-10T17:55:35.396427216+08:00" level=info msg="containerd successfully booted in 0.003786s"
      May 10 17:55:35 containerd containerd[18321]: time="2019-05-10T17:55:35.396435091+08:00" level=info msg="Start event monitor"
      May 10 17:55:35 containerd containerd[18321]: time="2019-05-10T17:55:35.396459564+08:00" level=info msg="Start snapshots syncer"
      May 10 17:55:35 containerd containerd[18321]: time="2019-05-10T17:55:35.396468105+08:00" level=info msg="Start streaming server"
      Hint: Some lines were ellipsized, use -l to show in full.

準備rootfs和spec
  1. 找另外一臺安裝了整套docker的機器(此處用本地oracle linux vm 10.12.162.67),制作測試所需的rootfs(bundle)文件

    1. 創建 busybox/rootfs目錄
      [root@localhost ~]# mkdir -p busybox/rootfs

    2. 拉取busybox鏡像

      [root@localhost ~]# docker pull busybox

      Using default tag: latest

      latest: Pulling from library/busybox

      53071b97a884: Pull complete

      Digest: sha256:32f65f5aae307c171fc69ce52be3c8b09675164a610a88efa607449311186378

      Status: Downloaded newer image for busybox:latest

    3. 創建docker

      [root@localhost ~]# docker create --name tempbusybox busybox

      85b6e32db75da001669656b452a9a65fc2de7f1a9faac95c5aedf6de1127fa15

    4. 導出rootfs和spec

      [root@localhost ~]# docker export tempbusybox | tar -C busybox/rootfs -xf -

      [root@localhost ~]# cd busybox/ &&  /usr/bin/docker-runc spec

      [root@localhost busybox]# ls

      config.json  rootfs

      [root@localhost busybox]# ls rootfs/

      bin  dev  etc  home  proc  root  sys  tmp  usr  var

    5. 將rootfs和spec 拷貝到containered測試節點 116.196.115.229
      [root@localhost ~]# scp -r busybox/ root@116.196.115.229:/root

測試
  1. [root@containerd busybox]# cd /root/busybox

  2. 利用containerd cli (/usr/local/bin/ctr)運行容器
    [root@containerd busybox]# ctr run -t -d --rootfs rootfs busybox /bin/sh

    [root@containerd busybox]# ctr container list

    CONTAINER    IMAGE    RUNTIME                           

    busybox      -        io.containerd.runtime.v1.linux

    [root@containerd busybox]# ps -ef |grep container

    root      9539     1  0 21:22 ?        00:00:03 /usr/local/bin/containerd

    root     15285  9539  0 22:02 ?        00:00:00 containerd-shim -namespace default -workdir /var/lib/containerd/io.containerd.runtime.v1.linux/default/busybox -address /run/containerd/containerd.sock -containerd-binary /usr/local/bin/containerd -debug

  3. 登錄容器驗證

    [root@containerd busybox]# ctr tasks list

    TASK       PID      STATUS    

    busybox    15301    RUNNING

    [root@containerd busybox]# ctr tasks exec -t  --exec-id 15301 busybox /bin/sh

    / # hostname

    containerd

    / # ip a

    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1

        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

        inet 127.0.0.1/8 scope host lo

           valid_lft forever preferred_lft forever

        inet6 ::1/128 scope host

           valid_lft forever preferred_lft forever

  4. stop容器
    [root@containerd busybox]# ctr tasks kill --signal 9 busybox

    [root@containerd busybox]# ctr tasks list

    TASK       PID      STATUS    

    busybox    15301    STOPPED

  5. 刪除容器

    [root@containerd busybox]# ctr container delete busybox

    [root@containerd busybox]# ctr container list

    CONTAINER    IMAGE    RUNTIME

到此,關于“containerd怎么編譯”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女