iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 4
4
DevOps

用30天來介紹和使用 Docker系列 第 4

Day4:用簡單的例子來說明如何使用 Docker 指令

昨天我們已經把 Docker 安裝完成,並且也把 Service 執行起來了,今天就用一個簡單的例子來體驗 Docker 的command line要如何操作。

實作目標就是先從 Docker Hub 上把 Ubuntu OS 的 image pull 到 local,有了 image 之後就可以把 Docker container 執行起來,然後進入到 container 裡面安裝和啟動 Apache 的 HTTP Service,並且寫一個有 HelloWorld 字串的 HTML 檔案。最後使用 Browser 連到 Docker Container 裡面的 HTTP Service,確認 HelloWorld 的字串能正常的顯示出來。

我簡單的整理一下,今天要實作的流程如下:

  1. 從 Docker Hub 下載 Docker Image 到 local
  2. 使用 Docker Image 啟動 Docker Container 並進入 Docker Container的terminal
  3. 在 Docker Container 裡面安裝 Apache 的 HTTP Service,並且寫一個 helloworld 的 html 檔
  4. 使用 Browser 連到 helloworld.html 確認 Docker Container 有成功的被啟動起來

實作如下:

一.從 Docker Hub下載 Ubuntu 的 Docker Image 到 local
1.要下載 Docker Image 之前需要先搜尋一下,Docker Image 的 Name 是什麼,指令如下:
指令如下:

$ docker search ubuntu -f is-official=true

is-official=true 表示要搜尋是官方的 Docker image
搜尋結果如下圖
https://ithelp.ithome.com.tw/upload/images/20171207/20103456ocbmfiA8PQ.png

就選擇星星數最多的 Name 為 ubuntu

2.找到了 ubuntu 的 Docker Image Name 之後,就可以把此 image pull 下來,指令如下:

$ docker pull ubuntu

執行結果如下圖
https://ithelp.ithome.com.tw/upload/images/20171207/201034568vl1SG5Qv2.png

3.要再一次確認 ubuntu 的docker image有沒有下載下來,可以使用以下的指令

$ docker images

如下圖
https://ithelp.ithome.com.tw/upload/images/20171207/201034560udrW6Dyyz.png

二. 有了 Docker Image 之後就可以把 container 執行起來了並且進入 Docker Container 的 terminal 裡面,指令如下

$ docker run -it ubuntu /bin/bash 

使用以上的指令就可以進入了docker container 裡面的 terminal
https://ithelp.ithome.com.tw/upload/images/20171207/20103456CqWyfKRWx8.png

可以再打開另外一個terminal視窗,輸入以下指令

$ docker ps -a

確認 docker container 有正常的執行,如下圖:
https://ithelp.ithome.com.tw/upload/images/20171207/201034561JzE5FqXl0.png

在要離開 docker container 的 terminal 時有一個坑。就是如果輸入 exit 指令時,container 會被關閉,如下圖:
https://ithelp.ithome.com.tw/upload/images/20171207/20103456o52mlrYmiA.png

如果不要停止 container 而要退出 docker container 的terminal 需要輸入ctrl + p之後再輸入 ctrl + q 的按鍵,就不會把 container 關閉。

三. 在 docker container 裡面安裝和啟動 apache 的 http service ,指令如下

root@a52350de4ffa:/# apt-get update
root@a52350de4ffa:/# apt-get install -y apache2
root@a52350de4ffa:/# service apache2 start

簡單寫一個 hellowolrd.html檔案放在 /var/www/html 的路徑下,指令如下

root@a52350de4ffa:/# echo "HelloWorld" > /var/www/html/helloworld.html

使用cat /etc/hosts指令查看 docker container 的 IP 如下圖:
https://ithelp.ithome.com.tw/upload/images/20171207/20103456j50XbIp1MV.png

如果想要使用 ifconfig指令,需要安裝 net-tools工具指令如下

root@a52350de4ffa:/# apt-get install -y net-tools

**四. 使用 browser 輸入 http://172.17.0.2/helloworld.html 的 URL 查看 helloworld.html 的檔案是否能正常的顯示,畫面如下: **
https://ithelp.ithome.com.tw/upload/images/20171207/201034568wuJsZIrCL.png

整理一下今天有使用到的 Docker 指令如下:
docker search 搜尋 Docker Image 有哪些的指令
docker pull 指 Docker Image 下載回 local
docker images 顯示出在 local 下載了哪些 Docker Image
docker run 使用 Docker Image 啟動執行 Docker Container
docker ps 顯示了啟動了哪些的 Docker Container

今天主要的目的是要讓大家簡單的來體驗一下 Docker 指令要如何的使用,其實這之間還有很多的細節還沒有被提到,像是要如何撰寫Dockerfile 讓操作更自動化、如何Build image、 container 的網路設定……等等的內容,在未來都還會再提到。


上一篇
Day3: 如何安裝和啟動 Docker
下一篇
Day5: 實作撰寫第一個 Dockerfile
系列文
用30天來介紹和使用 Docker30

2 則留言

2
rockywang
iT邦新手 5 級 ‧ 2018-11-18 08:42:16

windows 10 上看起來預設是無法直接存取內部 ip 的,需加上 route

route /P add 172.17.0.0 MASK 255.255.255.0 10.0.75.2

sprigga iT邦新手 5 級‧ 2019-04-11 10:49:13 檢舉

請問你這是什麼意思?

呃,就如字面上的意思,是無法直接存取的,你用 windows 10 試試應該就知道了

0
trt0425
iT邦新手 5 級 ‧ 2019-04-20 15:23:17

不好意思 我網站連不進去
都是說連線時間過長

試著把啟動 container的那台機器防火牆關閉看看

我要留言

立即登入留言