Docker镜像制作及发布
搭建本地私有容器仓库
服务器:http://192.168.31.4:9000/ admin/Routon@1981
首先下载registry 镜像
1 | docker pull registry |
运行registry 容器
1 | docker run -itd -v /data/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:latest |
-itd: 在容器中打开一个伪终端进行交互操作,并在后台运行
-v: 把宿主机的/data/ registry目录绑定到容器/var/lib/ registry目录(这个目录是registry容器中存放镜像文件的目录),来实现数据的持久化;
-p:映射端口;访问宿主机的5000端口就访问到registry容器的服务了
–restart=always:这是重启的策略,在容器退出时总是重启容器
-name registry: 创建容器命名为registry
registry:latest:这个是刚才pull下来的镜像
Docker容器的重启策略如下:
- no:默认策略,在容器退出时不重启容器
- on- failure: 在容器非正常退出时(退出状态非0),才会重启容器
- on-failure:3 :在容器非正常退出时重启容器,最多重启3次
- always:在容器退出时总是重启容器
- unless-stopped:在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器
1. 基于现有镜像
创建
1 | docker create -it ubuntu:16.04 /bin/bash |
进入镜像修改
1 | docker start [containerID] |
将修改后的容器提交为新的镜像,需要使用该容器的ID号创建新镜像
1 | docker commit -a "gary" -m "rk3308 base env" [containerID] ubuntu:rk3308 |
常用选项:
- -a 提交的镜像作者;
- -c 使用Dockerfile文件来创建镜像;
- -m 提交时的文字注释;
- -p 在commit时,将容器暂定。
2. 基于本地模版
通过导入操作系统模板文件可以生成镜像,模板可以从OPENVZ开源项目下载,下载地址为:
http://openvz.org/Download/template/precreated
1 | wget http://download.openvz.org/template/precreated/ubuntu-16.04-x86_64.tar.gz |
1 | cat ubuntu-16.04-x86_64.tar.gz | docker import - ubuntu:16.04 |
3. 基于Dockerfile
https://github.com/komljen/dockerfile-examples
1 | FROM ubuntu:trusty |
1 | docker build -f Dockerfile |
推送本地镜像到私有镜像仓库
客户端机器
在daemon.json文件中添加私有镜像仓库地址
1 | vim /etc/docker/daemon.json |
1 | { |
1 | service docker restart |
为镜像打标签
1 | docker tag [image_ID] 192.168.31.4:5000/ubuntu:16.04 |
上传到私有仓库
1 | docker push 192.168.31.4:5000/ubuntu:16.04 |
列出私有仓库的所有镜像
1 | curl http://192.168.31.4:5000/v2/_catalog |
出私有仓库的centos 镜像有哪些tag
1 | curl http://192.168.31.4:5000/v2/ubuntu/tags/list |
先删除原有的centos的镜像,再测试私有仓库下载
1 | docker rmi -f 8652b9 f0cb4c |
参考: