Docker 实战教程之从入门到提高 (八)
  TEZNKK3IfmPf 2023年11月14日 18 0

本教程的前七篇文章:

以及通过这篇文章的​​介绍​​,我们深入学习了 Docker 技术的三大要点。

从本文开始,我们将分享一些在 Windows 操作系统下的 Docker 实战演练。

本教程之前的文章,介绍的步骤全是在 Ubuntu 操作系统下使用 Docker 的步骤。本练习方便那些使用 Windows 操作系统的学习者,了解如何在 Windows 操作系统下使用 Docker.

这里的 Windows 特指 Windows 10.

Windows 操作系统使用 Docker 的前提是要开启 ​​Hyper V​​ 虚拟技术,在控制面板里把​​Hyper-V​​ 前面的勾选中,重启即可。

Docker 实战教程之从入门到提高 (八)

Docker 官网下载 Docker For Windows 的 Community 版本:

Docker 实战教程之从入门到提高 (八)

下载下来是一个 900 多兆的可执行文件:

Docker 实战教程之从入门到提高 (八)

安装后,在右下角任务栏里能看到 Docker 的图标:

Docker 实战教程之从入门到提高 (八)

安装默认会把 Docker 命令行工具 docker.exe 和容器编排工具 docker-compose.exe 安装到 Program Files 的 Docker 文件夹内:

Docker 实战教程之从入门到提高 (八)

右键可以使用 GUI 的方式来管理:

Docker 实战教程之从入门到提高 (八)

但我们一般情况下还是更习惯于使用命令行工具 ​​docker.exe​​ 对各种容器镜像进行操作。

笔者已经事先开发好了一个 SAP UI5 应用,将其部署并运行在 Nginx 服务器上,并且把该应用和 Nginx 服务器一起打包在一个容器镜像内,并发布到 Docker Hub 上了,该镜像名称如下:

Docker 实战教程之从入门到提高 (八)

命令行里直接运行这个镜像即可:

 

docker run i042416/ui5-nginx:v2.0

 

Docker 实战教程之从入门到提高 (八)

从命令打印日志能看出,因为我的本地环境没有这个名为 ​​i042416/ui5-nginx​​,标签为 v2.0的镜像,因此首先会自动从 Docker Hub 将镜像下载到本地。

之后使用 ​​docker images​​ 命令就能看到这个成功下载到本地的镜像了,大小约为 109MB:

Docker 实战教程之从入门到提高 (八)

现在使用如下的命令行启动一个容器:

 

docker run -d -p 1080:80 --name jerrynginx i042416/ui5-nginx:v2.0

 

各参数含义如下:

-d: 以后台模式启动容器,返回其 ID.

-p: 将容器内部 Nginx 开放的端口 80 映射到宿主机端口 1080,这样宿主机即 Windows 环境下通过浏览器输入 ​​localhost:1080​​ 访问该容器。

Docker 实战教程之从入门到提高 (八)

–name: 给启动的容器实例取一个名字。

执行完命令行之后,浏览器输入如下 url,即可访问到运行在容器内的 Nginx 之上的 SAP UI5 应用:

Docker 实战教程之从入门到提高 (八)

docker ps 命令,能看到这个处于运行状态的容器实例:

Docker 实战教程之从入门到提高 (八)

​docker inspect jerrynginx​​ 能查看明细:

Docker 实战教程之从入门到提高 (八)

在 Windows Docker Desktop 的 Dashboard 菜单里能观察到这个名为 jerrynginx,处于后台运行状态下的容器实例:

Docker 实战教程之从入门到提高 (八)

Docker 实战教程之从入门到提高 (八)

该 Dashboard 提供了针对运行时容器实例的一些基础操作,比如查看日志:

Docker 实战教程之从入门到提高 (八)

以及登入容器实例内部,以交互式方式执行命令行等功能。这些功能均对应有 Docker 命令行工具的实现,可以根据喜好来选择使用。

Docker 实战教程之从入门到提高 (八)

练习2:Windows 10 启动 Docker Desktop 时出现 WSL 2 installation is incomplete 的错误消息

我的 Windows10 操作系统,安装完 Docker Desktop,启动后出现下面的提示窗口:

 

WSL 2 installation is incomplete

 

Docker 实战教程之从入门到提高 (八)

Docker 实战教程之从入门到提高 (八)

把这个 WSL2 Linux kernel update package for x64 machines ​​升级包​​安装之后,Docker desktop 就能顺利启动了:

Docker 实战教程之从入门到提高 (八)

练习3:把运行在 Docker 容器内的 Microsoft SQL 服务器部署到 Kyma 中

本教程的第六篇文章,我们已经介绍过如何在 Docker 里运行 Microsoft SQL 服务器:

​Docker 实战教程之从入门到提高 (六)​

本练习我们将把这个包含了 Microsoft SQL 服务器的 Docker 容器镜像,部署到 Kyma 平台上。

