容器管理
容器,就是Linux被嚴格限制資源約束(cgroups),安全約束(Unix權限,capabilities,SELinux,AppArmor,seccomp等)和命名空間(PID,網絡,mount,等等)限制出來的應用。docker是最常見的一種容器技術,Docker由Docker daemon(監聽程序)、Docker鏡像(層)和Docker存儲(卷)和Docker網絡的構成。一個容器就是指由docker運行時基於docker鏡像創建的一個docker實例。
創建容器
要創建一個容器,使用create命令, [鏡像名]替換為需要運行的鏡像的名稱。
docker create [鏡像名]
當按下enter按鍵時,Docker默認會本地鏡像庫中搜索,如果沒有,會去訪問Docker Hub中搜索該鏡像,其下載本地系統並創建一個停止的容器。
比如,我們創建一個golang容器。
創建和運行容器
要創建和運行容器,請使用run命令,[鏡像名]替換為需要運行的鏡像的名稱將。該命令會從本地、Docker Hub中搜索指定的鏡像,並下載到本地,創建一個容器並啟動該容器。
docker run [鏡像名]
啟動停止的容器
要在啟動的一個容器(已停止),可以運行start命令。start命令后可以使用 [容器名]或容器ID替換。可以使用docker ps -a 查看本地容器列表(包括已停止的容器)。
docker start [容器名/ID]
停止容器
要停止一個運行中的容器,可以使用stop命令。容器停止后,可以用start命令將其啟動。
docker stop [容器名/ID]
重啟容器
要重啟一個容器,可以使用restart命令。命令可以將正在運行中的容器停止,然后再重新啟動。
docker restart [容器名/ID]
暫停容器
如果需要在正在運行的容器中臨時暫停該過程,可以使用pause命令。
docker pause [容器名/ID]
恢復暫停的容器
暫停容器后,可以使用unpause命令恢復已暫停的容器。
docker unpause [容器名/ID]
列出正在運行的容器
如果需要查看系統上正在運行的容器的列表,請運行以下命令。
docker ps 或者
docker container ls
上面的命令只會列出當前正在運行的容器,如果要列出本機所有的容器,可以使用:
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fc6da76218aa golang "bash" 2 minutes ago Created kind_shirley
刪除容器
刪除一個容器,可以使用rm命令。要刪除容器,請確保容器已經停止,否則會報錯。
docker rm [容器名/ID]
卸載容器
為了系統中刪除一個容器,可以運行以下命令。用要刪除的容器[容器名]的名稱或ID替換。
docker rm [容器名/ID]
容器操作
如果要對容器執行操作,有兩種方法,分別是exec命令和attach命令。
exec命令,用來在運行的容器中執行命令,比如
docker exec -it [容器名/ID] /bin/bash
會打開一個偽終端,可以在終端中執行命令。
attach命令,用來連接到正在運行中的容器:
docker attach --sig-proxy=false [容器名/ID]
attach到容器后,Ctrl+C可以退出,但是退出時,容器也會停止,為了退出時不影響容器運行,可以使用--sig-proxy=false參數,這樣ctrl+C[D]后容器會繼續運行。
查看容器日志
要查看當前容器的執行情況,需要查看容器日志。可以用attach到容器,可直接查看。當然更常用的方法是用logs命令
docker logs [容器名/ID]
logs 可以附帶一些參數:
-f: 表示實時打印容器日志,想象為tail -f
--since 日期:表示打印制定日期以來的日志。
--tail N數字:表示打印最后N條日志,想象為tail -n
查看容器的配置
容器的所有配置信息實際上是一個json文件,可以使用inspect命令,查看該容器的所有信息。
docker inspect [容器名/ID]
鏡像管理
容器鏡像是包含Docker容器的操作系統,應用程序和初始狀態的文件。可以從Dockerfiles構建,也可以用已經運行的容器創建。
在docker中,鏡像是一個標准的Tar包,包中包含了:
Rootfs:容器上像操作系統的標准根(/)的目錄。例如,帶有/usr,/var,/home等的目錄。
JSON文件:用來指定如何運行rootfs。例如,容器啟動時在rootfs中運行的命令或入口點;為容器設置的環境變量;容器的工作目錄;和其他一設置。
基於rootfs,其上面的json可以是互相依賴的,這樣就把docker鏡像分成了一個個的層:
以Dockerfile構建鏡像
甲dockerfile是docker用來創建並建立一個容器的鏡像的命令的列表。可以通過運行以下命令從dockerfile構建鏡像。
docker build -f [dockerfile路徑]
從容器構建鏡像
還可以從正在運行的容器為基礎構建鏡像。這也是快速備份正容器的快照的方法。
docker commit [容器名] [鏡像名]
從Docker Hub拉取鏡像
可使用以下命令將鏡像從Docker Hub下載到本地系統。
docker image pull [鏡像名]
將鏡像推送到Docker Hub
將容器鏡像推送到Docker Hub之前,必須在Docker Hub上創建一個帳戶,然后在終端登錄,在終端中運行docker login命令:
docker login
然后按要求輸入用戶名和密碼。認證成功后,可以使用以下命令將鏡像推送到Docker Hub。
docker image push [鏡像名]
列出容器鏡像
如果需要查看系統上的鏡像列表,請運行以下命令:
docker image ls
或者直接用
docker image
從系統中刪除鏡像
如果要從系統中刪除鏡像,請使用remove命令。
docker image remove [鏡像名]
卷管理
通過docker run或docker create命令可以將默認的Docker Volumes附加到容器,這樣創建的數據在鏡像重建過程中保持不變。
創建Docker卷
要創建docker卷,可以對卷,使用create命令
docker volume create [卷名]
刪除Docker卷
運行rm命令以刪除Docker卷。請記住,如果刪除一個卷,則將刪除該卷中存儲的所有數據。
docker volume rm [卷名]
查看卷信息
有時需要查看有關創建的卷的各種詳細信息,可以對卷使用inspect命令
docker volume inspect [卷名]
列出所有Docker卷
如果需要查看系統上所有卷的列表,可以對卷使用ls命令
docker volume ls
網絡管理
Docker網絡決定了容器之間如何相互連接以及如何與Internet連接。可以為各種軟件應用程序堆棧創建專用網絡,以確保數據安全。
創建Docker網絡
docker network的create命令會在當前系統上創建一個橋接網絡,該橋接網絡將容器彼此連接並共享主機的網絡和Internet連接。
docker network create [網絡名]
將容器連接到網絡
為了將容器連接到新網絡,請使用connect命令。
docker network connect [網絡名] [容器名]
斷開容器與網絡的連接
要斷開容器與網絡的連接,請使用disconnect命令。
docker network disconnect [網絡名] [容器名]
查看網絡信息
如果需要檢查網絡上的詳細信息,可以對網絡使用inspect命令
docker network inspect [網絡名]
列出所有網絡
可對網絡使用ls命令,會列出系統上的所有的docker網絡信息。
docker network ls
刪除網絡
從系統中刪除網絡。,可以對網絡使用rm命令。
docker network rm [網絡名]
總結
本文,我們列出了常見的docker命令,如果你已經可以熟練的使用這些命令,則說明你docker技術已經入門。可以接下來進一步深入學習了,比如容器編排K8S集群等。
轉自:https://c.m.163.com/news/a/FBHKGCBU05461OTJ.html?spss=newsapp
