仓库管理
数据管理
网络管理
端口映射
一、仓库管理
仓库是什么?
仓库就类似于我们在网上搜索操作系统光盘的一个镜像站。这里的仓库指的是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分配,端口不会冲突,
不管哪种映射都会影响性能,因为涉及到映射