昨天已經有介紹執行 Docker Container 所常用到的指令,還有一些指令還沒有介紹到,今天就來繼續來使用到還沒有被介紹到的指令。
在開始之前先來回顧一下,昨天有使用到的指令:docker run
:用來執行 containerdocker logs
:用來查看 container 的 log 訊息docker ps
:用來顯示有哪些container 在執行,如果下-a
參數把沒有執行的列出來docker rm
:刪除 containerdocker rmi
:刪除 Docker Image
今天就來繼續介紹其它還沒有被使用到的指令:
Example 1:
如果要進入 container 看有哪些資料夾、檔案或是要修改檔案可以使用以下的指令:
$ docker exec -it nginx /bin/bash
nginx 為 Container Name,也可以使用 Container ID
進入 container 操作資料的方式有很多,但是 Docker 不建議直接使用 ssh 連到 Container 裡面去操作資料,主要是考量到安全性和每一個 container 都是一個process,所以不希望使用 ssh 直接進入 Container 裡面,應該要使用 Docker 提供的 docker exec
指令。
執行畫面如下
Example 2:
Docker Container 被 stop 停止時,可以使用 docker start
指令把 Container重新啟動起來,指令如下
$ docker start nginx
nginx 是 Container Name,也可以吏用 Container ID
執行畫面如下
Example3:
前面有說到如果把 Docker 的 Container 刪除掉,之前寫入的資料就會不見,可以使用 docker export
指令,把 Docker Container 包含可讀可寫那一層也匯出成一個檔案,如下:
(1) 先進入 Container 裡,新增一個檔案
$ docker exec -it nginx /bin/bash
$ echo "HELLOWORLD" > hello.txt
畫面如下:
(2) 使用以下的指令把 Container Export 成檔案
$ docker export nginx > nginx.tar
畫面如下:
Example4:
把上個 sample 匯出的檔案,可以使用 import 匯入進 Docker,這時它就會是一個 Docker Image,如下:
$ cat nginx.tar | docker import - nginxbak
nginx.tar 是上個 sample 匯出的檔案,nginxbak 是 Import 進 Docker 取得 Image Name。
執行的畫面如下圖
執行 container 並確認 hello.txt 的文字檔是存在的,畫面如下
Example5:
停止 Container 的執行可以使用以下的指令:
$ docker stop nginx
nginx 為 Container Name,也可以直接使用 Container ID
昨天和今天已經介紹了在 Docker Container 常用到的指令,如果能熟練的使用這些指令對在使用 Docker 上會有幫助,也能對 Docker 的運作更加的了解。
export 跟 save 出來的檔案會有差別嗎 ?
export 是把 Docker Container 存檔
save 是把 Docker Image 存檔
它們的檔案內容就是把 Docker Image 的檔案打包起來
export 會把修改 Image 的內容都打包?
save 單純存放原始的 Image ?
對可以這樣說。