Docker相關命令及引數
阿新 • • 發佈:2021-08-08
容器
#建立容器的時候指定啟動引數,自動掛載localtime檔案到容器內 docker run --name <name> -v /etc/localtime:/etc/localtime:ro #殺死一個容器 docker kill Name or ID #啟動所有的容器 docker start $(docker ps -a | awk '{ print $1}' | tail -n +2) #關閉所有的容器 docker stop $(docker ps -a | awk '{ print $1}' | tail -n +2) #清理所有處於終止狀態的容器 docker container prune #在建立容器時新增該命令可以跟隨Docker啟動 docker run --restart=always #如果已經啟動了則可以使用如下命令: docker update --restart=always <CONTAINER ID> #進入容器 docker exec -it container_id bash #進入容器後開啟新的終端 docker attach container_id #進入容器正在執行的終端 #刪除靜止狀態的容器 docker container rm xxx #強制刪除容器 docker -rm -f CONTAINERID #刪除所有的容器 docker rm $(docker ps -a | awk '{ print $1}' | tail -n +2) docker rm$(docker ps -a -q) #檢視所有已經建立的包括終止狀態的容器 docker container ls -a #檢視容器日誌 docker logs 容器 #檢視某容器最後10行日誌 sudo docker logs -f -t --tail 10 容器 #顯示容器內執行的程序 docker top #檢視最後退出的容器的ID docker ps -l #檢視容器詳細資訊 docker inspect container_id #檢視容器的變化 docker diff containerr_id #檢視容器佔用系統資源 docker stats #檢視指定容器 docker stats --no-stream registry 1493 #從容器中複製檔案到宿主機 docker cp 容器:/usr/local/test.js /tmp #從宿主機複製檔案到容器 docker cp /opt/test.js 容器:/usr/local/test.txt
映象
#刪除本地映象; docker image rm [選項] <映象1> [<映象2> ...] #刪除所有的映象 docker rmi $(docker images | awk '{print $3}' |tail -n +2) #刪除所有不使用的映象 docker image prune -f -a #檢視所有映象 docker images #搜尋線上可用映象名 docker search <映象名> #搜尋Docker Hub上的映象 ocker search jenkins #檢視映象、容器、資料卷所佔用的空間。 docker system df #檢視映象的歷史記錄 docker history nginx:latest #將容器的儲存層儲存下來成為映象。在原有映象的基礎上, 再疊加上容器的儲存層, 並構成新的映象。 以後執行這個新映象的時候, 就會擁有原有容器最後的檔案變化。 docker commit [選項] <容器ID或容器名> [<倉庫名>[:<標籤>]] # 批量清理臨時映象檔案 sudo docker rmi $(sudo docker images -q -f danging=true)
容器/映象遷移
# 映象匯出:保留原映象的名稱和標籤 docker save <IMAGE NAME>:<IMAGE TAG> > save.tar # 映象匯出:不保留原映象的基本資訊,載入load後需執行tag命令重新命名none映象 docker save <IMAGE ID> > save.tar #映象匯入 docker load < save.tar #容器匯出 docker export <CONTAINER ID> > export.tar #容器匯入 docker import export.tar <IMAGE NAME>:<IMAGE TAG> #把一個正在執行的容器變成一個新的映象。 docker commit <CONTAINER ID> <IMAGE NAME>:<IMAGE TAG> #docker載入新的映象後repository和tag名稱都為none的解決方法 docker tag <IMAGE ID> <IMAGE NAME>:<IMAGE TAG>
save和export區別
docker save
儲存的是映象(image),docker export
儲存的是容器(container);docker load
用來載入映象包,docker import
用來載入容器包,但兩者都會恢復為映象;docker load
不能對載入的映象重新命名,而docker import
可以為映象指定新名稱。
常用服務部署
Jenkins
docker run -d --name jenkins \
-u root \
-v /home/dockerData/Jenkins:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
-p 8080:8080 -p 50000:50000 \
jenkinsci/blueocean
MySQL
docker run --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-v /mydata/mysql/mysql-files:/var/lib/mysql-files \
-e MYSQL_ROOT_PASSWORD=password \
-p 3306:3306 \
--privileged=true \
-d 192.168.3.210/test/mysql:8.0
version: '3.2'
services:
mysql:
image: mysql:8.0
volumes:
- type: volumes
source: /dockerData/mysql/log
target: /var/log/mysql
- type: volumes
source: /dockerData/mysql/data
target: /var/lib/mysql
- type: bind
source: /dockerData/mysql/conf
target: /etc/mysql
- type: volumes
source: /dockerData/mysql/mysql-files
target: /var/lib/mysql-files
environment:
MYSQL_ROOT_PASSWORD: password
ports:
- "3306:3306"
privileged: true
Nginx
docker run --name nginx-test -p 7700:80 -d nginx
將容器內Nginx配置檔案拷貝到主機
docker cp CONTAINER_ID:/etc/nginx/nginx.conf ~/nginx
docker cp COMTAINER_ID:/etc/nginx/conf.d/default.conf ~/nginx/conf.d
~/nginx tree
.
├── conf.d
│ └── default.conf
├── logs
│ ├── access.log
│ └── error.log
├── nginx.conf
└── html
└── index.html
修改配置檔案~/nginx/conf.d/default.conf
location / {
//root /usr/share/nginx/html;
root /opt/www;
index index.html index.htm;
}
在~/nginx/www
目錄下建立檔案index.html
<!DOCTYPE html>
<html>
<head>
<title>Docker Nginx</title>
</head>
<body>
Hello Nginx
</body>
</html>
重新啟動nginx
docker run -d -p 7171:80 -p 7172:9090 \
--name nginx-3 \
-v /mydata/nginx-3/html:/usr/share/nginx/html \
-v /mydata/nginx-3/logs:/var/log/nginx \
-v /mydata/nginx-3/conf.d:/etc/nginx/conf.d \
-v /mydata/nginx-3/nginx.conf:/etc/nginx/nginx.conf \
-v /mydata/nginx-data:/usr/share/nginx/files \
nginx:1.17
容器外執行
docker exec nginx nginx -s reload
安裝Tomcat
docker run --name vk-tomcat -d \
-p 8080:8080 \
-v /opt/tomcat/webapps:/usr/local/tomcat/webapps \
tomcat:8.5.51-jdk8-openjdk
引數詳解
-D #預設false 允許除錯模式(debugmode)
-H #預設是unix:///var/run/docker.sock tcp://[host[:port]]來繫結 或者unix://[/path/to/socket]來使用(二進位制檔案的時候),當主機ip host=[0.0.0.0],(埠)port=[4243] 或者 path=[/var/run/docker.sock]是預設值,做為預設值來使用
-api-enable-cors #預設flase 允許CORS header遠端api
-b #預設是空,附加在已存在的網橋上,如果是用'none'引數,就禁用了容器的網路
-bip #預設是空,使用提供的CIDR(ClasslessInter-Domain Routing-無型別域間選路)標記地址動態建立網橋(dcoker0),和-b引數衝突
-d #預設false 允許程序模式(daemonmode)
-dns #預設是空,使docker使用指定的DNS伺服器
-g #預設是"/var/lib/docker":作為docker使用的根路徑
-icc #預設true,允許inter-container來通訊
-ip #預設"0.0.0.0":繫結容器埠的預設Ip地址
-iptables #預設true 禁用docker新增iptables規則
-mtu #預設1500 : 設定容器網路傳輸的最大單元(mtu)
-p #預設是/var/run/docker.pid程序pid使用的檔案路徑
-r #預設是true 重啟之前執行的容器
-s #預設是空 ,這個是docker執行是使用一個指定的儲存驅動器
--config string #客戶端配置檔案的位置(預設為“/root/.docker”)
docker run [option]
-a=map[]: 附加標準輸入、輸出或者錯誤輸出
-c=0: 共享CPU格式(相對重要)
-cidfile="": 將容器的ID標識寫入檔案
-d=false: 分離模式,在後臺執行容器,並且打印出容器ID
-e=[]:設定環境變數
-h="": 容器的主機名稱
-i=false: 保持輸入流開放即使沒有附加輸入流
-privileged=false: 給容器擴充套件的許可權
-m="": 記憶體限制 (格式:, unit單位 = b, k, m or g)
-n=true: 允許映象使用網路
-p=[]: 匹配映象內的網路埠號
-rm=false:當容器退出時自動刪除容器 (不能跟 -d一起使用)
-t=false: 分配一個偽造的終端輸入
-u="": 使用者名稱或者ID
-dns=[]: 自定義容器的DNS伺服器
-v=[]: 建立一個掛載繫結:[host-dir]:[container-dir]:[rw|ro].如果容器目錄丟失,docker會建立一個新的卷
-volumes-from="": 掛載容器所有的卷
-entrypoint="": 覆蓋映象設定預設的入口點
-w="": 工作目錄內的容器
-lxc-conf=[]: 新增自定義-lxc-conf="lxc.cgroup.cpuset.cpus = 0,1"
-sig-proxy=true: 代理接收所有程序訊號(even in non-tty mode)
-expose=[]: 讓你主機沒有開放的埠
-link="": 連線到另一個容器(name:alias)
-name="": 分配容器的名稱,如果沒有指定就會隨機生成一個
-P=false: Publish all exposed ports to thehost interfaces
公佈所有顯示的埠主機介面
部署kibanan
docker run -d --name kibana -p 5601:5601 -v /data/kibana/kibana.yml:/usr/share/kibana/config/kibana.yml kibana:7.6.2
參考