笔者之前的社区征文​​基于 Kyma 的企业级云原生应用的扩展案例分享​​ 曾经介绍过 Kyma,一个开源的云原生应用开发平台和运行时,底层基于 Kubernetes,借助一系列包括 Istio, NATS, Serverless 和 Prometheus 在内的其他优秀开源项目和组件,能够开发、运行和操作云原生应用程序,支持对传统的 On-Premises(本地部署)应用程序和云原生应用基于事件驱动模式的松耦合扩展。

新建一个 ​​secret.yaml​​ 文件,维护数据库的用户名和密码等 credential 信息。

Docker 实战教程之从入门到提高 (八)

定义了一个 PersistentVolume,用于存储数据库的数据。

Docker 实战教程之从入门到提高 (八)

新建一个 ​​deployment.yaml​​​ 文件,为 MSSQL 数据库定义一个 deployment 和一个 Service,用于通信。该文件使用到了前面创建的 ​​pvc.yaml​​​ 和 ​​secret.yaml​​ 文件。

Docker 实战教程之从入门到提高 (八)

配置好 ​​kubectl​​ 和 ​​SAP Kyma​​ 的连接。

使用命令行创建名为 dev 的 namespace:

 

kubectl create namespace dev

 

Docker 实战教程之从入门到提高 (八)

使用命令行部署 secret.yaml 和 pvc.yaml:

 

kubectl -n dev apply -f ./k8s/pvc.yaml

 

Docker 实战教程之从入门到提高 (八)

注意,如果遇到下列错误消息:

 

error: you must be logged in to the server ( the server has asked for the client to provide credentials):

 

Docker 实战教程之从入门到提高 (八)

解决办法就是从 Kyma 控制台重新下载一份 kubeconfig:

Docker 实战教程之从入门到提高 (八)

成功部署 PersistentVolumeClaim:

 

persistentvolumeclaim/mssql-data created

 

Docker 实战教程之从入门到提高 (八)

成功部署 secret:

Docker 实战教程之从入门到提高 (八)

Docker 实战教程之从入门到提高 (八)

Docker 实战教程之从入门到提高 (八)

最后使用如下命令,将本地 k8s 文件夹里的 yaml 文件代表的 deployment 资源,部署到 SAP Kyma 上:

Docker 实战教程之从入门到提高 (八)

部署成功后,使用命令行查看自动生成的 pod 的名称:

我的 pod 名称:

 

mssql-74787d5b48-lr877

 

Docker 实战教程之从入门到提高 (八)

使用如下命令行拿到该 pod 监听的端口号

kubectl get pod mssql-74787d5b48-lr877 -n dev --template="{{(index (index .spec.containers 0).ports 0).containerPort}}"

得到端口号:1433

使用如下命令为 pod 设置端口转发,即 port forward 功能:

kubectl port-forward mssql-74787d5b48-lr877 -n dev 1433:1433
看到如下输出:

Forwarding from 127.0.0.1:1433 -> 1433
Forwarding from [::1]:1433 -> 1433

Docker 实战教程之从入门到提高 (八)

接下来,我们就可以在本地,使用 localhost:1433 访问运行在 SAP Kyma 里的数据库了。

sqlcmd -S localhost:1433 -U SA -P Yukon900
使用如下命令找到 pod 里的 container 名称:mssql

kubectl describe pod mssql-74787d5b48-lr877 -n dev

Docker 实战教程之从入门到提高 (八)

使用命令

kubectl exec -it mssql-74787d5b48-lr877 -n dev -c mssql – bash
需要提前设置环境变量:

set KUBECONFIG=C:\app\kubeconfig.yml

Docker 实战教程之从入门到提高 (八)

Docker 实战教程之从入门到提高 (八)

Docker 实战教程之从入门到提高 (八)

最终可以进入 pod,登录 SQL 服务器的控制台,采用 ​​SELECT * FROM ORDERS​​ 命令行读取数据库里的订单数据:

Docker 实战教程之从入门到提高 (八)

总结

本系列首先介绍了 Windows 操作系统下 Docker 软件的安装和使用前提,包括开启 Hyper V 技术后遇到的一些错误消息和解决方案,最后介绍了如何将 Docker 镜像部署到基于 Kubernetes 的 Kyma 平台并运行的详细步骤。

本教程的前七篇文章:

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月14日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   2024年05月17日   46   0   0 dremiosqltable
  TEZNKK3IfmPf   2024年04月26日   47   0   0 java数据库sql
  TEZNKK3IfmPf   2024年05月17日   48   0   0 sqlmysql
  TEZNKK3IfmPf   2024年05月17日   35   0   0 sqlcube
  TEZNKK3IfmPf   2024年04月26日   50   0   0 Docker
  TEZNKK3IfmPf   2024年04月26日   23   0   0 javasql
  TEZNKK3IfmPf   2024年04月19日   49   0   0 sqlUser
TEZNKK3IfmPf