天天看點

Docker學習筆記(二)使用容器部署一個Web應用Docker中容器和鏡像的概念在docker容器中運作一個Web應用

Docker中容器和鏡像的概念

鏡像和容器類比于面向對象程式設計中的類和對象的概念

下面這個例子是從網上下載下傳一個 ubuntu:15.10的鏡像(類), 然後使用該鏡像在本地運作了一個容器(該類生成的執行個體), 這裡的容器就相當于一個精簡的ubuntu系統,我們在這個ubuntu系統裡運作了指令

一個例子

[email protected]:~$ docker run ubuntu:15.10 /bin/echo "Hello world"
Hello world
           
  • docker: Docker 的二進制執行檔案。
  • run:與前面的 docker 組合來運作一個容器。
  • ubuntu:15.10指定要運作的鏡像,Docker首先從本地主機上查找鏡像是否存在,如果不存在,Docker 就會從鏡像倉庫 Docker Hub 下載下傳公共鏡像。
  • /bin/echo “Hello world”: 在啟動的容器裡執行的指令

以上指令完整的意思可以解釋為:Docker 以 ubuntu15.10 鏡像建立一個新容器,然後在容器裡執行 bin/echo “Hello world”,然後輸出結果。

在docker容器中運作一個Web應用

這裡運作python中基于flask的Web應用

docker pull training/webapp # 首先下載下傳鏡像
docker run -d -P training/webapp python app.py # 運作容器
           

其中

  • -d

    表示背景運作

  • P

    表示容器的端口直接映射在本主機上

  • 使用

檢視正在使用的容器,如下

[[email protected] ~] docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                     NAMES
0ddbf3212ac4        training/webapp     "python app.py"     18 minutes ago      Up 18 minutes       0.0.0.0:32768->5000/tcp   heuristic_stallman
           
我們發現我們的Web應用容器的資訊如下
  • CONTAINER ID (容器的唯一ID)

    0ddbf3212ac4

  • IMAGE (該容器所屬的鏡像)

    training/webapp

  • COMMAND (該容器執行的指令)

    “python app.py”

  • CREATED (建立時間)

    18 minutes ago

  • STATUS (狀态)

    Up 18 minutes

  • PORTS (使用-P選項獨有的狀态,顯示占用的端口号和使用的網絡協定)

    0.0.0.0:32768->5000/tcp

  • NAMES(該容器的"花名")

    heuristic_stallman

既然是一個Web應用,我們在本地浏覽器上輸入IP位址和端口号,發現部署成功

Docker學習筆記(二)使用容器部署一個Web應用Docker中容器和鏡像的概念在docker容器中運作一個Web應用
  • 在Web應用中 使用 -p 來指定容器端口号到主機端口号的映射
docker run -d -p 8080:8888 training/webapp python app.py
           

讓容器的8080端口映射到主機的8888端口

  • 快捷的檢視WEB應用程式容器端口号 docker port +容器ID / 容器花名
docker port heuristic_stallman  
5000/tcp -> 0.0.0.0:5000
           
  • 檢視WEB應用程式容器内的标準輸出 docker logs + 容器ID / 容器花名
[[email protected] ~]docker logs heuristic_stallman 
 * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
192.168.13.12 - - [11/Oct/2018 07:43:00] "GET / HTTP/1.1" 200 -
192.168.13.12 - - [11/Oct/2018 07:43:01] "GET /favicon.ico HTTP/1.1" 404 -
           
  • 檢視WEB應用程式容器内部的程序 docker top
  • 檢視WEB應用程式容器 docker inspect
  • 容器的啟動停止删除 分别對應 docekr run/stop/rm + 容器ID / 容器花名

    注意删除前必須停止容器

繼續閱讀