【k8s学习笔记-容器概念入门(四)-重新认识Docker 容器】

使用Docker 部署一个用 Python 编写的 Web 应用

查看现有的目录,首先要cd develop ,将对develop做改变。进入到develop中,在其中创建一个项目 mkdir tiger
然后 cd tiger 去改变tiger,
使用touch app.py来创建app.py这个文件
同样的操作,使用touch requirements 、dockerfile来创建这两个文件

在这里插入图片描述
上图已经分别创建好空文件夹,接下来就是往里面填充东西。
使用ls命令,可以看到在tiger下面已经有了这个三个文件

使用cat app.py 来查看app.py的内容,可以看到里面是空白的,需要我们去填充

使用vim 命令进入编辑器,使用’i’进入输入模式,然后分别把相应的代码填充进去。
填充好后,使用:w,:q

在这里插入图片描述
完成文件填充后,
使用CMD来启动app.py
docker build -t hello word来构造镜像
在这里插入图片描述
构造后在下面的docker images中就可以查询到hello word 了
在这里插入图片描述
docker run -p 4000:80 helloworld 运行这个镜像

](https://img-blog.csdnimg.cn/9f7380d9b621411eaa955cf17a988a8d.png)
然后就可以在本地看到这个程度了
docker ps ,查看当前的程序的状态
在这里插入图片描述
在这里插入图片描述
通过下面的命令,可以查看到容器的进程号是2354
在这里插入图片描述
docker exec的原理:一个进程,可以选择加入到某个进程已有的 Namespace 当中,从而达到“进入”这个进程所在容器的目的,这正是 docker exec 的实现原理

volume 数据卷

之前学习过,容器技术使用了 rootfs 机制和 Mount Namespace,构建出了一个同宿主机完全隔离开的文件系统环境。

考虑两个问题:

  1. 容器里进程新建的文件,怎么才能让宿主机获取到?
  2. 宿主机上的文件和目录,怎么才能让容器里的进程访问?

Volume 机制:

允许你将宿主机上指定的目录或者文件,挂载到容器里面进行读取和修改操作。通过volume机制,可以在容器里面访问宿主机的文件,也可以在宿主机上访问容器里面的文件。

下面的-v就是执行volume操作,可以把宿主机目录挂载进容器的 /test 目录当中
$ docker run -v /test …
$ docker run -v /home:/test …

而这两种声明方式的本质,实际上是相同的:都是把一个宿主机的目录挂载进了容器的 /test 目录。只不过,在第一种情况下,由于你并没有显示声明宿主机目录,那么 Docker 就会默认在宿主机上创建一个临时目录 /var/lib/docker/volumes/[VOLUME_ID]/_data,然后把它挂载到容器的 /test 目录上。而在第二种情况下,Docker 就直接把宿主机的 /home 目录挂载到容器的 /test 目录上。

挂载技术

它的主要作用就是,允许你将一个目录或者文件,而不是整个设备,挂载到一个指定的目录上。并且,这时你在该挂载点上进行的任何操作,只是发生在被挂载的目录或者文件上,而原挂载点的内容则会被隐藏起来且不受影响。

绑定挂载实际上是一个 inode 替换的过程。在 Linux 操作系统中,inode 可以理解为存放文件内容的“对象”,而 dentry,也叫目录项,就是访问这个 inode 所使用的“指针”。
在这里插入图片描述

docker 容器的全景图

在这里插入图片描述
周六早上学习,棒棒的

猜你喜欢

转载自blog.csdn.net/Amelie123/article/details/126315118