Container(容器)概述

陳照昌 Sam Chen

  • 精誠資訊/恆逸教育訓練中心-資深講師
  • 技術分類:網路管理與通訊應用

 

 

前言

資訊時代的來臨,讓我們周遭的生活環境起了相當大的變化,生活和電腦資訊已是密不可分。電腦的時代也進入了虛擬化的世界,開始出現雲端科技,虛擬化電腦、網路、儲存裝置…等等,在這不斷的演進過程,Container(容器)逐漸浮出檯面開始流行,它是一種將應用程式從現行執行環境抽離出來的概念。


Container 觀念

Container 事實上很久之前就出現了,Container和VM(虛擬機器)最大不同點的地方,在於VM有自己的作業系統,共用主機的硬體資源,而 Container並沒有自己的作業系統,而是共用主機的作業系統。Container比起VM使用更少的資源,因此可以更快速的啟動或停止,甚至可以根據需求自動擴展或減少Container的數量。

Container管理工具

Red Hat Enterprise Linux 8有自己管理 Container的工具,您可以透過以下指令將工具安裝起來。

    [root@server1 ~]# yum module install container-tools

podman 這個指令用來直接管理containers及container images。
skopeo 這個指令用來調查、複製、刪除及簽章images。
buildah 這個指令用來建立新的container images。
這些指令取代了docker指令,也就是說 RHEL 8已經移除了Docker container engine。


測試執行 Container

以下使用CentOS 8 Linux主機,將一個具有httpd的image執行成container的步驟:
1.找到或登入具有container images的registry,以下範例registry為docker.io
2.從 images 的registry中,將含有httpd-24-centos8的image下載到硬碟中。

    [root@server1 ~]# podman pull docker.io/centos/httpd-24-centos8

3.使用 podman images查看硬碟中以下載的images。

    [root@server1 ~]# podman images
    REPOSITORY                          TAG      IMAGE ID       CREATED       SIZE
    docker.io/centos/httpd-24-centos8   latest   7d2fe0e482ba   8 weeks ago   441 MB

4.使用 podman run -d將硬碟中的images執行成一個 container起來,以這個例子而言,是將主機的tcp port 8000對應到container的tcp port 8080。

    root@server1 ~]# podman run -d -p 8000:8080 docker.io/centos/httpd-24-centos8
    478e16551e57d399fdb5831ef479d395b10cb0ea3f77c6d0e9093ecc4b445043    

5.有必要時,須將主機的防火牆 tcp port 8000 允許通過。

    [root@server1 ~]# firewall-cmd --add-port=8000/tcp
    success

6.可以使用 podman ps 查看主機上執行的 container。

    [root@server1 ~]# podman ps
    CONTAINER ID     IMAGE                                      COMMAND               CREATED        
    478e16551e57  docker.io/centos/httpd-24-centos8:latest  container-entrypo...  2 minutes ago   
    
    STATUS                         PORTS               NAMES
    Up About a minute ago  0.0.0.0:8000->8080/tcp  elegant_boyd 

7.使用 podman exec進入container中,放入首頁 index.html。

    podman exec -it -l /bin/bash
    bash-4.4$ cd /var/www/html
    bash-4.4$ echo 'This is a container web site' > index.html
    bash-4.4$ exit
    exit
    [root@server1 ~]#    

8.從另一台主機執行測試!! 可以存取到Container Apach HTTP中的首頁!!!

    [root@server2 ~]# curl http://192.168.47.132:8000/
    This is a container web site    

結語

您瞧,您可以很輕鬆的使用Container在主機中執行您希望的工作,免去了架設虛擬機器還得安裝作業系統等等的繁複工作,甚至可以節省主機資源,這就是 Container強大之處。


您可在下列課程中了解更多技巧喔!