我怎样才能 运行 来自 docker 图像的 docker 容器,来自 docker hub in skaffold?
How can I run a docker container from a docker image from docker hub in skaffold?
假设我想 运行 来自 docker hub 的图像的容器,假设 mosquitto 我会执行 docker run -it -p 1883:1883 -p 9001:9001 eclipse-mosquitto
.
我尝试从 gcr.io (deployment.yaml
) 中提取图像,就像完成 here:
apiVersion: v1
kind: Service
metadata:
name: mqtt-broker
labels:
app: mqtt-broker
spec:
type: NodePort
ports:
- targetPort: 1883
port: 1883
selector:
app: mqtt-broker
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: mqtt-broker
labels:
app: mqtt-broker
spec:
replicas: 1
selector:
matchLabels:
app: mqtt-broker
template:
metadata:
labels:
app: mqtt-broker
spec:
containers:
- name: mqtt-broker
image: gcr.io/vu-james-celli/eclipse-mosquitto # https://hub.docker.com/_/eclipse-mosquitto
ports:
- containerPort: 1883
skaffold.yaml
:
apiVersion: skaffold/v2beta10
kind: Config
build:
artifacts:
- <other image builds>
deploy:
kubectl:
manifests:
- mqtt-broker/*
portForward:
- resourceType: deployment
resourceName: mqtt-broker
port: 1883
localPort: 1883
<other port forwardings>
...
然而,当我 运行 skaffold --dev --port-forward
我在输出中得到一个错误:
- deployment/mqtt-broker: container mqtt-broker is waiting to start: gcr.io/vu-james-celli/eclipse-mosquitto can't be pulled
当使用 kubectl
到 运行 作为部署的一部分的 mosquitto 容器时,我必须如何配置 skaffold.yaml
(schema version v2beta10)?
您可以使用引用 eclipse-mosquitto
的单个容器创建一个 pod,然后确保从您的 skaffold.yaml
.
引用该 pod
apiVersion: v1
kind: Pod
metadata:
name: mqtt
spec:
containers:
- name: mqtt
image: eclipse-mosquitto
ports:
- containerPort: 1883
name: mqtt
- containerPort: 9001
name: websockets
您可以将它变成一个部署或带有服务的副本集等。
首先,将镜像从 docker hub 拉到本地机器上:docker pull eclipse-mosquitto
其次,引用mqtt-broker/deployment.yaml
中的图片,例如:
apiVersion: v1
kind: Service
metadata:
name: mqtt-broker
labels:
app: mqtt-broker
spec:
type: NodePort
ports:
- targetPort: 1883
port: 1883
selector:
app: mqtt-broker
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: mqtt-broker
labels:
app: mqtt-broker
spec:
replicas: 1
selector:
matchLabels:
app: mqtt-broker
template:
metadata:
labels:
app: mqtt-broker
spec:
containers:
- name: mqtt-broker
image: eclipse-mosquitto
ports:
- containerPort: 1883
第三,引用 deploment.yaml in
skaffold.yaml` 例如:
apiVersion: skaffold/v2beta10
kind: Config
build:
artifacts:
- <services-under-development>
deploy:
kubectl:
manifests:
- mqtt-broker/deployment.yaml
portForward:
- resourceType: deployment
resourceName: mqtt-broker
port: 1883
localPort: 1883
- <port-forwarding-for-services-under-development>
假设我想 运行 来自 docker hub 的图像的容器,假设 mosquitto 我会执行 docker run -it -p 1883:1883 -p 9001:9001 eclipse-mosquitto
.
我尝试从 gcr.io (deployment.yaml
) 中提取图像,就像完成 here:
apiVersion: v1
kind: Service
metadata:
name: mqtt-broker
labels:
app: mqtt-broker
spec:
type: NodePort
ports:
- targetPort: 1883
port: 1883
selector:
app: mqtt-broker
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: mqtt-broker
labels:
app: mqtt-broker
spec:
replicas: 1
selector:
matchLabels:
app: mqtt-broker
template:
metadata:
labels:
app: mqtt-broker
spec:
containers:
- name: mqtt-broker
image: gcr.io/vu-james-celli/eclipse-mosquitto # https://hub.docker.com/_/eclipse-mosquitto
ports:
- containerPort: 1883
skaffold.yaml
:
apiVersion: skaffold/v2beta10
kind: Config
build:
artifacts:
- <other image builds>
deploy:
kubectl:
manifests:
- mqtt-broker/*
portForward:
- resourceType: deployment
resourceName: mqtt-broker
port: 1883
localPort: 1883
<other port forwardings>
...
然而,当我 运行 skaffold --dev --port-forward
我在输出中得到一个错误:
- deployment/mqtt-broker: container mqtt-broker is waiting to start: gcr.io/vu-james-celli/eclipse-mosquitto can't be pulled
当使用 kubectl
到 运行 作为部署的一部分的 mosquitto 容器时,我必须如何配置 skaffold.yaml
(schema version v2beta10)?
您可以使用引用 eclipse-mosquitto
的单个容器创建一个 pod,然后确保从您的 skaffold.yaml
.
apiVersion: v1
kind: Pod
metadata:
name: mqtt
spec:
containers:
- name: mqtt
image: eclipse-mosquitto
ports:
- containerPort: 1883
name: mqtt
- containerPort: 9001
name: websockets
您可以将它变成一个部署或带有服务的副本集等。
首先,将镜像从 docker hub 拉到本地机器上:docker pull eclipse-mosquitto
其次,引用mqtt-broker/deployment.yaml
中的图片,例如:
apiVersion: v1
kind: Service
metadata:
name: mqtt-broker
labels:
app: mqtt-broker
spec:
type: NodePort
ports:
- targetPort: 1883
port: 1883
selector:
app: mqtt-broker
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: mqtt-broker
labels:
app: mqtt-broker
spec:
replicas: 1
selector:
matchLabels:
app: mqtt-broker
template:
metadata:
labels:
app: mqtt-broker
spec:
containers:
- name: mqtt-broker
image: eclipse-mosquitto
ports:
- containerPort: 1883
第三,引用 deploment.yaml in
skaffold.yaml` 例如:
apiVersion: skaffold/v2beta10
kind: Config
build:
artifacts:
- <services-under-development>
deploy:
kubectl:
manifests:
- mqtt-broker/deployment.yaml
portForward:
- resourceType: deployment
resourceName: mqtt-broker
port: 1883
localPort: 1883
- <port-forwarding-for-services-under-development>