⎈ k8s knowledge compiler

kubectl for Docker Users [page]deterministic

reference

You can use the Kubernetes command line tool `kubectl` to interact with the API Server. Using kubectl is straightforward if you are familiar with the Docker command line tool. However, there are a few differences between the Docker commands and the kubectl commands. The following sections show a Docker sub-command and describe the equivalent `kubectl` command.

## docker run

To run an nginx Deployment and expose the Deployment, see [kubectl create deployment](/docs/reference/generated/kubectl/kubectl-commands#-em-deployment-em-).

docker:

```shell docker run -d --restart=always -e DOMAIN=cluster --name nginx-app -p 80:80 nginx ``` ``` 55c103fa129692154a7652490236fee9be47d70a8dd562281ae7d2f9a339a6db ```

```shell docker ps ``` ``` CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 55c103fa1296 nginx "nginx -g 'daemon of…" 9 seconds ago Up 9 seconds 0.0.0.0:80->80/tcp nginx-app ```

kubectl:

```shell # start the pod running nginx kubectl create deployment --image=nginx nginx-app ``` ``` deployment.apps/nginx-app created ```

```shell # add env to nginx-app kubectl set env deployment/nginx-app DOMAIN=cluster ``` ``` deployment.apps/nginx-app env updated ```

> Note: `kubectl` commands print the type and name of the resource created or mutated, which can then be used in subsequent commands. You can expose a new Service after a Deployment is created.

```shell # expose a port through with a service kubectl expose deployment nginx-app --port=80 --name=nginx-http ``` ``` service "nginx-http" exposed ```

By using kubectl, you can create a [Deployment](/docs/concepts/workloads/controllers/deployment/) to ensure that N pods are running nginx, where N is the number of replicas stated in the spec and defaults to 1. You can also create a [service](/docs/concepts/services-networking/service/) with a selector that matches the pod labels. For more information, see [Use a Service to Access an Application in a Cluster](/docs/tasks/access-application-cluster/service-access-application-cluster).

By default images run in the background, similar to `docker run -d ...`. To run things in the foreground, use [`kubectl run`](/docs/reference/generated/kubectl/kubectl-commands/#run) to create pod: ```shell kubectl run [-i] [--tty] --attach <name> --image=<image> ```

Unlike `docker run ...`, if you specify `--attach`, then you attach `stdin`, `stdout` and `stderr`. You cannot control which streams are attached (`docker -a ...`). To detach from the container, you can type the escape sequence Ctrl+P followed by Ctrl+Q.

## docker ps

To list what is currently running, see [kubectl get](/docs/reference/generated/kubectl/kubectl-commands/#get).

docker:

```shell docker ps -a ``` ``` CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 14636241935f ubuntu:16.04 "echo test" 5 seconds ago Exited (0) 5 seconds ago cocky_fermi 55c103fa1296 nginx "nginx -g 'daemon of…" About a minute ago Up About a minute 0.0.0.0:80->80/tcp nginx-app ```

kubectl:

```shell kubectl get po ``` ``` NAME READY STATUS RESTARTS AGE nginx-app-8df569cb7-4gd89 1/1 Running 0 3m ubuntu 0/1 Completed 0 20s ```

## docker attach

To attach a process that is already running in a container, see [kubectl attach](/docs/reference/generated/kubectl/kubectl-commands/#attach).

docker:

```shell docker ps ``` ``` CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 55c103fa1296 nginx "nginx -g 'daemon of…" 5 minutes ago Up 5 minutes 0.0.0.0:80->80/tcp nginx-app ```

```shell docker att …(trimmed)

Sources

reference/kubectl/docker-cli-to-kubectl.md · dockubectl for Docker Users

Related (9)

part_of docker rundescribes conf=1
part_of docker psdescribes conf=1
part_of docker attachdescribes conf=1
part_of docker execdescribes conf=1
part_of docker logsdescribes conf=1
part_of docker stop and docker rmdescribes conf=1
part_of docker logindescribes conf=1
part_of docker versiondescribes conf=1
part_of docker infodescribes conf=1

← all Docs