1. 程式人生 > >docker數據管理與端口映射(三)

docker數據管理與端口映射(三)

圖片 16px pytho num size img font roc 內部


一.數據管理與端口映射

管理容器數據的方式:

數據卷: 將容器內的數據映射到宿主機目錄。

數據卷容器: 使用特定容器維護數據卷。

1.在容器內創建一個數據卷:

 # docker run -itd --name testpy --restart=always -v /data python:3
 
 查看容器內是否有/data目錄:
 #docker exec -it testpy
 或者:
 #docker attach testpy

2.掛載一個主機目錄作為數據卷。/test是宿主機目錄,/data是容器目錄:

 # docker run -itd --name test1 -v /test:/data python:3
 # docker exec -it test1 /bin/bash
 # ls data/
   test.py


3.docker掛載數據卷的默認權限是讀寫(rw),可通過ro指定為只讀。

   # docker run -itd --name test1 -v /test:/data:ro  python:3
   # docker exec -it test1 /bin/bash
   # ls data/


4.數據卷容器:

在多個容器之間共享一些持續更新的數據

# docker run -itd -v /dbdata --name dbdata python:3
# ls dbdata/
 
# docker run -itd -v /test:/dbdata --name dbdata python:3
# docker run -itd --volumes-from dbdata --name db1 python:3
# docker run -itd --volumes-from dbdata --name db2 python:3
 
# docker exec -it db1 /bin/bash
# echo "db1 test" >> dbdata/db1-test.txt
# ls dbdata/
db1-test.txt  db2-test.txt  test.py
 
# docker exec -it db2 /bin/bash
# echo "db2 test" >> dbdata/db2-test.txt
# ls dbdata/
db1-test.txt  db2-test.txt  test.py
 
宿主機目錄下:
# ls /test/
db1-test.txt  db2-test.txt  test.py
可使用--volumes-from 參數來從多個容器掛載多個數據卷。

刪除一個數據卷:


# docker stop db1 db2
# docker rm -f $(docker ps -a -q)


二.端口映射實現訪問容器

1. 從外部訪問容器:

-P 隨機分配一個宿主機端口到內部容器開放的網絡端口(22)

# docker run -itd -P --name sshrun centos-ssh:v1

技術分享圖片

技術分享圖片


指定映射端口:

# docker run -d -p 88:80 nginx:v1


多次使用-p可以綁定多個端口:

# docker run -d -p 90:22  -p 91:8080 --name sshtest centos-ssh:v1


映射到指定IP地址的指定端口:

# docker run -itd –p 18.18.23.107:101:22  --name test1  centos-ssh:v1

技術分享圖片


用udp指定udp端口:

# docker run -itd -p 40:25/udp --name test2 centos-ssh:v1

查看映射端口:

#docker port containername

技術分享圖片



docker數據管理與端口映射(三)