日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Docker可視化、數據持久化

作者:吉松松 更新時間: 2022-07-09 編程語言

可視化(portainer)

$ docker run -d -p 9000:9000 -p 8000:8000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
$ docker ps
CONTAINER ID        IMAGE                 COMMAND             CREATED             STATUS              PORTS                                            NAMES
809ca9a10ef9        portainer/portainer   "/portainer"        14 hours ago        Up 4 seconds        0.0.0.0:8000->8000/tcp, 0.0.0.0:9000->9000/tcp   portainer

持久化

將容器內部數據掛載到宿主機上的目錄上,實現數據的持久化。使用 docker run -v參數掛載

具名掛載、匿名掛載、指定路徑掛載

#匿名掛載
-v 直接寫容器路徑
$ docker run --name nginx  -v /usr/share/nginx/html -d nginx
$ docker inspect nginx
..........
"Mounts": [
            {
                "Type": "volume",
                "Name": "adb2dfbbdf53cf16e80a0f9a8df0fed73ff7bbc8a37909e80462e4018c50bc9d",
                "Source": "/opt/docker/volumes/adb2dfbbdf53cf16e80a0f9a8df0fed73ff7bbc8a37909e80462e4018c50bc9d/_data",
                "Destination": "/usr/share/nginx/html",
......
容器中的/usr/share/nginx/html掛在了宿主機的
/opt/docker/volumes/adb2dfbbdf53cf16e80a0f9a8df0fed73ff7bbc8a37909e80462e4018c50bc9d/_data目錄下。
默認是/var/lib/docker/volumes,為什么會變成/opt/docker?原因在于/etc/docker/daemon.json中指定了data-root參數
$ cat /etc/docker/daemon.json
{ "data-root":"/opt/docker" }


#具名掛載
容器中的/usr/share/nginx/html掛在了宿主機/opt/docker/volumes/html/_data目錄下。
-v 卷名:容器內的路徑
$ docker run --name nginx -v html:/usr/share/nginx/html -d nginx
#查看卷具體所在位置
$ docker inspect nginx 
....
 "Mounts": [
            {
                "Type": "volume",
                "Name": "html",
                "Source": "/opt/docker/volumes/html/_data",
                "Destination": "/usr/share/nginx/html",
                "Driver": "local",
....


#指定路徑掛載
容器中的/usr/local/nginx/html掛在了宿主機指定的/opt/html目錄下。
$ docker run --name nginx -v /opt/html:/usr/share/nginx/html  -d  nginx
$ docker inspect nginx
...
 "Mounts": [
             {
                "Type": "bind",
                "Source": "/opt/html",
                "Destination": "/usr/share/nginx/html",
                "Mode": "",
......

# --volumes-from
當有多個容器想要共享宿主機同一個目錄時,可以使用參數--volumes-from
例如: 
宿主機的/opt/html目錄掛載至容器的/usr/share/nginx/html,
$ docker run --name nginx -v /opt/html:/usr/share/nginx/html -d nginx
當有另外的容器同樣需要掛載/opt/html目錄時,有兩種方法,1、-v參數 2、--volumes-from
$ docker run --name nginx2 --volumes-from nginx -d nginx

總結

相同點:
    1、匿名掛載、具名掛載、指定路徑掛載都可以實現容器數據持久化
    2、匿名掛載、具名掛載、指定路徑掛載都會在宿主機上產生某個相對應的文件夾
不同點:
    1、匿名掛載產生的文件夾是隨機64位字符串
    2、具名掛載是將匿名掛載的隨機64位字符串替換成指定文件夾名稱
    3、匿名掛載、具名掛載是將容器中目錄掛載至宿主機,因而掛載后容器的中的文件可在宿主機呈現,
       而指定路徑掛載是將宿主機路徑綁定給容器,會覆蓋掉容器中原有目錄或文件。

原文鏈接:https://blog.csdn.net/m0_37642477/article/details/125629475

欄目分類
最近更新