我该如何启动一个简单的容器?

时间:2017-02-16 11:58:52

标签: docker kubernetes google-kubernetes-engine

我已经阅读了quick start guide并且我已经达到了

  • 我有一个群集
  • 我可以看到我需要输入kubectl run命令来启动我的容器。

我想启动一个公开的docker容器,我可以使用此命令启动任何支持docker的计算机

docker run -d \
   -e DRONE_SERVER=wss://ci.fommil.com/ws/broker \
   -e DRONE_SECRET=<redacted> \
   -e DOCKER_MAX_PROCS=1 \
   -e DRONE_TIMEOUT=30m \
   -v /var/run/docker.sock:/var/run/docker.sock \
   --restart=always \
   --name=drone-agent \
   drone/drone:0.5 agent

什么是等效的Google Console / cubectl命令?我已经到了

kubectl run agent \
  --image=drone/drone:0.5 \
  --env="DRONE_SERVER=wss://ci.fommil.com/ws/broker" \
  --env="DRONE_SECRET=<redacted>" \
  --env="DOCKER_MAX_PROCS=1" \
  --env="DRONE_TIMEOUT=30m" \
  -v /var/run/docker.sock:/var/run/docker.sock

但这条-v行并不完全正确。我需要确保/var/run/docker.sock已安装在容器中,因为它的唯一目的是在docker中启动子进程以运行CI作业。

1 个答案:

答案 0 :(得分:1)

你是对的,使用imperative commands创建卷来创建没有配置文件的卷在Kubernetes中不可用。

但是编写一些配置很容易。基于此blog post和您的要求,“现代”配置可能看起来像。

deployment.yml:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: agent
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: agent
    spec:
      containers:
      - env:
        - name: DRONE_SERVER
          value: "wss://ci.fommil.com/ws/broker"
        - name: DRONE_SECRET
          value: <redacted>
        - name: DOCKER_MAX_PROCS
          value: "1"
        - name: DRONE_TIMEOUT
          value: 30m
        image: drone/drone:0.5
        name: agent
        args: ["agent"]
        securityContext:
          privileged: true
        volumeMounts:
          - mountPath: /var/run/docker.sock
            name: docker-sock
          - mountPath: /var/lib/docker
            name: docker-lib
      volumes:
        - name: docker-sock
          hostPath:
            path: /var/run/docker.sock
        - name: docker-lib
          hostPath:
            path: /var/lib/docker

现在,这可以与kubectl create -f deployment.yml一起使用,并以kubectl delete deployments -l app=agent

停止