Docker创建自己的镜像与上传流程详解

 更新时间:2022年09月28日 09:42:22   作者:Echoo2787  
镜像也是 docker 的核心组件之一,镜像时容器运行的基础,容器是镜像运行后的形态。本文主要介绍Docker镜像的基本操作,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧

引入

在部署毕节服务器时遇到了个问题:

  因为在三台服务器做好ovirt-engine超融合后,在主节点服务器上部署可视化平台需要安装mysql5.7,但是安装mysql时需要卸载一些依赖,但是由于怕影响原有的postgresql数据库和ovirt-engine的服务组件,选择了用docker容器部署mysql数据库。

  在顺利创建好容器,配置好mysql远程连接后,发现用navicat死活连不上,部署mysql8也连不上,能改的配置文件都改了,路由也开放了,端口也开放了,就是不得行。非常怀疑是ovirt-engine超融合的一些设置影响了docker容器和宿主机的网络沟通。

  后面没办法就创建了台虚拟机作为mysql服务器。

  隔了一天偶然翻博客发现docker容器有个主机模式,这玩应好像直接用的宿主机的网络和端口。于是尝试着在自己公司部署了一下,还真行。然后就想着直接部署好创建一个自己的镜像,以后方便点。于是就有了这篇部署记录。

了解Docker的资源隔离和主机模式

此模式下 dockers 容器与宿主机在同一个网络中,但没有独立IP地址。

docker使用了LinuxNamespaces技术来进行资源隔离,如:

  • PID Namespace隔离进程
  • Mount Namespace隔离文件系统
  • Network Namespace隔离网络等

一个Docker容器一般会分配一个独立的Network Namespace。但如果启动容器的时候使用host模式,那么这个容器将不会获得一个独立的Network Namespace,而是和宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。

创建 centos7 容器

创建mysql数据目录

mkdir -p /usr/mysql/data

创建容器

docker run -dit --name mysql5.7  --privileged=true --network=host \
-v /usr/mysql/data:/var/lib/mysql \
centos:centos7 /usr/sbin/init

因为用了主机模式--network=host,所以就不用映射端口了。

进入容器

docker exec -it mysql5.7 /bin/bash

安装必要的工具

yum install -y wget

部署mysql5.7

传送门

创建Docker Hub仓库

https://hub.docker.com/

注册登录创建自己的仓库,可以是公共也可以是私有

注意自己的仓库命名,最好是见名知义,因为仓库名就是后面镜像的名称

在服务器上登录你的 docker

docker login

生成镜像

创建自己的镜像

docker commit -m "centos7 with mysql5.7" -a "echoo" a3dee73dbafa cent7sql:5.7

-m 描述信息

-a 作者信息 a3dee73dbafa 容器id

cent7sql:5.7 镜像名:版本标签

注意:当你登录了自己的 docker后,查看镜像你会发现镜像名多了点东西 如docker.io/centos,这里的docker.io就是Docker Hub的公共用户名,centos则是镜像仓库的名字。 此时我这个镜像名是不符合规则的,如果直接推送会报错,必须按照用户名/仓库名:版本标签 这样的规则命名,这就是为啥上面创建仓库的时候说最好要见名知义。

更改镜像名字(重新打一个标签)

docker tag cent7sql:5.7 echoo2787/centos7:sql5.7

这样的命名就可以啦

提交镜像

docker push echoo2787/centos7:sql5.7

这个命令在创建仓库完成后那个页面右边可以找到

等待推送完成就好,如果报拒绝错误,检查是不是镜像命名和要求不一致。

到此这篇关于Docker创建自己的镜像与上传流程详解的文章就介绍到这了,更多相关Docker创建镜像内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • jenkins+docker+nginx+nodejs持续集成部署vue前端项目

    jenkins+docker+nginx+nodejs持续集成部署vue前端项目

    本文主要介绍了jenkins+docker+nginx+nodejs持续集成部署vue前端项目,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • DockerToolBox文件挂载的实现代码

    DockerToolBox文件挂载的实现代码

    这篇文章主要介绍了DockerToolBox文件挂载的实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • Docker如何配置Redis容器持久化

    Docker如何配置Redis容器持久化

    这篇文章主要介绍了Docker如何配置Redis容器持久化问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • kali下对Docker的详细安装教程

    kali下对Docker的详细安装教程

    这篇文章主要介绍了kali下对Docker的详细安装,Docker是渗透测试中必学不可的一个容器工具,在其中,我们能够快速创建、运行、测试以及部署应用程序,对kali安装docker相关知识感兴趣的朋友一起看看吧
    2022-05-05
  • docker搭建jenkins+maven代码构建部署平台

    docker搭建jenkins+maven代码构建部署平台

    本文主要介绍了docker搭建jenkins+maven代码构建部署平台,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-06-06
  • Docker ps命令详解

    Docker ps命令详解

    Docker ps是用于查看Docker服务器中容器状态(运行/暂停/停止),及批量获取容器基本信息最常用的指令,ps命令具有很多可用的参数,本文给大家介绍Docker ps命令,感兴趣的朋友一起看看吧
    2023-11-11
  • Docker daemon 配置和故障排除过程

    Docker daemon 配置和故障排除过程

    这篇文章主要介绍了Docker daemon 配置和故障排除过程,具有很的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • docker安装rabbitmq无法进入管理页面的问题

    docker安装rabbitmq无法进入管理页面的问题

    这篇文章主要介绍了docker安装rabbitmq无法进入管理页面的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • Docker安装运行SRS的过程记录

    Docker安装运行SRS的过程记录

    SRS定位是运营级的互联网直播服务器集群,追求更好的概念完整性和最简单实现的代码,本文给大家介绍下Docker安装运行SRS的过程,感兴趣的朋友跟随小编一起看看吧
    2022-04-04
  • Windows安装Docker全过程

    Windows安装Docker全过程

    这篇文章主要介绍了Windows安装Docker全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05

最新评论