【docker容器入门(四)】: Docker 存储卷和容器连接

Docker存储卷

为什么需要存储卷
• 容器不再运行时,数据将不会持续存在,数据很难从容器中取出
• 无法在不同主机之间很好的进行数据迁移

数据卷是一个可供容器使用的特殊目录,它将主机操作系统目录直接映射进容器,类似于Linux中的mount操作

创建或启动容器时,使用-v或者--volume参数给容器挂载存储卷
-v, --volume参数格式
由(:)分隔的三个字段组成 <源目录或文件> : <目标目录或文件> : <属性>
#属性字段可以省略

 

映射主机目录/gxb/ubuntu到容器ubuntu目录/foo

[root@guoxiaobo ~]# docker run -itd --name ubuntu  -v /gxb/ubuntu:/foo -w /foo ubuntu bash 
ca1ba9cea62ea6cc9fadf54b970c170f5cb5a8170107eba5b252c8363fbb5696

  

Docker容器连接

端口映射

容器中可以运行一些网络应用,要让外部也可以访问这些应用,可以通过 -P 或 -p 参数来指定端口映射。

  • -P :是容器内部端口随机映射到主机的高端口。
  • -p : 是容器内部端口绑定到指定的主机端口。

 映射容器5000端口到本机5000端口

 

# 运行python容器,映射容器5000端口到宿主机5000端口
[root@guoxiaobo ~]# docker run -d --name pythonapp -p 5000:5000 training/webapp python app.py    
3ab0cb75948cb71f893ce0a466e001df66e2dbf286eabbc93c79d463d92c244a
[root@guoxiaobo ~]# docker ps
CONTAINER ID   IMAGE             COMMAND           CREATED         STATUS         PORTS                    NAMES
3ab0cb75948c   training/webapp   "python app.py"   8 seconds ago   Up 6 seconds   0.0.0.0:5000->5000/tcp   pythonapp

# 访问宿主机5000端口
[root@guoxiaobo ~]# curl 127.0.0.1:5000
Hello world!

容器网络

新建网络

[root@guoxiaobo ~]# docker network create -d bridge gxb-net
0c1c229637c1ef27178daa27e65a1833818996a417340c32a25eb21f8897ca86
[root@guoxiaobo ~]# docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
5575dbe2e943   bridge    bridge    local
0c1c229637c1   gxb-net   bridge    local
9270bfcbf1a9   host      host      local
4a028e50cb9a   none      null      local

连接容器

运行容器test1并连接到新建的 test-net 网络

[root@guoxiaobo ~]# docker run -itd --name test1 --network gxb-net busybox
c68a568c671c3c06f7bf5fb76d4c694fcabf87408205248bedd16e8e094a061d

  

再运行容器test2并连接到test-net网络

[root@guoxiaobo ~]# docker run -itd --name test2 --network gxb-net busybox 
36b10985c6e817330933003ed4c7c825981836a904bf39b911502edfa8d59951

查看容器

[root@guoxiaobo ~]# docker ps
CONTAINER ID   IMAGE             COMMAND           CREATED          STATUS          PORTS                    NAMES
36b10985c6e8   busybox           "sh"              5 seconds ago    Up 4 seconds                             test2
c68a568c671c   busybox           "sh"              10 seconds ago   Up 10 seconds                            test1
3ab0cb75948c   training/webapp   "python app.py"   24 minutes ago   Up 24 minutes   0.0.0.0:5000->5000/tcp   pythonapp

测试两个容器网络

容器test1到test2网络测试

[root@guoxiaobo ~]# docker exec -it test1 ping test2
PING test2 (172.18.0.3): 56 data bytes
64 bytes from 172.18.0.3: seq=0 ttl=64 time=0.053 ms
64 bytes from 172.18.0.3: seq=1 ttl=64 time=0.052 ms
64 bytes from 172.18.0.3: seq=2 ttl=64 time=0.167 ms
64 bytes from 172.18.0.3: seq=3 ttl=64 time=0.166 ms

容器test2到test1网络测试

[root@guoxiaobo ~]# docker exec -it test2 ping test1
PING test1 (172.18.0.2): 56 data bytes
64 bytes from 172.18.0.2: seq=0 ttl=64 time=0.034 ms
64 bytes from 172.18.0.2: seq=1 ttl=64 time=0.167 ms
64 bytes from 172.18.0.2: seq=2 ttl=64 time=0.162 ms

  

posted @ 2020-12-21 19:02  郭小波  阅读(253)  评论(0)    收藏  举报