摘要
本文内容转自网络,个人学习记录使用,请勿传播
客户端配置
使用场景
- 在镜像仓库不开启外网访问的情况下如果需要一些基础镜像,就需要通过有外网访问的机器先拉取镜像然后推送到镜像仓库
- 在制作一些环境基础镜像时也需要将做好的镜像上传到镜像仓库
- 如果需要制作一些业务镜像也需要上传到镜像仓库
- 一般线上环境只从镜像仓库拉取镜像,也就是只有只读权限
Linux
配置信任
- 自定义的docker二进制安装包已集成配置
- 其他参照以下配置
1 | dockerd --insecure-registry r.isme.pub |
配置默认仓库
- 配置默认仓库后,拉取
library
仓库的镜像无需添加前缀,如:r.isme.pub/library/centos:latest
:docker pull centos
即可
1 | dockerd --registry-mirror r.isme.pub |
Mac
登录镜像仓库
- 只有需要push镜像到镜像仓库、或者pull非公开镜像时才需要登陆到镜像仓库
- 由于处于测试阶段,当前的docker二进制安装包打包了镜像仓库的登录信息
- 由于处于测试阶段,当前镜像仓库中只有公开镜像
1 | docker login r.isme.pub |
拉取基础镜像上传
这里以centos:centos7.3.1611
为例
拉取镜像
1 | docker pull centos:centos7.3.1611 |
重新打tag
1 | docker tag centos:centos7.3.1611 r.isme.pub/base/centos:centos7.3.1611 |
上传
- 根据镜像大小和带宽不同上传速度不同
1 | docker push r.isme.pub/base/centos:centos7.3.1611 |
制作自定义镜像
以 nginx:alpine
为例
1 | docker tag nginx:alpine r.isme.pub/base/nginx:alpine |
Dockerfile
详细的Dockerfile参数和镜像制作准则请参照 Docker镜像
1 | $ cat Dockerfile |
index.html
1 | $ cat index.html |
构建镜像
1 | $ docker build . -t r.isme.pub/base/nginx:c1.0 |
上传多个镜像
我们本地拉取了nginx:alpine
镜像重新打了tag,又基于这个镜像创建了一个自定义镜像nginx:c1.0
,这样同一个镜像nginx
就同时有了两个不同版本,上传的时候可以一起上传
1 | $ docker push r.isme.pub/base/nginx |
服务端拉取、启动
直接启动容器,服务端发现本地没有镜像会自动去信任的仓库拉取
1 | $ docker run -d --name custom-web -p 8081:80 r.isme.pub/base/nginx:c1.0 |
访问
1 | $ curl http://10.157.23.249:8081/ |
docker-compose 方式启动
配置
1 | $ cat docker-compose.yml |
启动
1 | $ docker-compose up -d |
访问
1 | $ curl http://10.157.23.249:8082/ |
修改宿主机数据文件
1 | $ cat html/index.html |
## 管理
1 | $ docker-compose ps |
集群
由于docker本身并没有很好的支持集群化配置,如果需要管理一个集群中容器间的关系就要人为维护控制启动顺序。
docker-compose
的前身是开源的编排工具Fig
,2014年被dockr收购并改名为docker-compose
,用于单机docker集群的容器编排。
以下是一个服务编排的例子。
1 | version: '2' |
swarm
由于docker-compose
在服务编排的前提下并不支持容器的资源限制,只有在swarm模式下才能支持,因此在服务编排下需要进行资源限制就有开启swarm集群
- swarm集群和docker的
--live-restore
模式互斥
开启swarm
1 | $ docker swarm init |
查看swarm信息
1 | $ docker info |
配置
1 | $ cat docker-compose.yml |
启动
1 | $ docker stack deploy -c docker-compose.yml custom-web |
查看
1 | $ docker stack ls |
swarm相关的stack和services不在这里扩展讨论
docker中镜像相关的命令说明
1 | build # 通过DOCKERFILE创建一个镜像 |