Docker的常用命令
- 幫助命令
- 鏡像命令
- 容器命令
- 常用的其他命令
- 命令手冊
- Docker安裝nginx
- Docker安裝tomcat
- Docker部署es+kibana
- 安裝es
- 安裝kibana
- 配置kibanan連接es
幫助命令
docker 命令 --help
docker run --help
顯示docker版本資訊
docker version
顯示docker系統資訊,包括鏡像和容器的數量
docker info
官方幫助檔案
鏡像命令
docker images顯示本地鏡像
| Name ,shorthand | Description |
|---|---|
| - -all , -a | 顯示所有鏡像 |
| - -digests | 顯示摘要 |
| - -filter , -f | 根據提供的條件過濾輸出 |
| - -format | Pretty-print images using a Go template |
| - -no-trunc | 顯示鏡像完整id |
| - -quiet , -q | 只顯示鏡像id |
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest d1165f221234 6 weeks ago 13.3kB
REPOSITORY 鏡像的倉庫源
TAG 鏡像的標簽
IMAGE ID 鏡像的id
CREATED 鏡像的創建時間
SIZE 鏡像的大小
常用可選項
-a 列出所有鏡像
-q 只顯示鏡像id
docker search 搜索鏡像
| Name, shorthand | Default | Description |
|---|---|---|
| - -filter , -f | 根據提供的條件過濾輸出 | |
| - -format | Pretty-print search using a Go template | |
| - -limit | 25 | 限制最大搜索數 |
| - -no-trunc | 不截斷輸出 |
docker search redis
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
redis Redis is an open source key-value store that… 9343 [OK]
docker search tomcat
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
tomcat Apache Tomcat is an open source implementati… 3002 [OK]
常用可選項
--filter
--limit
docker search mysql --filter=STARS=3000
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 10774 [OK]
mariadb MariaDB Server is a high performing open sou… 4057 [OK]
docker search mysql --limit 2
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 10774 [OK]
mysql/mysql-server Optimized MySQL Server Docker images. Create… 793 [OK]
docker pull 下載鏡像
| Name, shorthand | Default | Description |
|---|---|---|
| –all-tags , -a | 下載存盤庫中所有標記的鏡像 | |
| –disable-content-trust | true | 跳過鏡像驗證 |
| –platform | 如果服務器支持多平臺,則設定平臺 | |
| –quiet , -q | 靜默輸出 |
docker pull 鏡像名[:tag]
[root@docker ~]# docker pull mysql
Using default tag: latest 如果不寫 tag,默認就是 latest
latest: Pulling from library/mysql
f7ec5a41d630: Pull complete 分層下載是docker images的核心,聯合檔案系統
9444bb562699: Pull complete
6a4207b96940: Pull complete
181cefd361ce: Pull complete
8a2090759d8a: Pull complete
15f235e0d7ee: Pull complete
d870539cd9db: Pull complete
493aaa84617a: Pull complete
bfc0e534fc78: Pull complete
fae20d253f9d: Pull complete
9350664305b3: Pull complete
e47da95a5aab: Pull complete
Digest: sha256:04ee7141256e83797ea4a84a4d31b1f1bc10111c8d1bc1879d52729ccd19e20a 簽名
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest 真實地址
它們兩個等價
docker pull mysql
docker pull docker.io/library/mysql:latest
我們再去下載mysql:5.7版本
[root@docker ~]# docker pull mysql:5.7
5.7: Pulling from library/mysql
f7ec5a41d630: Already exists 已經存在 共用存在的檔案
9444bb562699: Already exists
6a4207b96940: Already exists
181cefd361ce: Already exists
8a2090759d8a: Already exists
15f235e0d7ee: Already exists
d870539cd9db: Already exists
cb7af63cbefa: Pull complete 只需要下載不一樣的檔案
151f1721bdbf: Pull complete
fcd19c3dd488: Pull complete
415af2aa5ddc: Pull complete
Digest: sha256:a655529fdfcbaf0ef28984d68a3e21778e061c886ff458b677391924f62fb457
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7
[root@docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql 5.7 87eca374c0ed 36 hours ago 447MB
mysql latest 0627ec6901db 36 hours ago 556MB
docker rmi洗掉鏡像
docker rmi (i指images) 加IMAGE ID
docker rmi 87eca374c0ed
Untagged: mysql:5.7
Untagged: mysql@sha256:a655529fdfcbaf0ef28984d68a3e21778e061c886ff458b677391924f62fb457
Deleted: sha256:87eca374c0ed97f0f0b504174b0d22b0a0add454414c0dbf5ae43870369f6854
Deleted: sha256:3b035442a2f8d52d6c5c2d83a18c6c21a89b4dc6c89b481bcf40df89087655ce
Deleted: sha256:a223f1762b2c619a59b81fc2304bf4c9b791c777c8bdb19760c09cbd1f061efc
Deleted: sha256:92402939b3fd03bee3745eb90df9799bcb7d0ef92ca8ecf7ef37ad9c8a550084
Deleted: sha256:028b21e33aa4cd9c88acdd194d5cbef25638ffbca8669bfc0da72ad1eb148997
[root@docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql latest 0627ec6901db 37 hours ago 556MB
hello-world latest d1165f221234 6 weeks ago 13.3kB
洗掉所有鏡像
docker rmi -f $(docker images -qa)
容器命令
可以在官方檔案查看命令引數:幫助檔案
有了鏡像才能創建容器
下載一個centos鏡像
docker pull centos
[root@docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 300e315adb2f 4 months ago 209MB
新建容器并啟動
docker run [可選引數] image
常用引數
--name='' 容器名字用來區分容器
-it 使用互動方式運行,進入容器
-d 后臺運行
-p(小寫) 指定容器埠
-p 主機埠:容器埠(常用)
-p 容器埠
-p ip:主機埠:容器埠
-P(大寫) 隨機指定埠
啟動容器
docker run -it centos /bin/bash
列出所有容器
列出所有運行中的容器
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d7930c98cf2f centos "/bin/bash" About a minute ago Up About a minute unruffled_almeida
列出所有容器(運行+未運行的)
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d7930c98cf2f centos "/bin/bash" About a minute ago Up About a minute unruffled_almeida
3ab5b06db7a1 d1165f221234 "/hello" 2 hours ago Exited (0) 2 hours ago optimistic_zhukovsky
-n=? 顯示最近創建的容器
docker ps -a -n=1
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d7930c98cf2f centos "/bin/bash" 2 minutes ago Up 2 minutes unruffled_almeida
-q 只顯示容器的id
docker ps -qa
d7930c98cf2f
3ab5b06db7a1
退出容器
exit 在容器中直接退出(第一次的容器如果輸入exit會直接停止)
Ctrl + P + Q 也可以退出容器
洗掉容器
洗掉指定容器
docker rm 容器id
洗掉所有容器
docker rm -f $(docker ps -qa)
不能洗掉正在運行的容器,如果要強制洗掉rm -f
docker rm -f $(docker ps -qa)
d7930c98cf2f
3ab5b06db7a1
或者將容器關閉之后再洗掉
docker stop 容器id
docker rm 容器id
洗掉所有容器
docker ps -aq |xargs docker rm
啟動和停止容器
啟動容器
docker start 容器id
重啟容器
docker restart 容器id
停止正在運行的容器
docker stop 容器id
強制停止容器
docker kill 容器id
先創建一個容器
docker run -it -p 8895:8080 --name mao 300e /bin/bash
[root@docker ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bca41f691e98 300e "/bin/bash" 35 seconds ago Up 34 seconds 0.0.0.0:8895->8080/tcp, :::8895->8080/tcp mao
停止容器
[root@docker ~]# docker stop bca4
bca4
常用的其他命令
后臺啟動
docker run -d 鏡像名
docker run -d centos
但是docker ps 發現centos停止了
常見的問題,因為docker容器使用后臺運行,就必須要有一個前臺行程,docker發現沒有前臺行程,就會自動停止
我們用tomcat測驗
docker pull tomcat
后臺啟動
docker run -d -p 8090:8080 --name tomcat1 bd431
使用瀏覽器訪問ip:8080

404的原因是tomcat不是完整的,外網訪問測驗沒有問題
我們進入tomcat容器
docker exec -it tomcat1 /bin/bash
發現webapps里沒有檔案 因為是阿里云鏡像默認是最小的鏡像,其他不必要的都剔除了,保證最小可運行環境
我們將webapps.dist里面的所有復制到webapps里
root@c75fbf2b4431:/usr/local/tomcat# cp -r webapps.dist/* webapps
重繪瀏覽器

查看日志
-tf 顯示日志
--tail number 要顯示日志條數
docker logs -tf --tail 10 fe6a3e56f3d0
docker run -d centos /bin/bash -c "while true;do echo "maomao";sleep 1;done"
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
NAMESd2694a95c412 centos "/bin/bash -c 'while…" 7 seconds ago Up 6 seconds
docker logs -tf --tail 10 d2694a95c412
2021-04-21T08:42:40.823781398Z maomao
2021-04-21T08:42:41.826943919Z maomao
2021-04-21T08:42:42.831924257Z maomao
2021-04-21T08:42:43.834038335Z maomao
2021-04-21T08:42:44.836708178Z maomao
查看容器中行程資訊
docker top 容器id
docker top d2694a95c412
查看鏡像的元資料
docker inspect 容器id
docker inspect d2694a95c412
進入當前運行的容器
docker exec -it 容器id /bin/bash
docker exec -it d2694a95c412 /bin/bash
[root@d2694a95c412 /]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 11880 1532 ? Ss 08:40 0:00 /bin/bash -c while true;do echo maomao;sleep 1;done
root 740 0.2 0.0 12012 2176 pts/0 Ss 08:53 0:00 /bin/bash
root 786 0.0 0.0 23012 928 ? S 08:53 0:00 /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/
root 787 0.0 0.0 44620 1784 pts/0 R+ 08:53 0:00 ps aux
還有一種進入容器的方法
docker attach 容器id
| 命令 | 區別 |
|---|---|
| docker exec | 進入容器后開啟一個新的終端,可以在里面操作(一般都用這個) |
| docker attach | 進入容器正在執行的終端,不會啟動新的終端 |
從容器內拷貝檔案到主機上
先開啟一個容器
docker run -it --name mao 300e /bin/bash
[root@6fd5dbac170f /]# cd /home/
[root@6fd5dbac170f home]# ls
[root@6fd5dbac170f home]# touch mao.py # 創建一個檔案
退出容器
exit
docker cp 6fd5dbac170f:/home/mao.py /home
[root@docker ~]# ls /home/mao.py
/home/mao.py
命令手冊
attach # 當前 shell 下 attach 連接指定運行鏡像
build # 通過 Dockerfile 定制鏡像
commit # 提交當前容器為新的鏡像
cp #從容器中拷貝指定檔案或者目錄到宿主機中
create # 創建一個新的容器,同 run,但不啟動容器
diff # 查看 docker 容器變化
events # 從 docker 服務獲取容器實時事件
exec # 進入運行中的容器
export # 匯出容器的內容流作為一個 tar 歸檔檔案[對應 import ]
history # 展示一個鏡像形成歷史
images # 列出系統當前鏡像
import # 從tar包中的內容創建一個新的檔案系統映像[對應export]
info # 顯示系統相關資訊
inspect # 查看容器詳細資訊
kill # kill 指定 docker 容器
load # 從一個 tar 包中加載一個鏡像[對應 save]
login # 注冊或者登陸一個 docker 源服務器
logout # 從當前 Docker registry 退出
logs # 輸出當前容器日志資訊
port # 查看映射埠對應的容器內部源埠
pause # 暫停容器
ps # 列出容器串列
pull # 從docker鏡像源服務器拉取指定鏡像或者庫鏡像
push # 推送指定鏡像或者庫鏡像至docker源服務器
restart # 重啟運行的容器
rm # 移除一個或者多個容器
rmi # 移除一個或多個鏡像[無容器使用該鏡像才可洗掉,否則需洗掉相關容器才可繼續或 -f 強制洗掉]
run # 創建一個新的容器并運行一個命令
save # 保存一個鏡像為一個 tar 包[對應 load]
search # 在 docker hub 中搜索鏡像
start # 啟動容器
stop # 停止容器
tag # 給源中鏡像打標簽
top # 查看容器中運行的行程資訊
unpause # 取消暫停容器
version # 查看 docker 版本號
wait # 截取容器停止時的退出狀態值
Docker安裝nginx
搜索nginx
docker search nginx --limit 2
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 14752 [OK]
jwilder/nginx-proxy Automated Nginx reverse proxy for docker con… 2018 [OK]
拉取鏡像
docker pull nginx
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 62d49f9bab67 8 days ago 133MB
后臺啟動
docker run -d -p 9000:80 --name nginx01 nginx
1e846a00a0e95945c68d6081649f7075459671d5d70ab6f45c6a8814deec156f
curl localhost:9000

Docker安裝tomcat
一般用來測驗,用完則洗掉
docker run -it --rm tomcat:9.0
我們只要停掉服務 tomcat容器則被洗掉了
docker ps -a 找不到tomcat容器
docker pull tomcat:9.0
docker run -it -p 9000:8080 --name tomcat01 bd431ca8553c /bin/bash
進入容器之后
cp -r webapps.dist/* webapps/
cd bin/
./startup.sh
Tomcat started.
測驗
curl localhost:8080
外部
curl localhost:9000

Docker部署es+kibana
注意:kibana和es版本必須相同,并且要創建docker網路
安裝es
官方檔案
es 暴露的埠很多,并且是否消耗記憶體
es的資料需要掛載到安全目錄
-e 環境配置修改
--net 將容器加入到docker網路
創建網路
docker network create --driver bridge --subnet 192.168.0.0/24 --gateway 192.168.0.1 mynet
查看網路
ip a
18: br-92dce3760956: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:cd:b2:ab:92 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.1/24 brd 192.168.0.255 scope global br-92dce3760956
valid_lft forever preferred_lft forever
安裝es
docker run -d --name elasticsearch --net mynet -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.10.1
解決es高消耗的問題
docker stats # 查看docker容器cpu狀態
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
851074fa63b1 elasticsearch 0.31% 1.207GiB / 3.842GiB 31.41% 648B / 0B 1.71MB / 1.69MB 46
發現消耗記憶體1.2個G
停掉es容器
docker stop 851074fa63b1
增加記憶體限制
docker run -d --name elasticsearch --net mynet -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:7.10.1
查看cpu
docker stats
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
15b9b703aa9c elasticsearch01 0.62% 371.8MiB / 3.842GiB 9.45% 648B / 0B 0B / 1.61MB 46
curl localhost:9200

安裝kibana
運行kibana,同es使用相同版本7.10.1,同樣使用mynet網路
docker run -d --name kibana --net mynet -p 5601:5601 kibana:7.10.1
瀏覽器訪問自己ip:5601, 可以查看到kibana 頁面,可以訪問成功

配置kibanan連接es
洗掉正在運行的es和kibana
docker rm -f $(docker ps -aq)
新建es資料和配置目錄
mkdir -p /data/elasticsearch/{config,data}
新建并寫入組態檔
echo "http.host: 0.0.0.0" >> /data/elasticsearch/config/elasticsearch.yml
cat config/elasticsearch.yml
http.host: 0.0.0.0
配置完成,執行命令啟動elasticsearch并掛載組態檔到虛擬機目錄
docker run -d --name elasticsearch --net mynet -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" -v /data/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /data/elasticsearch/data:/usr/share/elasticsearch/data -v /data/elasticsearch/plugins:/usr/share/elasticsearch/plugins elasticsearch:7.10.1

配置kibana 連接到es
docker run -d --name kibana --net mynet -e ELASTICSEARCH_HOSTS=http://192.168.188.8:9200 -p 5601:5601 kibana:7.10.1

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/279376.html
標籤:其他
