Docker容器操作方法詳解
一、常用命令
下面按照使用容器中的流程: 創(chuàng)建并啟動(dòng)容器 > 查詢?nèi)萜?> 進(jìn)入容器 > 退出容器 > 停止容器 > 啟動(dòng)/重啟容器 > 刪除容器來介紹Dockers常用命令,帶領(lǐng)小伙伴快速入門。

1.創(chuàng)建并啟動(dòng)容器
docer run
當(dāng)操作者執(zhí)行docker run時(shí),運(yùn)行的容器進(jìn)程是隔離的,因?yàn)樗凶约旱奈募到y(tǒng),自己的網(wǎng)絡(luò),以及自己與主機(jī)分離的隔離進(jìn)程樹。
docker run [OPTIONS] IMAGE [COMMAND] [ARG…]
docker run命令必須指定一個(gè)IMAGE來派生容器。image開發(fā)人員可以定義與以下相關(guān)的默認(rèn)值:
−分離或前臺(tái)運(yùn)行
−容器識(shí)別
−網(wǎng)絡(luò)設(shè)置
−CPU 和內(nèi)存的運(yùn)行時(shí)限制
使用docker run [OPTIONS]操作人以添加或覆蓋開發(fā)人員設(shè)置的image默認(rèn)值。操作人可以修改image和 Docker 運(yùn)行時(shí)超多參數(shù),–help的時(shí)候你會(huì)發(fā)現(xiàn)列表超長。
以openGauss啟動(dòng)示例:
docker run --name wodexiaoguaiguai --privileged=true -d -e GS_PASSWORD=Enmo@123 -v /enmotech/opengauss:/var/lib/opengauss -p 15432:5432 enmotech/opengauss:3.0.0
--name 表示為啟動(dòng)的容器起個(gè)名字,這個(gè)名字在宿主機(jī)上唯一。所以有時(shí)候,容器停止后再用相同的命令啟動(dòng)就會(huì)報(bào)錯(cuò),XXX is already in use by container。解決辦法參考《使用Docker部署openGauss》的Q&A。
--privileged 表示是否使用特權(quán)模式,設(shè)置–privileged=true提升系統(tǒng)執(zhí)行權(quán)限。設(shè)置為true后,容器內(nèi)的root用戶才是真正的root權(quán)限,否則只是一個(gè)普通用戶。
-d 表示要以分離模式(也就是后臺(tái)模式)啟動(dòng)容器,這樣執(zhí)行后會(huì)返回容器ID,不會(huì)進(jìn)入交互界面。如果想要進(jìn)入交互界面需要-i 和-t參數(shù)。
-e 表示要設(shè)置環(huán)境變量,多個(gè)環(huán)境變量就多個(gè) -e ,至于需要什么環(huán)境變量就跟鏡像息息相關(guān)了。
-v 由于容器自身揮一揮衣袖不帶走一片云彩的特點(diǎn),這個(gè)參數(shù)表示綁定一個(gè)卷,實(shí)現(xiàn)數(shù)據(jù)的持久化,冒號(hào)前面表示宿主機(jī)的目錄,后面是容器內(nèi)目錄。目錄不存在會(huì)自動(dòng)生成。
-p 端口映射,示例中將宿主機(jī)上的15432端口映射到容器的5432端口。還有一種映射參數(shù)是大寫的P,-P表示容器內(nèi)部端口隨機(jī)映射到主機(jī)的端口。
最后的enmotech/opengauss:3.0.0表示使用的鏡像名稱。
2.列出所有容器
docker ps -a
使用docker ps可以查出當(dāng)前運(yùn)行(STATUS是UP)的容器。而docker ps -a可以查出所有的容器,包括Exited狀態(tài)的容器,a 表示all的意思。示例:
[root@pekphisprb70593 software]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 828cc4491684 enmotech/opengauss:latest "entrypoint.sh -M st…" 7 days ago Up 7 days 5432/tcp, 0.0.0.0:6432->6432/tcp, :::6432->6432/tcp opengauss_slave1 7213afbe01df enmotech/opengauss:latest "entrypoint.sh -M pr…" 7 days ago Up 7 days 0.0.0.0:5432->5432/tcp, :::5432->5432/tcp opengauss_master
這里第一列的CONTAINER ID就是容器ID,最后一列的NAME就是docker run時(shí)指定的容器名稱。后面會(huì)用到。
還可以使用-q 參數(shù)只獲取容器ID,看起來清爽許多。
[root@pekphisprb70593 software]# docker ps -a -q 828cc4491684 7213afbe01df
3.進(jìn)入容器
docker exec -it 容器名稱/ID /bin/bash
容器-d 模式啟動(dòng)后,需要登錄容器才能在其中進(jìn)行操作。docker exec適用于在現(xiàn)有容器中運(yùn)行命令的情況。此時(shí)需要進(jìn)行交互,所以需要加上熟悉的 -it。
docker exec -it 828cc4491684 /bin/bash
或
docker exec -it opengauss_master /bin/bash
4.退出容器
exit
做完想做的事情后,退出容器就是很通用的 exit。
5.停止容器
docker stop 容器名稱/ID
需要停止容器的時(shí)候可以通過該命令完成,指定容器ID或容器名稱都可。
停止單個(gè)容器
docker stop opengauss_master
停止所有容器
docker stop $(docker ps -a -q)
6.啟動(dòng)/重啟一個(gè)已停止的容器
docker start/restart 容器名稱/ID
這種啟動(dòng)適用于之前已經(jīng)通過docker run創(chuàng)建好容器的場景。用法和stop 類似,都比較簡單。示例
docker start 828cc4491684
7.刪除容器
docker rm 容器名稱/ID
容器用完后就需要?jiǎng)h除釋放資源。
刪除單個(gè)容器
docker rm opengauss_master
刪除所有容器
docker rm $(docker ps -a -q)
二、使用幫助
Docker有大量的命令,大概有40+,很難把所有的都記住。

