1. 程式人生 > 其它 >Docker筆記(二)容器資料捲進階

Docker筆記(二)容器資料捲進階

容器資料卷

什麼是容器資料卷

資料存在容器,容器刪除,資料就會丟失,如何做到資料持久化?

目的:就是資料的持久化,完全獨立與容器的生命週期,因此Docker不會在容器刪除時刪除其掛載的資料卷。

特點

1:資料卷可以在容器之間共享或重用資料。

2:資料卷中的更改可以直接生效。

3:資料卷中的更改不會包含在映象的更新中。

4:資料卷的生命週期一直持續到沒有容器使用它為止。

具名掛載與匿名掛載

我們通過具名掛載可以方便的找到我們的一個卷,大多數情況在使用的|具名掛載

#如何確定是具名掛載還是匿名掛載,還是指定路徑掛載!
-v容器內路徑
#匿名掛載
-v卷名:容器內路徑#具名掛載
-v/宿主機路徑:容器內路徑#指定路徑掛載!

拓展︰

#通過-v容器內路徑:ro rw改變讀寫許可權
ro  readonly #只讀
rw  readwrite#可讀可寫

#一旦這個了設定了容器許可權,容器對裁們掛載出來的內容就有限定了!
docker run -d -p --name nginx02 -v juming-nginx : /etc/nginx:ro nginxdocker run -d - --name nginx02 -v juming-nginx:/etc/nginx:rw nginx

# ro只要看到ro就說明這個路徑只能通過宿主機來操作,容器內部是無法操作!

用法

方式一 :使用命令掛載

docker run -it -v  /宿主機絕對路徑目錄:/容器內目錄

# 示例
docker run -it -v /home/ceshi:/home centos /bin/bash
# 通過docker inspect [容器id] 檢視容器詳細配置
        "Mounts": [
            {
                "Type": "bind",
                "Source": "/home/ceshi", # 主機內地址
                "Destination": "/home",  # 容器內地址
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            }
        ]

方式二 :使用Dockerfile掛載

Dockerfile 用來構建docker映象的構建檔案

# 指令大寫
FROM centos

VOLUME ["volume01","volume02"]

CMD echo "----end----"
CMD /bin/bash

資料卷容器

實現容器建資料共享

# 啟動docker01,並建立test.md檔案
# docker run -it --name docker01 test/centos:1.0

[root@node1 docker-test-volume]# docker run -it --name docker01 test/centos:1.0
[root@a45217dfa119 /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var  volume01	volume02
[root@a45217dfa119 /]# cd volume01
[root@a45217dfa119 volume01]# touch test.md


# 啟動docker02,通過--volumes-from繼承docker01配置
# docker run -it --name docker02 --volumes-from docker01 test/centos:1.0
# 檢視volume01下也存在test.md

[root@node1 ~]# docker run -it --name docker02 --volumes-from docker01 test/centos:1.0
[root@1611bfa5128f /]# cd volume01
[root@1611bfa5128f volume01]# ls
test.md

實戰

一、安裝mysql

# 1.0 獲取mysql映象
docker pull mysql:5.7
# 2.0 啟動mysql
# -d 後臺執行   -p 埠對映  -v資料卷掛載  -e 環境配置   --name容器名
docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/confg.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7
本篇內容是參考網路教程學習過程中的筆記
開發工作著,生活快樂著,留下總結,相互交流,共同進步