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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章