如果我在我的Ubuntu计算机(充当主机OS-已安装Docker)上部署通过选择Alpine Linux作为基础映像构建的映像,那么这里将有两个内核在起作用-一个来自Ubuntu还有另一个来自阿尔卑斯山?我读到Docker容器将共享主机内核,因此我有点困惑。
如果我登录到正在运行的容器并发出另一个命令,那么从主机操作系统的角度来看,这将是另一个过程吗?还是这将是另一个线程?从来宾操作系统的角度来看,我认为这将是两个单独的过程。
请澄清。
答案 0 :(得分:2)
他们共享您的主机内核。 Docker只是将一组进程隔离到一个容器中。
没有来宾操作系统,只有一个容器。并且进程在docker容器中运行,就像它们在您的主机上运行一样。如果在主机上运行top
,则将在Docker容器中运行的所有进程视为任何给定容器的子进程。
答案 1 :(得分:2)
“容器”只是一个抽象术语。这只是在主机(Ubuntu)上运行的另一个进程。由于您的来宾(Alpine)和主机(Ubuntu)都是基于Linux内核的操作系统。最后,您在来宾操作系统中运行的任何命令或程序都会(通过低级库)转换为系统调用,并提供给Ubuntu主机的内核。
“容器”不过是主机内核对其应用一些通用策略的一组进程。因此,假设您在来宾操作系统中运行的任何命令或程序(如您所说的那样)<?php
$conn = mysqli_connect('*****', '****', '*****', '*****');
if (isset($_POST['insert']))
{
$file = addslashes(file_get_contents($_FILES["myfile"]["tmp_name"]));
$query = "INSERT INTO tbl_images(name) VALUES('$file')";
mysqli_query($conn, $query);
}
?>
都会在主机上创建一个进程,该进程具有与容器相同的内核所应用的策略。