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
# kubedock server --help
Copy to Clipboard Copied!
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
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。