如何连接docker中MySQL容器

大家好,今天来为大家分享docker容器内怎么连接外部的mysql的一些知识点,和不建议docker安装mysql的问题解析,大家要是都明白,那么可以忽略,如果不太清楚的话可以看看本篇文章,相信很大概率可以解决您的问题,接下来我们就一起来看看吧!

本文目录

  1. Docker有什么优势
  2. 你有关于详细的Docker入门书籍推荐吗
  3. docker容器内怎么连接外部的mysql
  4. docker从容器中怎么访问宿主机

Docker有什么优势

单纯的Docker是一个非常难理解的东西,它和虚拟机有些类似,但又不等同于虚拟机,它们的原理是不同的。

虚拟机只是对硬件进行虚拟化,基于物理机的硬件虚拟出一套硬件之后,在这个基础上运行一个完整的操作系统,而Docker是虚拟化的容器,容器虚拟化的是操作系统而不是硬件,容器和容器之间共享同一套操作系统资源。

容器的优势是非常明显的:虚拟机将一台服务器变成多台服务器,每一个VM都拥有整套的操作系统、需要占用大量的空间,所以VM启动缓慢系统也会占用很多的硬件资源。代码、依赖的资源打包在一起形成一个容器,容器没有自己的内核,容器内的应用直接运行在系统的内核上,多个容器可以同时运行共享系统内核,但容器之间又以相互独立的进程在运行。所以容器比虚拟机要轻便很多,几乎瞬间就能启动。

如此这般说Docker的概念还是很抽象,举个例子:Ubuntu的系统搭建的项目要部署到CentOS的服务器上,所有依赖的环境(比如:MySQL、Redis等等)都需要重新安装一遍,并按照部署的要求进行配置。使用Docker只需要一条命令就可以达成,需要MySQL只需要安装一个MySQL的镜像,需要Redis只需要安装一个带Redis的镜像,然后启动这些容器就可以。

容器可以用别人制作的,也可以添加一些自己的软件、修改相应的配置文件做一个镜像,通过这个镜像就可以创建出无数个一模一样的容器。Docker和各大开源项目团队一起维护着庞大高质量的官方镜像,我们可以直接使用或者修改定制后再使用。你还无法体会这样的优势所在,比如通过一个Redis镜像,可以轻松的搭建一个集群。容器更多地用来表示软件的标准化单元,无视物理硬件设施之间的差异部署到任意位置、任意平台,所以容器又被誉为代码集装箱装卸工。

如此这般就不会再出现诸如“这段代码在我机器上运行没有问题”之类的,可以轻松的将在一个平台上运行的应用,迅速的迁移到另一个平台,而不用考虑平台和运行环境的兼容性。

Docker包含了镜像(Image)、容器(Container)、仓库(Repository)

Docker的镜像相当于Linux的root文件系统,它提供容器运行所需要的软件、资源、配置参数、库文件等等。容器才是运行的实体,镜像是经过一层层构建定义的,里面不包含任何动态数据,构建完之后就不会再改变,而容器可以创建、启动、停止、暂停、删除。仓库是用来集中存放镜像文件,这样就便于服务器进行统一的管理。

Docker码头装卸工的形象已经深入人心

Docker将开源仓库的镜像拉到本地,镜像运行后在本地运行形成容器,这个就是Docker码头装卸工的形象,已经深入人心。它赋予了软件独立性,避免了开发、预演、环境之间的差异。Docker这几年这么火爆是不无道理的,好用所以它就火了。

以上个人浅见,欢迎批评指正。

认同我的看法,请点个赞再走,感谢!

喜欢我的,请关注我,再次感谢!

你有关于详细的Docker入门书籍推荐吗

首先,单纯的只学docker我认为意义不大,docker只是整个devops体系中的一个基本单元,没有容器的编排管理,没有资源监控,没有从代码的开发到构建应用的一条龙服务,单个容器学习没有太多意义。建议先掌握简单的容器命令,了解基本原理,实际操作体验明白实际用法。

然后可以研究研究devops,例如openshift整个工作机制。

详细可参考我最近的OCP学习笔记:https://blog.csdn.net/yingwei13mei/article/details/93627641

docker容器内怎么连接外部的mysql

如果单指用docker的话你有很多种办法。

1.通过dockerrun-p将端口暴露出来然后PHP通过db服务器的IP?port进行连接

2.你也可以使用host网络模式通过指定net为host这种情况你也直接IP?port连接

3.你也可以加个代理容器通过这个代理来将流量分发过去

通常情况下这三种办法已经能解决你绝大部分的问题了

docker从容器中怎么访问宿主机

docker跟宿主机交互的是通过原生网络实现的。 当Docker进程启动之后,它会配置一个虚拟的网桥叫docker0在宿主机上。这个接口允许Docker去分配虚拟的子网给即将启动的容器们。这个网桥在容器内的网络和宿主机网络之间将作为接口的主节点。 Docker容器启动后,将创建一个新的虚拟接口并分配一个网桥子网内的IP地址。这个IP地址嵌在容器内网络中,用于提供容器网络到宿主机docker0网桥上的一个通道。Docker自动配置iptables规则来放行并配置NAT,连通宿主机上的docker0,就可以访问宿主机的mysql数据文件了。

如果你还想了解更多这方面的信息,记得收藏关注本站。

Docker启动mysql容器,外部连接是报错,Client does not support authentication protocol 错误