Docker 仓库
https:hub.docker.com docker #官网搭建
Docker login #登陆
Docker search #网上搜索镜像
Docker tag bussbox:latest 用户名/busybox:latest #标签镜像
Docker push 用户名/busybox:latest #推送
Docker pull 用户名/busybox:latest #拉去
阿里云镜像加速器
注册阿里云>镜像服务>镜像加速器>选择系统
按照提示操作
搭建私有仓库
Docker pull registry #拉去官方镜像
docker run -d --name registry -p 5000:5000 registry:2 #运行容器
docker inspect registry
docker tag busybox:latest localhost:5000/busybox:latest #打标签
docker push localhost:5000/busybox #推送
加密的私有仓库
加密的私有仓库根据docker官方的文档来操作
用户认证的体添加也需要根据官方文档来操作
在server2上面配置docker 把server1/etc/docker/certs.d目录发送到server2 里面是认证信息
Server2:docker login 登陆
Docker pull nginx 可以拉去
Docker 原生网络
docker network ls #查看网络
三种网络模式:
Bridge 桥接网络每开启一个容器是递增的 默认使用
Host 可以让容器共享宿主机网络,好处就是外部主机直接与容器通信,但是容器网络缺少隔离性
None 禁用网络功能,只有lo接口,需要指令
docker run -it --name vm1 --network host ubuntu
自定义网络:
Bridge:
docker network create -d bridge my_net1
docker run -it --name vm1 --network my_net1 ubuntu
docker network create -d bridge --subnet 172.66.0.0/24 --gateway 172.66.0.1 my_net2 #自定义网络
docker run -it --name vm2 --network my_net2 ubuntu #运行容器
手动分配ip
docker run -it --name vm3 --network my_net2 --ip 172.66.0.66 ubuntu
docker network connect my_net2 vm1 #将自定义网络my2连接到vm1
docker container attach vm1 #进入容器
#内置DNS server dns解析功能必须在自定义网络中使用 --name指定名称
Joined 容器较为特别的网络模式 在容器中使用–network container:vm1 (vm1容器名)
docker run -it --name vm1 ubuntu
docker run -it --name vm2 --network container:vm1 ubuntu
–link 可以用来连接两个容器,修改hosts文件和nginx环境变量的传递
容器访问外网是通过iptables的SNAT实现
宿主机访问本纪容器使用的是iptables DNAT
外网访问容器 端口的映射 docker-proxy实现外部主机访问容器或者容器之间的访问
Overlay:Macvlan:是用于创建跨主机网络
erver1 和 server2 #两个添加一块网卡eth1
ip link set eth1 promisc on #两端都打开混杂模式
docker network create -d macvlan --subnet 172.66.0.0/24 --gateway 172.66.0.1 -o parent=eth1 manvlan #两端都设置网络模型
docker run -it --name vm1 --network manvlan --ip 172.66.0.66 ubuntu server1 #开启容器
docker run -it --name vm1 --network manvlan --ip 172.66.0.88 ubuntu server2 #开启容器
相互都可以ping通 没有走桥接
Macvlan会独占主机网卡,但可以使用vlan子接口实现多macvlan网络
Vlan可以将物理二层网络划分为4094个逻辑网络,彼此隔离
docker network create -d macvlan --subnet 172.67.0.0/24 --gateway 172.67.0.1 -o parent=eth1.1 manvlan1 server1 #两端配置网络模型
docker run -it --name vm2 --network manvlan1 --ip 172.67.0.66 ubuntu
docker run -it --name vm4 --network manvlan1 --ip 172.67.0.88 ubuntu