目錄
1. 概述
2. 基本操作
2.1. 鏡像操作
2.2. 容器操作
2.3. 運行操作
2.4. 鏡像保存
2.5. 鏡像分享
3. 高級操作
4. 掛載
4.1. 目錄掛載
4.2. 卷映射
1. 概述
Docker 鏡像有鏡像名稱和TAG
2. 基本操作
2.1. 鏡像操作
- 查看鏡像
docker images
docker image ls
- 刪除鏡像
docker rmi imagesID
docker rmi 名稱:TAG
- 下載鏡像
docker pull nginx:1.26.0
- 搜索鏡像
docker search nginx
2.2. 容器操作
容器是運行起來的鏡像
- 運行容器
docker run
- 查看運行的容器
docker ps
- 停止/啟動/重啟
docker stop/start/restart CONTAINER_ID
docker stop/start/restart NAMES
- 進入鏡像
docker exec -it xxxxxNAMES /bin/bash
- 查看日志
# 動態獲取
docker logs -f
# 靜態查看
docker logs
- 刪除
docker rm ID
# 強制刪除
docker rm -f ID
2.3. 運行操作
- 容器的端口可以重復,但是外部機器的端口不能重復
docker run -p <主機端口>:<容器端口> <鏡像名>
docker run -d --name mynginx -p 88:80 ngxin:TAG
-d: 后臺運行
--name:容器名稱
-p 端口映射: 80:88 內部80 外部訪問88
- 進入容器進行操作
docker exec -it <容器名稱> 交換腳本
docker exec -it mynginx /bin/bash
2.4. 鏡像保存
- 通過docker run 運行后,進行自定義安裝或者修改一些配置
- 然后提交修改內容:這里的mynginx是一個運行的容器
docker commit -m 'update index.thml' mynginx mynginx:V1.0[root@sda ~]# docker commit -m 'update index.html' mynginx mynginx:V1.0
sha256:6d11a54e6725515d5559bf96fa6aeeda4b1daf79887eb78e6c3befeaadad27a0
- 提交后,通過docker images 可以看到有鏡像 myginx V1.0
- 然后在對鏡像進行保存成tar便于轉移到其他機器上
docker save -o mynginx.tar mynginx:V1.0
- 加載鏡像
docker load -i mynginx.tar -q-i 加載tar的文件-q 表示加載過程中不展示加載信息
- 運行
docker run --name mynginx --rm -d -p 89:80 mynginx:V1.0
- 查看容器的占用
docker statsCONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
9b54842016a0 mynginx 0.00% 10.33MiB / 31.26GiB 0.03% 2.73kB / 2.05kB 0B / 0B 17
e2b4c27dbe59 work_nginx-server_1 0.00% 78.02MiB / 31.26GiB 0.24% 32.7GB / 32.5GB 7MB / 0B 17
2.5. 鏡像分享
# 改名
docker tag 舊名字 新名字 # 這個會復制一個新的,而不是直接改,可以把之前的刪除就行了
docker tag mynginx:V1.0 mynginx:V2.0[root@sda ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mynginx V1.0 6d11a54e6725 15 hours ago 192MB
mynginx V2.0 6d11a54e6725 15 hours ago 192MB
3. 高級操作
- 查詢所有的容器的ID
docker ps -aq
-a : 所有的鏡像
-q : 只打印容器ID[root@sda ~]# docker ps -aq
9b54842016a0
e2b4c27dbe59
694eeba1ae38
975bb0ad0124
0c0f3ddc3b79
- 刪除所有的容器
docker rm -f $(docker ps -aq)
-f:強制刪除
- 開機啟動
docker --restart always
4. 掛載
4.1. 目錄掛載
容器一旦重啟或者重新創建,那么文件數據都是丟失,所以這個時候需要通過掛載目錄,實現數據持久化
使用參數
-v /aa/aaa:/aaaa/bbb
-v 主機目錄:容器內目錄
如果一開始沒有/aa/aaa 那么他會自動創建。docker會以外部的數據為準,所以外部沒有數據
那么內部也是沒有數據的
4.2. 卷映射
當我們通過目錄掛載時,會發現因為-v是以外部為主,所以當我們使用目錄掛載,比如掛載容器的內部的默認配置文件時,會出現如果外部沒有這些配置文件,那么就會導致出現內部也沒有,那么容器就可能會啟動失敗,所以這個時候就需要用到卷映射
卷映射
-v 卷名:/etc/nginx
卷名不以./ 為名稱就是卷名,否是就是目錄掛載
docker run -d -p 89:80 --name mynginx -v /tmp/nginx/html:/usr/share/nginx/html -v ngconfig:/etc/nginx mynginx:V2.0
卷的數據都在哪里呢:默認都在/var/lib/docker/volumes/卷名/_data下
[root@sda html]# cd /var/lib/docker/volumes/ngconfig/
[root@sda ngconfig]# ls
_data
[root@sda ngconfig]# cd _data/
[root@sda ngconfig]# ls
conf.d fastcgi_params mime.types modules nginx.conf scgi_params uwsgi_params
[root@sda _data]# pwd
/var/lib/docker/volumes/ngconfig/_data
- 卷操作
1. 查看卷
docker volume ls
2. 創建卷
docker volume create test
3. 查看某個卷的詳情
docker volume inpspect test