前文回顧:git
有了鏡像的基礎,下面就開始建立容器吧。Docker 容器很是輕量級,隨時均可以建立和刪除,很是方便。github
使用 docker run
命令來建立並啓動一個容器:docker
$ docker run -it centos /bin/echo 'hello world'
hello world
複製代碼
-t
參數讓 Docker 分配一個僞終端,並綁定到容器的標準輸入上,-i
參數讓容器的標準輸入持續打開。shell
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
df84684c3888 centos "/bin/echo 'hello wo…" 10 seconds ago Exited (0) 7 seconds ago admiring_noyce
複製代碼
docker ps
命令列出當前的容器,能夠看到,剛剛執行的容器輸出完信息以後就直接退出了。那有沒有辦法讓容器在後臺執行呢?答案固然是能夠的。centos
使用 -d
參數讓容器在後臺,以守護進程的方式執行,這也是在工做中最經常使用到的。bash
$ docker run -d centos /bin/sh -c "while true; do echo hello world; sleep 1; done"
fcb07a324388d58883e212ff5675ad7947a22c731f677d1a37ff7bc3d8bfa9a7
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fcb07a324388 centos "/bin/sh -c 'while t…" 6 seconds ago Up 5 seconds beautiful_northcutt
複製代碼
這樣容器就在後臺運行了。微信
還有一種方式,使用 docker create
命令建立容器,而後使用 docker start
來啓動容器,兩條命令至關於 docker run
一條,這種方式不經常使用,就不作更多介紹了。post
下面聊聊 docker run
背後的故事,到底這一條命令背後,Docker 都爲咱們作了哪些操做呢?ui
當容器之後臺方式執行時,使用 docker exec
命令進入到容器中。spa
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fcb07a324388 centos "/bin/sh -c 'while t…" 6 seconds ago Up 5 seconds beautiful_northcutt
$ docker exec -it fcb07a324388 /bin/bash
[root@fcb07a324388 /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
[root@fcb07a324388 /]#
複製代碼
進入到容器以後,就是一個 Linux 系統,Linux 支持的命令,容器也基本都支持。
這條命令仍是比較重要的,有時候咱們的應用出問題了,單純經過 logs 看不出問題的話,就須要咱們進入容器,來看看實際狀況。
想退出的話,直接 exit
命令就能夠了。
還有一個命令是 docker attach
,可是它有一個缺點。當多個窗口同時 attach 到同一個容器時,全部窗口都會同步顯示,當某個窗口因命令阻塞時,其餘窗口也沒法執行操做。
因此,這個命令如今基本也不用了。
使用 docker stop
命令來中止一個容器。
$ docker stop fcb
fcb
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fcb07a324388 centos "/bin/sh -c 'while t…" 23 minutes ago Exited (137) 4 seconds ago beautiful_northcutt
複製代碼
若是再想啓動的話,使用 docker start
。
上文已經介紹過了,使用 docker ps
命令查看當前容器。
使用 docker logs
查看容器日誌輸出。
使用 docker container inspect
命令查看容器的詳細信息。
使用 docker top
命令查看容器內進程信息,相似 Linux 下的 top 命令。
使用 docker stats
命令查看容器 CPU,內存,儲存等信息。
使用 docker container port
查看容器的端口映射狀況。
使用 docker export
命令導出一個容器到文件。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fcb07a324388 centos "/bin/sh -c 'while t…" 34 minutes ago Up 9 minutes beautiful_northcutt
$ docker export -o centos.tar fcb
$ ls
centos.tar
複製代碼
使用 docker import
命令將容器文件導入成本地鏡像。
$ docker import centos.tar test/centos
sha256:f994c062dae063ffb8c97191d951b9beaac73d99023120191dbbc9741d725578
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
test/centos latest f994c062dae0 6 seconds ago 237MB
複製代碼
在上一篇文章中介紹了一個 docker load
命令,一樣是將文件導入成本地鏡像,那兩者有什麼區別呢?
容器快照文件將丟棄全部歷史記錄和元數據信息,而鏡像存儲文件將保存完整記錄,但體積更大。
使用 docker rm
命令來刪除已經中止的容器,若是容器正在運行,能夠加 -f
參數進行強制刪除。
參考文檔:
書籍《Docker 技術入門與實戰》
www.dockerinfo.net/docker%e5%a…
往期精彩:
技術博客:
同時,也歡迎關注個人微信公衆號 AlwaysBeta,更多精彩內容等你來。