【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
    欢迎各位光临郭小波的博客,请在此留下您的脚印。
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号