k8s(二)基础使用-制作docker镜像

2023-02-19  本文已影响0人  码男将将

1.创建、运行及共享容器镜像

1.1安装 Docker并运行第一个“Helloworld”容器

busybox是一个单一可执行文件,包含多种标准 UNIX命令行工具如 : echo、ls、gzip 等.除了包含 echo 命令的 busybox 命令,也可以使用如 Fedora、 Ubuntu 等功能完备的镜像 。

image-20230218102025589.png

目前的应用是单一可执行文件 (busybox) ,但也可以是一个有许多依赖的复杂应用。 整个配 置运行应用的过程是完全一致的。 同样重要的是应用是在容器内部被执行的,完全独立于其他所有主机上运行的进程。

image-20230218102238119.png

在浏览器中搜索 http:/hub. docker.com或其他公开的镜像中心的可用镜像之后,可以像这样在 Docker中运行镜像:
$ docker run <image>

所有的软件包都会更新, 所以通常每个包都不止一个版本。 Docker支持同一镜像的多个版本。每一个版本必须有唯一的 tag名。 当引用镜像没有显式地指定 tag时, Docker会默认指定 tag为 latest。 如果想要运行别的版本的镜像, 需要像这样指定镜像的版本:
$ docker run <image>:<tag>

1.2创建一个简单的web应用

构建一个简单的flask Web 应用,并把它打包到容器镜像中 。这个应用会接收 HTTP 请求并响应应用运行的主机名 。

这样应用运行在容器中,看到的是自己的主机名而不是宿主机名,即使它也像其他进程一样运行在宿主机上 。

当应用部署 在 Kubernetes 上并进行伸缩时(水平伸缩,复制应用到多个节点),你会发现 HTTP 请求切换到了应用的不同实例上 。

应用包含一个名为 app. py的文件,详见下面的代码清单。

from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello_world():
 return "<p>Hello, World!</p>"

if __name__ == "__main__":
 app.run(host="0.0.0.0", port=5050)

注意:返回的主机名是服务器真实的主机名,不是客户端发出的 HTTP 请求中头的 Host 字段。

1.3 为镜像创建Dockerfile

为了把应用打包成镜像,首先需要创建一个叫 Dockerfile 的文件,它包含了一系列构建镜像时会执行的指令 。

Dockerfile 文件需要和 app.py文件在同一目录,并包含下面代码清单中的命令 。

FROM ubuntu:20.04 # 基础镜像

RUN apt-get update && apt-get install -y python3.8 python3-pip # 安装python

RUN python3 -m pip install --upgrade pip setuptools==45.2.0 # 更新包管理工具

RUN python3 -m pip install flask # 安装flask

COPY app.py /app.py # 拷贝项目文件到容器内

CMD ["python3", "app.py"] # 执行命令

1.4构建容器镜像

现在有了 Dockerfile 和 app.js 文件,这是用来构建镜像的所有文件 。 运行下面 的 Docker命令来构建镜像:
$ docker build -t kubia .

image-20230218110810750.png

1.5 运行容器

这个容器与命令行分离( -d 标志),这意味着在后台运行 .

本机上的5050端口会被映射到容器内的5050端口( -p 5050: 5050 选项),所以可以通过 http:// localhost:5050 访问这个应用 。


image-20230218131154441.png

1.6探索容器内部

由于一个容器里可以运行多个进程,所以总是可以运行新的进程去看看里面发生了什么。如果镜像里有可用的shell二进制可执行文

件,也可以运行一个shell。

这证明了运行在容器中的进程是运行在主机操作系统上的。

进程的 ID 在 容器中与主机上不同,容器使用独立的 PID Linux 命名 空间并且 有着独立的系列号,完全独立于进程树。

1.7停止和删除容器

1.8向仓库推送镜像

$ docker login
$ docker push amazingquyj/kubia
image-20230218142727470.png
上一篇 下一篇

猜你喜欢

热点阅读