欢迎光临,赤鹿小组
记录过程,分享经验

Docker官方镜像修改制作,上传至自身Docker Hub仓库使用

本文章制作的镜像主要是在 Docker Hub 上拉取镜像,然后进行增加自身需要的软件等。最后上传到自己创建的 Docker Hub 仓库,最后再由其他机器进行下载验证。
从零开始制作镜像并上传至 Docker Hub 将会在后续文章中阐述。

以 MySQL 为例

一、从 Docker Hub 仓库拉取 MySQL 镜像

[[email protected] ] docker pull mysql:5.7.24
[[email protected] ] docker images
# 有如下显示就证明 MySQL 已经被成功拉取到本地了
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/mysql     5.7.24              ae6b78bedf88        5 weeks ago         372 MB

二、将容器的 3306 端口映射到宿主机的 3306 端口 、配置文件,日志文件,数据目录 等都映射到宿主机上

[[email protected] ] mkdir -p /data/mysql/conf /data/mysql/logs /data/mysql/data
[[email protected] ] cd /data/mysql
[[email protected] ] docker run -p 3306:3306 --name sc_mysql -v $PWD/conf/my.cnf:/etc/mysql/my.cnf -v $PWD/logs/:logs -v $PWD/data/:/mysql -e MYSQL_ROOT_PASSWORD="abc123" -itd f991c20cb508
[[email protected] ] docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS         PORTS                               NAMES
d8a39e9be192        ae6b78bedf88        "docker-entrypoint..."   14 minutes ago      Up 14 minutes       0.0.0.0:3306->3306/tcp, 33060/tcp   sc_mysql

可以看出,容器的 3306 端口已经映射到宿主机上了

[[email protected] ] netstat -antulp | grep 3306
tcp6       0      0 :::3306                 :::*                    LISTEN      22689/docker-proxy-

三、进入容器,修改 mysql 配置文件

编者为了能够好的检验,后面拉取下来的镜像是否是自己上传的,所以在配置文件下增加 By Scong 字样,如图:

[[email protected] ] docker exec -it d8a39e9be192 bash
[email protected]:/# apt-get update 
[email protected]:/# apt-get install -y vim
[email protected]:/# vim /etc/mysql/mysql.conf.d/mysqld.cnf

docker

四、退出容器,将刚刚操作的镜像进行提交上传

[[email protected] ] docker commit -m="have changes" -a="skon" d8a39e9be192 skon2626/skon-hub:sc_mysql
    # -m:提交修改的信息
    # -a:维护人的信息
    # 紧接着的是之前的容器ID
    # skon/skon-hub:Docker Hub仓库,如果没有,默认为Docker的Docker Hub仓库
    # sc_mysql:tag标签

查看生成的镜像

[[email protected] ] docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
skon2626/skon-hub   sc_mysql            77cf957eee86        2 hours ago         419 MB
docker.io/mysql     5.7.24              ae6b78bedf88        5 weeks ago         372 MB

五、将创建的镜像上传到 自己的 Docker Hub 仓库,没有的读者可以前往注册。上传成功如下图:

[[email protected] ] docker login                               # 登陆Docker Hub仓库
[[email protected] ] docker push skon2626/skon-hub:sc_mysql     # 将镜像上传到自己的Docker Hub仓库

docker

六、从自己的 Docker Hub 仓库拉取自己制作的镜像

[[email protected] ] docker pull skon2626/skon-hub:sc_mysql
sc_mysql: Pulling from skon2626/skon-hub
a5a6f2f73cd8: Pull complete
936836019e67: Pull complete
283fa4c95fb4: Pull complete
1f212fb371f9: Pull complete
e2ae0d063e89: Pull complete
5ed0ae805b65: Pull complete
0283dc49ef4e: Pull complete
a7905d9fbbea: Pull complete
cd2a65837235: Pull complete
5f906b8da5fe: Pull complete
e81e51815567: Pull complete
e22f3dba163f: Pull complete
Digest: sha256:d75751ec13685b8c3ea18a92ebf8e8e1931e23c6f67d14e6825af214ad67f2f8
Status: Downloaded newer image for skon2626/skon-hub:sc_mysql

七、步骤同 二、三进行操作,检验效果如下图:

[[email protected] ] mkdir -p /data/mysql/conf /data/mysql/logs /data/mysql/data
[[email protected] ] cd /data/mysql
[[email protected] ] docker run -p 3306:3306 --name sc_mysql -v $PWD/conf/my.cnf:/etc/mysql/my.cnf -v $PWD/logs/:logs -v $PWD/data/:/mysql -e MYSQL_ROOT_PASSWORD="abc123" -itd 77cf957eee86
[[email protected] ] docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS         PORTS                               NAMES
e3ce90149d32        77cf957eee86        "docker-entrypoint.s…"   4 seconds ago       Up 3 seconds        0.0.0.0:3306->3306/tcp, 33060/tcp   sc_mysql

下载自身制作的镜像,并启动 mysql:

[[email protected] ] netstat -antulp | grep 3306
tcp6       0      0 :::3306                 :::*                    LISTEN      4723/docker-proxy

进入容器

[[email protected]ichung ] docker exec -it e3ce90149d32 bash

docker

从图中我们可以看出,vim 是可以直接使用的,如果不是自己制作的镜像,是会报-bash:vim :common not found 错误提示,而且也不会有文件末端的标识 # By Scong
所以,从简单的镜像修改制作,再上传到自己的 Docker Hub 仓库上,最后再 pull 拉取镜像测试验证,一次完整的镜像修改制作就完成了。同理,如果想增加一些其他服务,按照文章步骤一样也是可以打包镜像。

如果想完全自主地制作镜像,那么在下一篇文章,将会阐述利用Dockerfile完全自主地制作镜像

赞(1)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址