Docker 資料管理
資料卷
創建資料卷
docker volume create my-vol
查看所有的資料卷
docker volume ls
[root@localhost ~]# docker volume ls
DRIVER VOLUME NAME
local my-vol
查看資料卷的詳細資訊
docker volume inspect my-vol
[root@localhost ~]# docker volume inspect my-vol
[
{
"CreatedAt": "2018-08-17T08:15:42+08:00",
"Driver": "local",
"Labels": {},
"Mountpoint": "/var/lib/docker/volumes/my-vol/_data",
"Name": "my-vol",
"Options": {},
"Scope": "local"
}
]
掛載主機目錄
掛載主機目錄到容器
docker run -p 8080:8080 -d --mount type=bind,source=/root/first,target=/webapp centos-nodejs:1.0
[root@localhost ~]# docker run -p 8080:8080 -d --mount type=bind,source=/root/first,target=/webapp centos-nodejs:1.0
ecc09d5c7ecc5fd532bddcba6bdf1bca3db46f0554351e1a52e3c957c6759c0f
查看容器掛載資訊
docker inspect ecc09d5c7ecc
"Mounts": [
{
"Type": "bind",
"Source": "/root/first",
"Target": "/webapp"
}
],
Docker 網路配置
Docker 基礎網路配置
外部訪問容器
啟動容器時,使用 -P 或 -p 引數來指定埠映射,-P 隨機生成本地埠系結容器指定埠,-
p手動指定主機埠映射容器埠
docker run -p 8080:8080 -d centos-nodejs:1.0
查看埠映射資訊
docker ps
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ecc09d5c7ecc centos-nodejs:1.0 "node /app/index.js" About an hour ago Up About an hour 0.0.0.0:8080->8080/tcp xenodochial_mestorf
埠映射說明
默認映射所有地址所有埠
-p 8080:8080
效果同外部訪問容器
映射到本機指定地址的指定埠
-p 127.0.0.1:8080:8080
docker run -p 127.0.0.1:8080:8080 -d centos-nodejs:1.0
[root@localhost ~]# docker run -p 127.0.0.1:8080:8080 -d centos-nodejs:1.0
6bb9a458519cc02ad3803e18d799f798a0c64cf36764a99f4b04f9a5a84f86cc
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6bb9a458519c centos-nodejs:1.0 "node /app/index.js" 3 seconds ago Up 2 seconds 127.0.0.1:8080->8080/tcp dreamy_panini
映射到主機地址的任意埠
-p 127.0.0.1::8080
docker run -p 127.0.0.1::8080 -d centos-nodejs:1.0
[root@localhost ~]# docker run -p 127.0.0.1::8080 -d centos-nodejs:1.0
be23197aef2a41efd029c63fb266088cc1ad90dffe486107288fb77849778329
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
be23197aef2a centos-nodejs:1.0 "node /app/index.js" 57 seconds ago Up 56 seconds 127.0.0.1:32768->8080/tcp inspiring_lamarr
查看容器埠對應系結的主機埠
docker port be23197aef2a(容器id) 8080
[root@localhost ~]# docker port be23197aef2a 8080
127.0.0.1:32768
容器互聯
容器互聯網路原理
Docker 啟動時,會自動在主機上創建一個 docker0 虛擬網橋,實際上是 Linux 的一個 bridge,可以理解為一個軟體交換機,它會在掛載到它的網口之間進行轉發,
同時,Docker 隨機分配一個本地未占用的私有網段(在 RFC1918 中定義)中的一個地址給 docker0 介面,比如典型的 172.17.42.1,掩碼為 255.255.0.0,此后啟動的容器內的網口也會自動分配一個同一網段(172.17.0.0/16)的地址,
當創建一個 Docker 容器的時候,同時會創建了一對 veth pair 介面(當資料包發送到一個介面時,另外一個介面也可以收到相同的資料包),這對介面一端在容器內,即 eth0;另一端在本地并被掛載到 docker0 網橋,名稱以 veth 開頭(例如 vethAQI2QT),通過這種方式,主機可以跟容器通信,容器之間也可以相互通信,Docker 就創建了在主機和所有容器之間一個虛擬共享網路,
創建一個自己的虛擬網橋
docker network create -d bridge my-bridge
創建兩個鏈接到新網橋的兩個容器
docker run -it --name test5 --network my-bridge centos
docker run -it --name test6 --network my-bridge centos
相互能夠ping通,每臺能夠獲取自己的本網段IP,
在test6 ping test5
[root@9ce1b27d2ec8 /]# ping test5
PING test5 (172.18.0.2) 56(84) bytes of data.
64 bytes from test5.my-bridge (172.18.0.2): icmp_seq=1 ttl=64 time=0.120 ms
64 bytes from test5.my-bridge (172.18.0.2): icmp_seq=2 ttl=64 time=0.094 ms
64 bytes from test5.my-bridge (172.18.0.2): icmp_seq=3 ttl=64 time=0.086 ms
--- test5 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 0.086/0.100/0.120/0.014 ms
在test 6查看其IP地址
test6 IP地址:172.18.0.3
[root@9ce1b27d2ec8 /]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
26: eth0@if27: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:ac:12:00:03 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 172.18.0.3/16 brd 172.18.255.255 scope global eth0
valid_lft forever preferred_lft forever
在test5 ping test6
[root@4abf9907b82c /]# ping test6
PING test6 (172.18.0.3) 56(84) bytes of data.
64 bytes from test6.my-bridge (172.18.0.3): icmp_seq=1 ttl=64 time=0.060 ms
64 bytes from test6.my-bridge (172.18.0.3): icmp_seq=2 ttl=64 time=0.075 ms
64 bytes from test6.my-bridge (172.18.0.3): icmp_seq=3 ttl=64 time=0.123 ms
--- test6 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2001ms
rtt min/avg/max/mdev = 0.060/0.086/0.123/0.026 ms
在test5 查看其ip 地址
[root@4abf9907b82c /]# ip a
test5:172.18.0.2
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
24: eth0@if25: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:ac:12:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 172.18.0.2/16 brd 172.18.255.255 scope global eth0
valid_lft forever preferred_lft forever
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/33954.html
標籤:其他
上一篇:unity知識點大綱
