1. 程式人生 > >docker入門實踐,我與你一起實戰演練

docker入門實踐,我與你一起實戰演練

檢視本地所有的映象

docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
nginx               latest              7b2ec12a5042        3 months ago        109 MB
tomcat              8                   fb269ccd26c4        3 months ago        462.5 MB
redis               latest              40b1f67fd3d4        3 months ago        83.38 MB
hello-world         latest              3535063d9957        3 months ago        1.848 kB
centos              latest              88ec626ba223        4 months ago        199.7 MB

以某個映象來啟動容器

通過上一步的執行命令中可以找到一個命名為centos(image id : 88ec626ba223)的映象
接下來就以這個映象來啟動容器吧

docker run -i -t -v /export/:/export/ 88ec626ba223 /bin/bash

這條命令比較長,我們稍微分解一下,其實包含以下三個部分:
  docker run <相關引數> <映象 ID> <初始命令>
其中,相關引數包括:
  -i:表示以“互動模式”執行容器
  -t:表示容器啟動後會進入其命令列
  -v:表示需要將本地哪個目錄掛載到容器中,格式:-v <宿主機目錄>:<容器目錄>

在容器中建立應用

這裡以建立執行指令碼/root/run.sh為例,並編輯如下內容

more /root/run.sh
#!/bin/bash
echo "hello world,this  docker ceated by liuzhichong"

chmod 777 /root/run.sh

從容器中退出

當以上步驟全部完成後,可使用exit命令,退出容器。

exit

檢視正在執行的容器

docker ps

此時,您應該看不到任何正在執行的程式,因為剛才已經使用exit命令退出的容器,此時容器處於停止狀態,可使用如下命令檢視所有容器:

檢視歷史上所有構建過的容器

這裡說的歷史上其實不太恰當,歷史構建過的容器記錄是可以被刪除掉的

docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
bbf2b4978ada        88ec626ba223        "/bin/bash"         2 minutes ago       Exited (0) 39 seconds ago                       pensive_ptolemy

基於容器來構建映象

其中第2行

bbf2b4978ada        88ec626ba223        "/bin/bash"         2 minutes ago       Exited (0) 39 seconds ago                       pensive_ptolemy

就是剛剛執行過的容器,接下來基於此容器ID建立一個新的映象,命名為lzc

docker commit bbf2b4978ada lzc:0.1
#執行成功後會有下面這段話
3a36b5c11d9af887479718da116de4708802ad6b201628e4b3a15a4fc622e890

好了,我們執行下docker images看看當前是否多了一個名為lzc:0.1的映象

docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
lzc                 0.1                 92da51f3e691        3 seconds ago       199.7 MB
nginx               latest              7b2ec12a5042        3 months ago        109 MB
tomcat              8                   fb269ccd26c4        3 months ago        462.5 MB
redis               latest              40b1f67fd3d4        3 months ago        83.38 MB
hello-world         latest              3535063d9957        3 months ago        1.848 kB
centos              latest              88ec626ba223        4 months ago        199.7 MB

利用這個自制的映象(lzc:0.1)建立一個容器,進入去看看

docker run -i -t -v /export/:/export/ 92da51f3e691  /bin/bash
#會發現 /root 會有剛才建立的那個run.sh檔案喲
ll /root/
total 8
-rw------- 1 root root 3302 May 31 18:03 anaconda-ks.cfg
-rwxrwxrwx 1 root root   55 Nov  1 07:59 run.sh

/root/run.sh(可以看到如下這段話的輸出)
hello world,this  docker ceated by liuzhichong
#一切正常,我們退出吧
exit

利用這個映象(lzc:0.1)建立一個容器,也可以直接指定去執行映象裡的指令碼來執行

docker run --name lzchello2 lzc:0.1 /root/run.sh
hello world,this  docker ceated by liuzhichong

稍作解釋:
  -d:表示以“守護模式”執行/root/run.sh指令碼,此時這名話“hello world,this  docker ceated by liuzhichong” 就不會輸出到控制檯了
  -p:表示宿主機與容器的埠對映,示例(-p 58080:8080)此時將容器內部的 8080 埠對映為宿主機的 58080 埠,這樣就向外界暴露了 58080 埠,可通過 Docker 網橋來訪問容器內部的 8080 埠了。(上述示例用不上埠對映,所以命令中沒有使用到)
  --name:表示容器名稱,用一個有意義的名稱命名即可。(這個地方的容器名稱,不能重複,否則會報錯)

其它命令

刪除容器

#docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
9a374293d76c        92da51f3e691        "/root/run.sh"      2 minutes ago                                                       lzchello4
0d8966feb95c        92da51f3e691        "/bin/bash"         3 minutes ago       Exited (0) 3 minutes ago                        thirsty_brown
4065ea595192        lzc:0.1             "/root/run.sh"      5 minutes ago                                                       lzchello3
5c6c0011f490        lzc:0.1             "/root/run.sh"      6 minutes ago                                                       lzchello2
87bd93e1ca3e        92da51f3e691        "/bin/bash"         8 minutes ago       Exited (0) 8 minutes ago                        hopeful_thompson
bbf2b4978ada        88ec626ba223        "/bin/bash"         14 minutes ago      Exited (0) 12 minutes ago                       pensive_ptolemy

# docker rm 9a374293d76c 0d8966feb95c 4065ea595192 5c6c0011f490 87bd93e1ca3e

刪除映象

#docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
lzc                 0.1                 92da51f3e691        12 minutes ago      199.7 MB
nginx               latest              7b2ec12a5042        3 months ago        109 MB
tomcat              8                   fb269ccd26c4        3 months ago        462.5 MB
redis               latest              40b1f67fd3d4        3 months ago        83.38 MB
hello-world         latest              3535063d9957        3 months ago        1.848 kB
centos              latest              88ec626ba223        4 months ago        199.7 MB

#docker rmi lzc:0.1
Untagged: lzc:0.1
Deleted: 92da51f3e69192df4038e7c0602664350449546212d3f73a22b070971bba89b5