精华内容
下载资源
问答
  • 一、Docker 是什么Docker 一定程度上可以将其想象一个更轻量的电脑,有自己私有化的操作系统,网络,独立的内存。并且其提供了足够强的封装能力。同集装箱类比,我们在一个空间内封装好了一切。宿主机就是拉箱子的...

    一、Docker 是什么?

    Docker 一定程度上可以将其想象一个更轻量的电脑,有自己私有化的操作系统,网络,独立的内存。并且其提供了足够强的封装能力。同集装箱类比,我们在一个空间内封装好了一切。宿主机就是拉箱子的船,一个封装好的集装箱就是一个独立的存在,可以做到地下的船随意换,而箱子内容不变。正式Docker 有了这种能力,在我们安装服务的时候避免对宿主机繁琐的配置,就可以将一个软件运行起来。以前我们开发一个java程序,宿主机必须提供jre 环境。如果没有这个环境,不好意思该程序无法执行,有了容器后这些就简单了。拉取一个镜像,然后运行起来,结束。

    二、Docker Engine

    在 Docekr 中有一个核心就是 Docker Engine,这个是什么呢?就简单的将其理解为一个C/S服务吧,更通俗的讲就是个软件。整体架构图如下:

    59ff9ced3dd0d2fbe9b48ff57f0f1fec.png

    在这里对其核心的部分概念进行简单的介绍,没有提及的内容,过于相比较复杂,在后文中再进行进行详细描述:

    • Server:整个结构最核心的部分,命令的真实执行者,里面住着 docker daemon,简单的说就是一个守护docker守护进程,长期的运行着,常驻于内存中,负责创建和管理dockers 对象,比如:image,containers,network和volume。在Linux 中可以找到一个叫 dockerd 的进程就是它。
    • Rest Api: 正如它的名字就是一个对外提供的接口,利用这些接口可以实现对 docker 服务的调用执行,完成和 daemon 通信。
    • Client: 最外层的命令行界面(CLI)。

    三、Docker 架构

    Docker 就是前文提到的C/S 架构,整体架构图如下:

    https://docs.docker.com/engine/images/architecture.svgdocs.docker.com

    Docker 的整体架构分为三部分,Clint,Docker_Host,Registey,上图有很清晰的处理流程:

    • Clinet:和前文中提到的一致,就是命令行的操作界面,通过其使用Api 接口,完成和Doceker daemon 的通信。
    • Docker_Host: Docker 的宿主机,可以是物理机,也可以是虚拟机,上面跑着一个dockers 服务,我们使用 docker daemon 实现对docker 对象生命周期管理。
    • Registey: docker registry 严格意义它不属于docker中,他是另外的一个仓库服务,是docker 镜像的存储中心,docker 的官方仓库为docker hub,也之处我们自己创建。为了方便在开发团队中我们会维护一个仓库,这个仓库我们一般使用 harbor 实现。

    四、Docker 对象

    在上文中我提到一个概念叫 docker 对象,事实这些对象才是我们每天要用的东西,常用的主要有 imagecontainersnetworkvolumesplugins。这里对容器中两个常用的做简单概述说明。

    • images: 是一个封装好的只读模板文件,用于后期创建创建容器使用。内部封装了最小操作系统,你的应用程序,以及一些其他必备服务,这些封装内容完全可以有用户指定。
    • containers:容器是通过image 运行起来的一个实例。可以看作一个进程。内部含有独立的网络和存储,容器与容器,容器与宿主机之间默认是隔离的。
    参考资料:https://docs.docker.com/get-started/overview/
    展开全文
  • docker宿主机使用-P命令随机端口绑定的docker指定端口(比如每个容器都暴露8080端口), 但是容器中无法知道宿主机的ip和映射端口,即eureka上的实例不知道暴露给外部的什么访问IP和端口(宿主机IP和宿主机port)。...
  • 先通过如下操作可以找到JAVA进程找到对应程序是什么。 第一步,先通过TOP找出你JAVA进程对应PID。 第二步,到对应PID目录下。 // 到对应PID目录下,执行: /proc/PID cd /proc/28990 第三步,查看对应进程的信息,...

    当不同容器中都有启动JAVA程序时,通过在DOCKE宿主机上使用TOP命令会出现多个JAVA进程,无法直观找到对应JAVA进程对应的是哪个程序。通过如下操作可以找到JAVA进程对应程序是哪个。

    第一步,先通过TOP找出你JAVA进程对应PID。
    在这里插入图片描述
    第二步,到对应PID目录下。

    // 到对应PID目录下,执行: /proc/PID
    cd /proc/28990
    

    第三步,查看对应进程的信息,如果JAVA程序是按照jar包方式启动的执行:cat environ ,如果JAVA程序是使用容器(如TOMCAT)启动的执行:ls -ail
    cat environ命令通过容器名称判断JAVA程序。
    在这里插入图片描述
    ls -ail命令通过程序启动路径判断JAVA程序。
    在这里插入图片描述

    展开全文
  • 懒得描述太多,总归解决了...第一,先检查防火墙,通常应该没什么问题(问题解决之后我把这块规则去掉了,发现没什么影响,所以容器的话,可能docker已经解决了防火墙的问题,但是不排除其他人会有这个问题.)添加规则针对...

    懒得描述太多,总归是解决了问题,方法简要记录如下,虽然简要,但是完整,一来纪念处理该问题耗费的大半天时间,二来本着共享精神帮助其他遇到该问题的哥们儿,当然这个方法并不一定能解决你们的问题,但是多少能提供些解决思路.

    第一,先检查防火墙,通常应该没什么问题

    (问题解决之后我把这块规则去掉了,发现没什么影响,所以容器的话,可能docker已经解决了防火墙的问题,但是不排除其他人会有这个问题.)

    添加规则

    f2940af480e1b4b65ede0eee02de2ab9.png

    针对特定地址开放3306端口,一定程度上保证数据库的安全

    iptables-I INPUT -s 172.17.0.2 -p tcp --dport 3306 -j ACCEPT

    展示当前规则

    iptables-save

    将规则输出至文件

    iptables-save >iptables.rules.backup

    将文件内规则导出至当前防火墙,规则生效

    iptables-restore < iptables.rules.backup

    f2940af480e1b4b65ede0eee02de2ab9.png

    第二,修改MySQL配置文件,将绑定的配置注释掉,然后添加数据库user表中root用户Host记录,使该用户可以在该IP地址远程连接数据库

    引起的问题:

    Can’t connect to MySQL server on (111 “Connection refused”)

    解决:

    找到自己MySQL数据库配置文件的位置,编辑

    /etc/mysql/mysql.conf.d# vi mysqld.cnf

    将 bind 127.0.0.1注释掉

    开放远程连接后,会出现第二个问题:

    "Host ‘172.17.0.2‘ is not allowed to connect to this MySQL server"

    解决办法:

    root 进入数据库,执行下方两行命令:

    grant all privileges on *.* to ‘root‘@‘172.17.0.2‘ identified by ‘pswd‘ with grant option;

    开放所有权限给root,当root以pswd(不一定是root登录密码,仅作为情景下登录的密码)密码从 172.17.0.2 登入的时候,允许其操作所有数据库下的所有表(也可以将 *.* 改成特定数据库下的特定表,这个随意).

    flush privileges;

    刷新

    重启数据库

    /etc/init.d/mysql stop

    /etc/init.d/mysql start

    再从docker访问数据库的时候就可以了

    root@2395caf9da2b:~/backends# telnet 172.17.0.1 3306

    Trying 172.17.0.1...

    Connected to 172.17.0.1.

    Escape character is ‘^]‘.

    这样的结果就是,仅开放一个IP地址的权限

    注意,网上有许多好心的哥们儿也提供了修改的命令,grant all privileges on *.* to ‘root‘@‘%‘ identified by ‘pswd‘ with grant option;

    就是把IP地址改成了%,这样的结果就是当root从任意机器远程连接的时候只要密码正确,都会接受,一劳永逸,不过这样多少优点安全隐患,自己把握吧.

    展开全文
  • 首先这个帖子,献给docker新手。当然如果你一个老手,文中分割线后的操作方法也一种思路。...实现这种需求,其实非常简单,你只需要将docker宿主机的docker文件和docker.sock文件挂载到容器中即可,具体为:
  • 首先这个帖子,献给docker...至于为什么要在docker中操作宿主机docker,优点不言而喻,你既可以将你的具体需求容器化部署,又不用直接在宿主机上安装(假设我们没有办法在docker中操作宿主机docker,那么我们只...

    首先这个帖子,献给docker新手。当然如果你是一个老手,文中分割线后的操作方法也是一种思路。

    首先说一下,如何在docker中执行宿主机的docker操作,我们管它叫docker in docker。
    至于为什么要在docker中操作宿主机的docker,优点不言而喻,你既可以将你的具体需求容器化部署,又不用直接在宿主机上安装(假设我们没有办法在docker中操作宿主机的docker,那么我们只能将这样的软件程序直接安装到宿主机上,这样显然是不利于管理和维护的)。

    实现这种需求,其实非常简单,你只需要将docker宿主机的docker文件和docker.sock文件挂载到容器中即可,具体为:

    -v /var/run/docker.sock:/var/run/docker.sock 
    -v /usr/bin/docker:/usr/bin/docker
    

    你要先找到你宿主机的docker和docker.sock位置,别挂载错了,标准的Linux正常来说就是上面的位置。

    你在启动docker容器的时候,将上述两个文件正常挂载后,就可以在docker中执行诸如 docker images 等等这样的命令了。

    如果出现问题 permission denied

    Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock
    …………………………………………………………
    dial unix /var/run/docker.sock: connect: permission denied
    

    解决方法
    在容器所在的宿主机上直接给 docker.sock 777权限,命令 chmod 777 docker.sock


    华丽丽的分割线


    下面是针对群辉系统,你不用太关心这个系统是什么,总之就是这个系统在docker方面有一些特有的问题,导致你不能这么随心所欲,所以我采用了一种变通的方法来处理(一种思路,抛砖引玉)
    先叙述一下现状:
    该系统提供了docker的UI管理工具,我们在这个工具上可以进行常规的挂载操作,但是如果我们想挂载上面的docker和docker.sock文件,就不行了,先看一下截图:
    在这里插入图片描述
    说一下图上UI操作的局限性!
    群辉官方进行了限制,你可以选择的文件,是不可能选择到 /usr/ /va/ 等这样系统层面的文件的,也就是我们无法直接挂载docker和docker.sock文件。

    ln -s 软连接是否可行?
    经尝试,先通过ssh命令行在jenkins文件夹中创建2个软连接(将docker和docker.sock进行软连接),然后回到群辉的UI界面,依然不能选择(因为群辉直接屏蔽了软连接文件,你是看不到的)

    那么如何解决呢?
    我的方法是(软连接的方法变通一下):
    1、在图上的jenkins目录下随便创建2个文件 docker 和 docker.sock 文件(命名正确即可)
    2、然后在docker点击“添加文件”按钮,正常选择这2个文件,进行挂载,你完全可以正常挂载并且完成其他配置,配置完毕后,暂时不要启动docker容器。
    3、登录ssh进入群辉,将jenkins目录中刚刚创建的2个文件删除掉,然后把docker和docker.sock源文件创建软连接到jenkins中。

    root@test:cd /volume1/docker/jenkins/
    root@test:rm -rf docker docker.sock
    root@test:ln -s /run/docker.sock /volume1/docker/jenkins/docker.sock
    root@test:ln -s /usr/local/bin/docker /volume1/docker/jenkins/docker
    root@test:/volume1/docker/jenkins# ll
    total 8
    drwxrwxrwx+ 1 Nuggets    users   96 Jun  6 11:22 .
    drwxr-xr-x+ 1 root       root   188 May 30 19:29 ..
    lrwxrwxrwx  1 root       root    21 Jun  6 11:22 docker -> /usr/local/bin/docker
    lrwxrwxrwx  1 root       root    16 Jun  6 11:21 docker.sock -> /run/docker.sock
    drwxrwxrwx+ 1 shanhongyu users   24 Jun  1 11:07 java_home
    drwxrwxrwx+ 1 Nuggets    users 4476 Jun  6 11:00 jenkins_home
    drwxrwxrwx+ 1 shanhongyu users   82 Jun  1 11:12 maven_home
    

    4、然后回到群辉UI,启动容器,这样就完美了。
    (群辉不让你选软连接,但是linux和docker本质上是可以直接挂载软连接的)

    (END)

    展开全文
  • 首先这个帖子,献给...至于为什么要在docker中操作宿主机docker,优点不言而喻,你既可以将你的具体需求容器化部署,又不用直接在宿主机上安装(假设我们没有办法在docker中操作宿主机docker,那么我们只能将...
  • 首先说一下,如何在docker中执行宿主机的docker操作,我们管它叫docker in docker。 ...实现这种需求,其实非常简单,你只需要将docker宿主机的docker文件和docker.sock文件挂载到容器中即可,具体为: -
  • 利用Docker在不同宿主机上做CentOS系统容器一、背景二、我为什么选择用Docker虚拟化服务器?三、Docker的安装四、Docker容器在不同宿主机间通信4.1、不同宿主机间容器通信原理图4.2、不同宿主机间容器通信安装部署...
  • Docker 多台宿主机多应用部署

    万次阅读 2018-11-12 16:54:54
    文章目录实验目标overlay...  这里存在两台宿主机,55.9 和 55.11,把连个 Container 放在了两台宿主机上,这种方式该怎么进行通信呢,这里就用到了原来没有说到过的 Docker 的另一种网络方式:overlay。 overlay...
  • 一、什么是Docker Machine Docker Machine 是Docker官方编排项目之一,使用go语言编写的,...Docker Machine 一个工具,它允许你在虚拟宿主机上安装Docker,并使用docker-machine命令管理这个宿主机,可以使用...
  • 宿主机如何访问docker中hadoop的hdfs:ip:9000啊, 端口映射出来啊本人有一个3节点hadoop, 启动了3个docker容器, 众所周知, docker容器内服务的端口可以映射到宿主机的端口的, 我采用-P将容器的所有端口映射到主机...
  • Docker】从宿主机复制文件到容器

    千次阅读 2019-09-16 22:58:55
    在之前写过这样一份文章 ... 那么今天在来说一下,由于没有系统的学习docker所以用到什么就记录下来 1. 依然在容器里边查看配置文件,没有redis....2. 直接从宿主机直接复制 docker cp /etc/redis.conf 5428282...
  • 01、Docker是什么 Docker是一个开源的软件,它允许开发人员将应用程序和程序所依赖的库等运行环境一起打包,构建出容器镜像后开发人员可以放心的将整个镜像包移植到任意服务器上运行。由于Docker是连同依赖环境一同...
  • 1 问题描述 Docker启动MySQL容器后,创建一个localhost访问的用户: create user test@localhost ...至于为什么能在宿主机访问root,因为默认存在两个root,分别: root@localhost root@% 而test只有一个
  • 懒得描述太多,总归解决了...第一,先检查防火墙,通常应该没什么问题(问题解决之后我把这块规则去掉了,发现没什么影响,所以容器的话,可能docker已经解决了防火墙的问题,但是不排除其他人会有这个问题.)添加规则针对...
  • 容器的网络架构 在宿主机上执行ifconfig命令查看机器上的网络...什么是网桥呢,根据OSI七层网络模型,网桥数据链路层的一种设备,用来通过MAC地址(网络的物理地址)来对网络进行划分,在不同的网络之间,进行...
  • 1Q:什么是Docker?A:Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机...
  • Lumion 一款实时 3D 可视化软件,常用于建筑与景观表现,在国内设计圈鼎鼎有名。可“格盘病毒”却部分 Lumion 使用者心中抹不去的痛,至今贴吧仍流传着惨痛的传说。对于怕中毒但又想体验新版的人,虚拟机自然...
  •   在docker部署nacos的时候遇到了这个样子的问题No route to host 导致了nacos容器无法连接宿主机docker数据库。   然后我就进入到了nacos容器里面,ping了宿主机的地址,结果通着的,然后使用telnet测试了...
  • 通过端口映射到宿主机的mysql存储文件从而达到docker读取宿主机mysql数据,并做mysql集群的功能,但是现在遇到这样的一个问题,第四步的节点创建成功了但是Navigcat却无法正常连接到宿主机的mysql请问是什么原因呢?...
  • 一、什么是容器网络栈 所谓容器能看见的“网络栈”,被隔离在自己的Network Namespace当中 网卡(network interface) 回环设备(loopback device) 路由表(Routing Table) iptables规则 当然 ,容器可以...
  • 我想把数据持久化,但是有不知道需要编写什么文件 思路 先随便启动一个容器例如es 进入容器内部查看文件结构 把容器内的文件复制出来 删除容器,使用挂载方式创建容器 容器内部查看文件结构(以es为例) 查看 ...
  • 关于什么是docker,为什么要使用docker,这个文章里面就不提了。这里主要以实际操作为例,在一台服务器上操练如何安装使用docker的过程。Docker的基础Docker环境需要安装在一台Linux服务器上,我们这里用一台...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 484
精华内容 193
关键字:

docker宿主机是什么