1.6. 使用 kubedock 运行容器
Kubedock 是一个最小的容器引擎实现,您可以在 OpenShift Dev Spaces 工作区内为您提供类似 Podman-/docker 的体验。在处理临时、临时和测试容器时,Kubedock 特别有用,比如在以下列出的用例中:
- 执行依赖 Testcontainers 框架的应用程序测试。
- 使用 Quarkus Dev Services.
- 运行存储在远程容器注册表中的容器,用于本地开发目的
您要与 kubedock 搭配使用的镜像必须符合 Openshift Container Platform 指南。否则,使用 kubedock 运行镜像会导致失败,即使同一镜像在没有问题的情况下在本地运行。
启用 kubedock
启用 kubedock 环境变量后,kubedock 将运行以下 podman 命令:
-
Podman 运行 -
Podman ps -
podman exec -
podman cp -
podman logs -
podman inspect -
Podman kill -
podman rm -
Podman wait -
Podman stop -
Podman start
podman build 等其他命令由本地 Podman 启动。
在 kubedock 中使用 podman 命令有以下限制
-
podman build -t <image> . && podman run <image> 命令将失败。使用podman build -t <image> . && podman push <image> && podman run <image> 替代。 -
不支持
podman generate kube命令。 -
--env选项会导致podman run命令失败。
先决条件
Process
将
KUBEDOCK_ENABLED=true环境变量添加到 devfile。(可选)使用
KUBEDOCK_PARAM变量来指定额外的 kubedock 参数。变量列表位于 此处。另外,您可以使用以下命令查看可用选项:# kubedock server --help
Example
schemaVersion: 2.2.0
metadata:
name: kubedock-sample-devfile
components:
- name: tools
container:
image: quay.io/devfile/universal-developer-image:latest
memoryLimit: 8Gi
memoryRequest: 1Gi
cpuLimit: "2"
cpuRequest: 200m
env:
- name: KUBEDOCK_PARAMS
value: "--reverse-proxy --kubeconfig /home/user/.kube/config --initimage quay.io/agiertli/kubedock:0.13.0"
- name: USE_JAVA17
value: "true"
- value: /home/jboss/.m2
name: MAVEN_CONFIG
- value: -Xmx4G -Xss128M -XX:MetaspaceSize=1G -XX:MaxMetaspaceSize=2G
name: MAVEN_OPTS
- name: KUBEDOCK_ENABLED
value: 'true'
- name: DOCKER_HOST
value: 'tcp://127.0.0.1:2475'
- name: TESTCONTAINERS_RYUK_DISABLED
value: 'true'
- name: TESTCONTAINERS_CHECKS_DISABLE
value: 'true'
endpoints:
- exposure: none
name: kubedock
protocol: tcp
targetPort: 2475
- exposure: public
name: http-booster
protocol: http
targetPort: 8080
attributes:
discoverable: true
urlRewriteSupported: true
- exposure: internal
name: debug
protocol: http
targetPort: 5005
volumeMounts:
- name: m2
path: /home/user/.m2
- name: m2
volume:
size: 10G
您必须在运行容器时将 Podman 或 docker API 配置为指向 kubedock 设置 CONTAINER_HOST=tcp://127.0.0.1:2475 或 DOCKER_HOST=tcp://127.0.0.1:2475。
同时,您必须将 Podman 配置为在构建容器时指向本地 Podman。