docker入門實踐,我與你一起實戰演練
阿新 • • 發佈:2018-11-13
檢視本地所有的映象
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