在部署毕节服务器时遇到了个问题:, 因为在三台服务器做好
ovirt-engine
超融合后,在主节点服务器上部署可视化平台需要安装
mysql5.7
,但是安装
mysql
时需要卸载一些依赖,但是由于怕影响原有的
postgresql
数据库和
ovirt-engine
的服务组件,选择了用
docker
容器部署
mysql
数据库。, 在顺利创建好容器,配置好
mysql
远程连接后,发现用
navicat
死活连不上,部署
mysql8
也连不上,能改的配置文件都改了,路由也开放了,端口也开放了,就是不得行。非常怀疑是
ovirt-engine
超融合的一些设置影响了
docker
容器和宿主机的网络沟通。, 后面没办法就创建了台虚拟机作为
mysql
服务器。, 隔了一天偶然翻博客发现
docker
容器有个
主机模式
,这玩应好像直接用的宿主机的网络和端口。于是尝试着在自己公司部署了一下,还真行。然后就想着直接部署好创建一个自己的镜像,以后方便点。于是就有了这篇部署记录。,此模式下
dockers
容器与宿主机在同一个网络中,但没有独立IP地址。,
docker
使用了
Linux
的
Namespaces
技术来进行资源隔离,如:,一个
Docker
容器一般会分配一个独立的
Network Namespace
。但如果启动容器的时候使用
host
模式,那么这个容器将不会获得一个独立的
Network Namespace
,而是和宿主机共用一个
Network Namespace
。容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。,创建
mysql
数据目录,创建容器,因为用了主机模式
--network=host
,所以就不用映射端口了。,进入容器,安装必要的工具,传送门,https://hub.docker.com/,注册登录创建自己的仓库,可以是公共也可以是私有,
,注意自己的仓库命名,最好是见名知义,因为仓库名就是后面镜像的名称,在服务器上登录你的 docker,创建自己的镜像,
-m
描述信息,
-a
作者信息
a3dee73dbafa
容器id,
cent7sql:5.7
镜像名:版本标签,
,注意:当你登录了自己的
docker
后,查看镜像你会发现镜像名多了点东西 如
docker.io/centos
,这里的
docker.io
就是
Docker Hub
的公共用户名,
centos
则是镜像仓库的名字。 此时我这个镜像名是不符合规则的,如果直接推送会报错,必须按照用户名/仓库名:版本标签 这样的规则命名,这就是为啥上面创建仓库的时候说最好要见名知义。,更改镜像名字(重新打一个标签),
,这样的命名就可以啦,这个命令在创建仓库完成后那个页面右边可以找到,等待推送完成就好,如果报拒绝错误,检查是不是镜像命名和要求不一致。