当前位置:首页>开发>正文

docker的宿主系统是centos,为什么可以运行ubuntu的镜像 docker从容器中怎么访问宿主机

2024-01-09 05:54:59 互联网 未知 开发

 docker的宿主系统是centos,为什么可以运行ubuntu的镜像 docker从容器中怎么访问宿主机

docker的宿主系统是centos,为什么可以运行ubuntu的镜像

首先需要区分Linux内核与Linux发行版

Linux内核是Linux操作系统的核心, 负责硬件管理, 比如管理内存、管理磁盘(文件系统)、管理CPU(进程)等等...
Linux发行版是在Linux内核的基础上添加了一些工具软件,比如图形界面、函数库、软件包管理系统等等...

CentOS与Ubuntu是不同的Linux发行版, 它们都是基于Linux内核, 只是添加的工具软件不同。比如, 他们的软件包管理系统不同, CentOS使用yum命令安装软件, 而Ubuntu使用apt-get命令安装软件。

因此CentOS与Ubuntu的内核是相同的(版本可能不同), 只是所安装的软件不同, 即文件系统不同。

Docker容器技术是基于Linux内核实现的, 它主要用到了两个内核模块:

Namespace: 用于容器的隔离, 例如PID Namespace使得容器中的进程无法感知宿主机以及其他容器中的进程。
Cgroups: 用于容器的资源控制, 比如限制容器所使用的内存大小或者CPU个数。

在CentOS上运行基于Ubuntu镜像的容器时, 容器使用了CentOS主机的内核以及Ubuntu镜像, Ubuntu镜像中安装了Ubuntu的各种软件(apt-get)。

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

当Docker进程启动之后,它会配置一个虚拟的网桥叫docker0在宿主机上。这个接口允许Docker去分配虚拟的子网给即将启动的容器们。这个网桥在容器内的网络和宿主机网络之间将作为接口的主节点。 Docker容器启动后,将创建一个新的虚拟接口并分配一...

如何解决Docker容器和宿主机时间同步问题

们通过在在宿主机和容器里分别执行date命令来看下实际的情况。
  在宿主机执行date命令的结果:

  进入到容器里,再执行date命令的结果:
  docker exec -it 《containerid》 /bin/sh
  date
  执行后的结果为:

  从截图来看,我们发现相差了8个小时。那么如何解决这个问题呢?目前有两种思路供参考。
  创建容器的时候指定启动参数,自动挂载localtime文件到容器内
  docker run --name 《name》 -v /etc/localtime:/etc/localtime:ro ...
  把时区设置加入到Dockerfile中
  # Ubuntu
  RUN echo “Asia/shanghai” 》 /etc/timezone
  # CentOS
  RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
  以上就是Docker容器和宿主机时间不同步的解决办法,这个问题主要是由于Docker容器没有设置时间导致的,因此用户只需根据上面的介绍的方法进行设置即可。

怎么将docker容器中断目录共享到宿主机

运行docker run --help 命令查看帮助文档
-v, --volume=[] Bind mount a volume

-v参数就是你说的挂载的卷。容器跑起来后,对里面所做的任何更改都是不能保存的。是只读的,所以你那样挂载没有意义。你想查看容器的运行状态?可以挂载比如/etc/等系统目录到容器中的/etc目录,这样应该可以。

最新文章