gpt4 book ai didi

azure - Docker-Compose/Kubernetes Yaml 文件上的 CentOS 镜像问题

转载 作者:行者123 更新时间:2023-12-02 12:06:57 25 4
gpt4 key购买 nike

我有一个 dockerfile,可以在 CentOS 上作为基本镜像正常运行并启用 systemd,如 CentOS 官方 docker hub 镜像文档中的建议 - https://hub.docker.com/_/centos/ .

我必须使用以下命令启动我的容器 -

docker run -d -p 8080:8080  -e "container=docker" --privileged=true -d --security-opt seccomp:unconfined --cap-add=SYS_ADMIN -v /sys/fs/cgroup:/sys/fs/cgroup:ro myapplicationImage bash -c "/usr/sbin/init"

到这里,一切都像魅力一样,我可以运行我的图像,一切都工作正常。我正在尝试将我的镜像部署到 Azure 容器服务,因此我尝试创建一个使用此 docker 镜像并创建集群的 yaml 文件。

我的 Yaml 文件如下所示。

apiVersion: apps/v2beta1
kind: Deployment
metadata:
name: myapp-test
spec:
replicas: 1
template:
metadata:
labels:
app: myapp-test
spec:
containers:
- name: myapp-test
image: myappregistry.azurecr.io/myapp-test:1.0
ports:
- containerPort: 8080
args: ["--allow-privileged=true","bash"]
securityContext:
capabilities:
add: ["SYS_ADMIN"]
privileged: true
command: [ "-c","/usr/sbin/init" ]
imagePullSecrets:
- name: myapp-secret-test
---
apiVersion: v1
kind: Service
metadata:
name: myapp-test
spec:
type: LoadBalancer
ports:
- port: 8080
selector:
app: myapp-test

这不会提升我的形象。以上是kubernetes集群的yaml文件。我也尝试过 Docker-Compose。

version: '3'

services:
myapp-test:
build: ./myapp-folder
environment:
- container=docker
volumes:
- ./sys/fs/cgroup:/sys/fs/cgroup:ro
ports:
- "8082:8080"
privileged: true
cap_add:
- SYS_ADMIN
security_opt:
- seccomp:unconfined
command: "/usr/sbin/init"

这两种配置都无法创建容器。我使用与上面 docker run time 命令中提到的相同配置并将其转换为 yaml。但运行时命令有效,我可以访问我的应用程序,但 yaml 文件失败。我错过了什么吗?

这是我的 kubernetes 错误:

➜  $ kubectl get po --watch                 
NAME READY STATUS RESTARTS AGE
myapp-test-6957c57f6c-zmbt6 0/1 RunContainerError 4 9m
myapp-test-6957c57f6c-zmbt6 0/1 CrashLoopBackOff 4 9m

➜ $ kubectl get svc --watch
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
myapp-test LoadBalancer 10.0.X.XXX 120.XXX.XX.XXX 8080:30150/TCP 12m
kubernetes ClusterIP 10.0.0.1 <none> 443/TCP 43m

如果是 Docker Compose:

容器正常运行,但我的应用程序内的服务无法启动。我无法访问我的 localhost:8080,但容器仍在运行。

我在想,在 compose 或集群上访问它时,这是否与启用了 systemd 的容器有关?

谢谢!

最佳答案

根据the fine manual ,如果您提供 command: 它会取代 ENTRYPOINT,并且 args: 会取代 CMD,这意味着您的最终“命令”该图像运行的是:

-c /usr/sbin/init --allow-privileged=true bash

这对于前导的 -c 看起来非常可疑,特别是因为您的 docker-compose.yml 仅包含 /usr/sbin/init .

关于azure - Docker-Compose/Kubernetes Yaml 文件上的 CentOS 镜像问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51249171/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com