一般我們只需要記住常用的一些,對于其他可以運(yùn)行Docker --help。
[root@pekphisprb70593 software]# docker --help
Docker 1.13+引入了子命令來幫助管理原來大量的Docker命令。兩種方式只是組織方式不同,執(zhí)行功能相同。在幫助文本中,我們可以看到Management Commands(管理命令)和Commands(命令),通過管理命令對所有命令進(jìn)行分類,更有助于Docker命令的使用。
例如,查詢所有容器可以使用docker ps ,也可使用新的子命令docker container ls。兩者執(zhí)行效果相同,同樣,docker image ls也可以替代docker images。如圖:

對于單獨(dú)的命令,我們還可以使用docker [command] --help進(jìn)行查詢幫助。例如:
[root@pekphisprb70593 software]# docker pull --help
Usage: docker pull [OPTIONS] NAME[:TAG|@DIGEST]
Pull an image or a repository from a registry
Options:
-a, --all-tags Download all tagged images in the repository
--disable-content-trust Skip image verification (default true)
--platform string Set platform if server is multi-platform capable
-q, --quiet Suppress verbose output
openGauss: 一款高性能、高安全、高可靠的企業(yè)級(jí)開源關(guān)系型數(shù)據(jù)庫。
到此這篇關(guān)于Docker容器操作方法詳解的文章就介紹到這了,更多相關(guān)Docker容器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
docker網(wǎng)卡的IP地址修改方法總結(jié)
這篇文章主要給大家總結(jié)介紹了關(guān)于docker網(wǎng)卡的IP地址修改方法,文中通過實(shí)例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用docker具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2023-06-06
宿主機(jī)無法訪問docker容器中nginx服務(wù)的問題解決
在虛擬機(jī)中部署Docker并安裝Nginx后,宿主機(jī)無法訪問容器內(nèi)的Nginx服務(wù),通過檢查端口映射、防火墻狀態(tài)、進(jìn)入容器內(nèi)部啟動(dòng)Nginx以及檢查/修改內(nèi)核的IP轉(zhuǎn)發(fā)設(shè)置,解決了該問題,感興趣的可以了解一下2024-11-11
No route to host兩個(gè)docker容器的服務(wù)訪問不通的解決
在CentOS服務(wù)器上使用Docker容器時(shí),當(dāng)容器之間的服務(wù)調(diào)用出現(xiàn)“Failed to establish a new connection: [Errno 113] No route to host”錯(cuò)誤,是因?yàn)槿萜鞯膱?bào)文源地址被防火墻攔截,解決方法有兩種:在防火墻上開放指定端口或關(guān)閉防火墻2025-02-02
Docker+DockerCompose封裝web應(yīng)用的方法步驟
這篇文章會(huì)介紹如何將后端、前端和網(wǎng)關(guān)通通使用 Docker 容器進(jìn)行運(yùn)行,并最終使用 DockerCompose 進(jìn)行容器編排,感興趣的可以了解一下2021-08-08

