于一 发表于 2019-2-21 09:31:05

docker数据管理与端口映射(三)

  一.数据管理与端口映射
  管理容器数据的方式:
     数据卷: 将容器内的数据映射到宿主机目录。
     数据卷容器: 使用特定容器维护数据卷。
  
  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:ropython: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.txtdb2-test.txttest.py
# docker exec -it db2 /bin/bash
# echo "db2 test" >> dbdata/db2-test.txt
# ls dbdata/
db1-test.txtdb2-test.txttest.py
宿主机目录下:
# ls /test/
db1-test.txtdb2-test.txttest.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:v1http://s1.运维网.com/images/20180730/1532883252777841.png

  http://s1.运维网.com/images/20180730/1532883269218449.png

指定映射端口:
# 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 test1centos-ssh:v1http://s1.运维网.com/images/20180730/1532883550782521.png

用udp指定udp端口:
# docker run -itd -p 40:25/udp --name test2 centos-ssh:v1
查看映射端口:
#docker port containernamehttp://s1.运维网.com/images/20180730/1532883607609928.png





页: [1]
查看完整版本: docker数据管理与端口映射(三)