1、构建本地镜像

1、执行docker pull ubuntu命令从远程仓库拉取一个镜像,这里以ubuntu为例

docker打包ubuntu镜像 docker制作ubuntu镜像_linux

2、执行docker run -it ubuntu /bin/bash命令运行刚拉取的ubuntu镜像

docker打包ubuntu镜像 docker制作ubuntu镜像_容器_02

从远程仓库中拉取的ubuntu是没有vim文本编辑器

docker打包ubuntu镜像 docker制作ubuntu镜像_ubuntu_03

接下来我们安装vim编辑器

执行apt-get update, apt-get -y install vim完成安装

安装完成后,可以看到vim编辑器已经可以使用了。这里再a.txt里添加了there is dockers instance这句话

docker打包ubuntu镜像 docker制作ubuntu镜像_linux_04

3、接下来使用exit命令退出ubuntu容器,使用docker commit提交容器副本使之成为一个新的镜像

docker commit -m=“提交的描述信息” -a=“作者” 刚才运行的ubuntu的容器ID 要创建的目标镜像名字[:版本号]

docker commit -m="add vim command" -a="felix" 66638fb096fe myubuntu:1.0

docker打包ubuntu镜像 docker制作ubuntu镜像_docker_05

ps:如果忘记了刚才启动的ubuntu容器ID,可以使用docker ps -a,查看历史容器启动记录

docker打包ubuntu镜像 docker制作ubuntu镜像_ubuntu_06

4、执行docker images命令查看刚在构建的镜像

docker打包ubuntu镜像 docker制作ubuntu镜像_linux_07

可以看到自己构建的镜像已经创建成功

5、执行docker run -it 镜像ID命令启动容器

docker打包ubuntu镜像 docker制作ubuntu镜像_容器_08

接着验证一下是否已经可以执行vim命令,这里我在a.txt里输入了verification successful

docker打包ubuntu镜像 docker制作ubuntu镜像_docker打包ubuntu镜像_09

至此,我们自己构建的本地镜像已经成功。

2、将构建的本地镜像发布到阿里云

1、在容器镜像服务页面创建一个实例,这里创建的个人版。

docker打包ubuntu镜像 docker制作ubuntu镜像_容器_10

2、点击创建的个人实例,先创建命名空间

docker打包ubuntu镜像 docker制作ubuntu镜像_docker_11

接着创建镜像仓库

docker打包ubuntu镜像 docker制作ubuntu镜像_linux_12

docker打包ubuntu镜像 docker制作ubuntu镜像_docker打包ubuntu镜像_13

docker打包ubuntu镜像 docker制作ubuntu镜像_ubuntu_14

创建完成之后点击刚才创建的仓库,可以看到操作指南

docker打包ubuntu镜像 docker制作ubuntu镜像_容器_15

第三步的脚步即是将本地镜像推送到阿里云的镜像仓库中

docker打包ubuntu镜像 docker制作ubuntu镜像_docker_16

docker打包ubuntu镜像 docker制作ubuntu镜像_容器_17

docker tag命令会将刚才创建的镜像复制一份并命名为registry.cn-shanghai.aliyuncs.com/mhdaliyun/myubuntu,版本为1.0

3、将之前的镜像删除,然后拉取上传到阿里云中的镜像

执行docker pull registry.cn-shanghai.aliyuncs.com/mhdaliyun/myubuntu:1.0 命令拉取

docker打包ubuntu镜像 docker制作ubuntu镜像_ubuntu_18

接着执行docker run -it 镜像ID /bin/bash命令启动容器,测试vim命令,可以发现已经成功

docker打包ubuntu镜像 docker制作ubuntu镜像_linux_19

3、本地镜像发布到私有库

1、下载镜像Docker Registry

docker pull registry

下载完毕后执行docker images命令可以看到registry

docker打包ubuntu镜像 docker制作ubuntu镜像_docker打包ubuntu镜像_20

2、运行registry,相当于本地有个私有的docker hub

docker run -d -p 5000:5000 registry -v /mhd/myregistry/:/tmp/registry --privileged=true registry

如果是云服务器记得开放5000端口,/mhd/myregistry/这一部分可以改为自己想要的路径

docker打包ubuntu镜像 docker制作ubuntu镜像_docker打包ubuntu镜像_21

3、我们可以使用docker tag命令将从阿里云拉下来的本地镜像(添加了vim功能的)复制一份并且重命名

docker打包ubuntu镜像 docker制作ubuntu镜像_docker打包ubuntu镜像_22

4、使用curl验证私有库中有什么镜像

curl -XGET http://自己的IP地址:5000/v2/_catalog

可以看到是空的

docker打包ubuntu镜像 docker制作ubuntu镜像_容器_23

5、将镜像renamed_ubuntu修改为符合私服规范的名字

dcoker tag 镜像ID 本机IP:5000/镜像名:版本号

docker打包ubuntu镜像 docker制作ubuntu镜像_linux_24

6、修改配置文件使之支持http

vim /ect/docker/daemon.json

docker打包ubuntu镜像 docker制作ubuntu镜像_docker_25

需要添加一个“,”和 “insecure-registries”: [“本机IP:5000”]

添加完成后执行systemctl restart docker命令重启docker,重启之后还需执行docker start 容器ID命令重启之前的registry

之前的registry容器ID可以使用docker ps -a命令查看

7、push推送到私有库

docker push 镜像名:版本号

docker打包ubuntu镜像 docker制作ubuntu镜像_docker打包ubuntu镜像_26

8、再次使用curl验证私有库中有什么镜像,可以看到镜像已经在私有库中了

docker打包ubuntu镜像 docker制作ubuntu镜像_ubuntu_27

9、pull到本地运行查看是否是自己刚才的镜像,pull之前可以删除之前的镜像

docker pull 本机IP:5000/镜像名:版本号

docker打包ubuntu镜像 docker制作ubuntu镜像_容器_28

拉下来之后使用docker run -it 镜像ID查看是否有vim的功能,因为我们这里使用的是之前的镜像,所以可以看到a.txt中还是之前的内容

docker打包ubuntu镜像 docker制作ubuntu镜像_docker打包ubuntu镜像_29