docker 打包镜像到远程仓库docker hub

523 阅读2分钟

打包镜像并分布到dockerhub中,这里以mysql为例。

一、运行容器,并进入容器

docker run -it 容器id

docker exec -it 容器id bash

二、更新本地安装包

在容器中执行 yum update 指令

image.png

三、在容器内部安装vim

在容器中执行 yum install vim -y 指令

image.png

四、保存镜像

注:这里需要重开一个窗口,因为如果退出容器,步骤二、三的操作将没了

image.png

在新窗口执行 docker commit 原镜像id 新镜像名

注:原镜像id通过docker ps获取

image.png

通过 docker images 可以查看已经有新的镜像 cs_build ,

注:新名字首字母不能大写

    如果 cs_build:1.0 则是设置tag为1.0,否则默认为latest

image.png

image.png

完成上面步骤后,一窗口的容器就可以退出了。

解释:上面的步骤大概意思就是,窗口一运行进入mysql容器,
然后在容器内安装一个vim的工具;此时再通过第二个窗口复制一
份mysql容器,此时复制的容器因为窗口一没有退出容器的
原因,导致vim工具还存在。

五、分发镜像

将打包的镜像上传到docker远程仓库。

1、登入 docker host

    docker login -u 账号

image.png

2、修改镜像名

    docker tag 原镜像名:tag docker账号/新镜像名:tag
    
    注:这里的原镜像名为 docker images 中你需要上传的镜
像名,如果镜像名后面不加tag,默认tag为latest。

image.png

3、上传到仓库

    docker push 镜像名:tag
    
    注:镜像名通过docker images获取,如果镜像名后面不加tag,默认上传tag为latest的镜像

image.png

4、查看远程镜像仓库

docker官网: https://hub.docker.com/

image.png

通过上面可以看到,我们已经将本地的镜像打包上传到了dockerhub上了。

六、本地拉取镜像

将远程仓库的镜像拉下来并且运行。

执行 docker pull yuqn/cs_build:1.0 指令

image.png

可以看到镜像已经下载下来了

七、启动容器

1、启动容器

image.png

2、查看容器

image.png

这里一开始是想通过打包的方式,来达到数据库初始化:在发布之前创建了一个数据库,然后打包到远程仓库,但是拉下来的时候数据库已经消失了。这样的话,那我要初始化数据库就只能读取配置文件了,有大佬知道怎么处理吗?