第三章Docker基本使用

weixin_33807284發表於2019-03-04

本章重點:學習第一個docker容器,宿主機如何與Docker進行互動。本人習慣安裝在centos的linux系統中,所以之後將主要以centos的linux伺服器來介紹。
在介紹中會用到docker的一些命令,官方列出了docker的完整的命令列表。使用docker help或者man docker-run檢視。

一、檢視docker是否就緒

1、docker info 檢視docker程式是否正常工作,若未啟動可以使用start docker啟動守護程式
2、也可以通過docker version來檢視或者status docker來檢視狀態

二、執行第一個容器

1、建立容器的命令是docker run 命令,docker run 命令提供了Docker容器的建立到啟動的功能。
docker run -i -t ubuntu /bin/bash
意思是基於基礎映象ubuntu,-i標誌保證容器中的STDIN(標準輸入流)是開啟的,持久的標準輸入是互動式shell的“半邊天”,-t標誌則是另外“半邊天”,他告訴docker為要建立的容器分配一個偽tty終端。這樣,新建立的容器才能提供一個互動式shell。若要在命令列下建立一個我們能與之互動的容器,而不是一個執行後臺服務的容器,這兩個就是基本的引數。
2、首先docker會去本地檢查是否存在ubuntu映象,如果本地沒有映象的話,那麼docker會連線官方維護的docker Hub Register,檢視Docker Hub 中是否存在該映象,docker一旦找到該映象,就會下載並將其儲存到本地宿主機中。
也可以使用
docker pull 映象名 拉取預設映象倉庫中的docker映象,也可以刪除映象
docker rmi 映象名拉取或者刪除之後可以使用docker images來檢視當前的映象。 當前刪除映象之前需要先把基於此映象建立的所有容器先刪除掉,否則無法刪除掉映象的。刪除容器是docker rm 映象id
3、隨後Docker在檔案系統內部用這個映象建立了一個新容器。該容器擁有自己的網路、ip地址以及一個使用者和宿主機進行通訊的橋接網路介面。
4、最後我們告訴Docker在新容器中要執行什麼命令,本例中執行/bin/bash命令啟動了一個Bash shell。
當容器建立完畢之後,Docker就會執行容器中的/bin/bash命令,這是就會看到容器內的shell了。見下圖1就是拉取了ubutun的映象並以此為基礎映象建立了一個新的容器。

5411450-e414d0cec8b3830a.png
圖片.png

三、使用第一個容器

按上述步驟已經生成並進入了容器的終端,下面對這個容器進行簡單的操作。
1、檢視該容器的主機名:
hostname 可知道該容器的主機名就是容器的id
2、檢視容器內的hosts檔案
cat /etc/hosts 容器是有自己的ip地址以及網路的
3、可以檢視容器內的程式,目前
ps aux目前沒有其他的啟動的程式,可見和宿主機是獨立分開的。

5411450-815bb115d8678b5a.png
圖片.png

4、在第一個容器中進行安裝軟體包
apt-get update && apt-get install vim可以在容器內下載並安裝軟體
5、退出容器命令
exit就可以退出到centOS的宿主機的命令列提示符了。退出之後這個容器就停止執行了。主要是取決於我們的啟動的方式是隻有在指定的/bin/bash命令處於執行狀態的時候,我們的容器才會處於執行狀態。容器仍存在只是不是處於啟動狀態而已,可使用
docker ps -a檢視目前所有的容器,-a表示所有無論啟動還是停止
docker ps指的是列出處於啟動執行狀態下的容器
6、容器的命名
若不指定容器的名稱,docker會為我們隨機的生成一個容器的名稱。想為容器指定一個名稱可以在啟動容器時候指定使用 --name來命名一個容器的名稱。如之前啟動命令修改下 docker run --name myfirstcontainer -i -t ubuntun /bin/bash如下圖就是我們基於基礎映象ubuntu建立的兩個容器,一個容器名是隨機生成的,一個是通過引數--name來指定的。
5411450-29fc7e3590a6acfa.png
圖片.png

7、容器的啟動
docker start後面加容器名或者容器ID即可將處於停止狀態的容器再次啟動
或者使用docker restart加容器名/容器id也可以重新啟動。容器重新啟動沿用的還是docker run 命令時指定的引數來執行。
5411450-b49a4745a61c85b3.png
圖片.png

附著到正在執行的容器:
docker attach 加容器id或者容器名
8、上面會發現建立的容器進入容器後在退出就會停止執行,針對此類問題來建立守護式容器。適合執行應用程式和服務。
docker run --name daemoncontainer -d ubuntu /bin/sh -c "while true ; do echo hello world ;sleep 1; done"
5411450-5d78579574e99e96.png
圖片.png

監測容器執行可通過日誌進行分析檢視

1、獲取守護式容器的日誌docker logs daemoncontainer或者docker logs  -f daemoncontainer或者實時docker logs -ft daemoncontainer檢視
2、docker的日誌驅動docker run --log -driver="sysylog" --name daemoncontainerlog -d ubuntu /bin/sh -c "while true ; do echo hello world ;sleep 1; done"此命令會將該容器的日誌輸出到Syslog導致docker log不會輸出任何內容的。
3、檢視容器內的程式使用top命令docker top 加容器名/容器id如下圖1
4、容器內的統計資訊
docker stats +容器id或者容器名
5、在容器中執行後臺任務
docker exec -d daemoncontainer touch /etc/newfile
通過docker exec 後臺命令,可以在正在執行的容器中進行維護監控以及管理任務。
6、在容器中執行互動命令
docker exec -i -t  daemoncontainer /bin/bash
7、停止守護式容器
docker stop 容器名/容器id
8、自動重啟容器
在建立容器的時候加引數
docker run --restart=always --name daemoncontainerrestart -d ubuntu /bin/sh -c  "while true ; do echo hello world ;sleep 1; done"
9、深入容器
docker inspect檢視更多的容器資訊。
![圖片.png](https://upload-images.jianshu.io/upload_images/5411450-f864604e8108c6ef.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
10、刪除容器
docker rm 容器名/容器id
刪除所有容器
docker rm `docker ps -a -q`
5411450-d0477770e4b046c7.png
圖片.png

相關文章