Docker 高级使用

仓库管理
数据管理
网络管理
端口映射


一、仓库管理

仓库是什么?

仓库就类似于我们在网上搜索操作系统光盘的一个镜像站。这里的仓库指的是Docker镜像存储的地方。

Docker的仓库有三大类:

公有仓库:Docker hub、Docker cloud、等
私有仓库:registry、harbor等
本地仓库:在当前主机存储镜像的地方。

和仓库相关的命令:

docker login [仓库名称]
docker pull [镜像名称]
docker push [镜像名称]
docker search [镜像名称]

私有仓库的部署:

作用:在本地私有仓库下载速度非常快,而且,在同一局网内,公司其他同事均可下载

使用流程如下:
1,下载registry镜像
    * docker pull registry

2, 配置daemon.js私有仓库地址
    * {"registry-mirrors": ["http://74f21445.m.daocloud.io"], "insecure-registries":["172.16.12.134:5000"]}

3, 重启docker
    * systemctl restart docker

4, 备份镜像名字: ip地址/其他名字
    * docker tag nginx:v1.0 172.16.12.134:5000/nginx

5, 创建registry容器
    * docker run -d -p 5000:5000 registry

6, 测试推送, 下载容器
    * docker push 172.16.12.134:5000/nginx
    * docker pull 172.16.12.134:5000/nginx


二、数据管理

docker的镜像是只读的,虽然依据镜像创建的容器可以进行操作,但是我们不能将数据保存到容器中,因为容器会随时关闭和开启,那么如何将数据保存下来呢?答案就是:数据卷和数据卷容器

什么是数据卷?
就是将宿主机的某个目录,映射到容器中,作为数据存储的目录,我们就可以在宿主机对数据进行存储。但是相应的缺点是:太单一

1.使用流程:

1, 先在本机桌面创建data目录

2, 创建ubuntu容器,映射data目录
    * docker run -it --name=unbuntu1 -v ~/Desktop/data:/home ubuntu /bin/bash

2.使用系统方法操作 数据卷volumes

1, 查看
docker volume ls

2, 新建
docker volume create xxx

3, 删除
docker volume rm xxx

操作流程:
1, 创建数据卷django
docker volume create django

2, 创建ubuntu容器和django关联
docker run -it -v django:/home ubuntu /bin/bash

3, 删除容器,删除数据卷
docker rm 容器名
docker volume rm django

3.数据卷容器 通过数据卷容器,将多个容器关联到一起

操作:

1,创建ubuntu1的数据卷容器
docker create -v /data --name=ubuntu1 ubuntu

2, 基于ubuntu1, 创建容器ubuntu2
docker run --volumes-from ubuntu1 -itd --name=ubuntu2 ubuntu

3, 基于ubuntu1, 创建容器ubuntu3
docker run --volumes-from ubuntu1 -itd --name=ubuntu3 ubuntu

4,测试
进入到任意的容器,在data中添加数据测试即可


三、网络管理:

docker最常见的四种模式:桥接模式bridge、host模式、none模式、container模式.

1, 桥接模式(bridge)

测试: 
docker run -itd --network=bridge --name=nginx1 nginx:v1.0 

特点: 各个容器网段都是一样的, 如果不指定,默认就是桥接模式

2, host模式

测试:
docker run -itd —network=host --name=nginx1 nginx:v1.0 

特点: 和宿主主机,共用网卡

3,none模式

测试
docker run -itd —network=none --name=nginx1 nginx:v1.0 

特点:分配独立网卡,不和其他容器相连

4,container模式

测试:
docker run -itd --network=container:nginx2 --name=nginx1 nginx:v1.0 

特点:可以复制(拷贝)其他的容器的网络模式

5,基于上面四种模式,创建自己的模式(network)

1, 查看网络模式
docker network ls

2, 删除网络模式:
docker network remove xxx

3, 创建网络模式bridge_test
docker network create --driver bridge bridge_test

4,创建容器nginx7,指定网络模式bridge_test
docker run -itd --name=nginx7 --network=bridge_test nginx:v1.0 

5, 断掉bridge_test网络模式
docker network disconnect bridge_test nginx7

6, 连接bridge_test网络模式
docker network connect bridge_test nginx7


四、端口映射

默认情况下,容器和宿主机之间网络是隔离的,我们可以通过端口映射的方式,将容器中的端口,映射到宿主机的某个端口上。这样我们就可以通过 宿主机的ip+port的方式来访问容器里的内容

端口映射种类

  • 随机映射​-P(大写)
  • 指定映射-p 宿主机端口:容器端口

使用示例:

1, 随机分配端口
docker run -itd -P --name=nginx1 nginx:v1.0 

2, 指定端口
docker run -itd -p 6001:80 --name=nginx2 nginx:v1.0 

3, 指定ip+端口
docker run -itd -p 172.16.12.134:6002:80 --name=nginx3 nginx:v1.0 

提示:

生产场景一般不使用随机映射,但是随机映射的好处就是由docker分配,端口不会冲突,
不管哪种映射都会影响性能,因为涉及到映射

你可能感兴趣的:(Docker 高级使用)