I need to run this Docker command in Kubernetes:

docker run -p 8080:8080 sagemath/sagemath sage -notebook

I can map everything across except "-notebook" - does anyone know how to do that?

Here is what I have so far, and of course it doesn't work since "-notebook" is not translated over to kubectl correctly:

kubectl run --image=sagemath/sagemath sage --port=8080 --type=LoadBalancer -notebook
  • -notebook is not an argument to docker or kubectl, but to sage. Jan 17, 2018 at 1:16
  • Yes - but how do I implement that in kubectl - that is the question. The docker command line above does work
    – A X
    Jan 17, 2018 at 1:34
  • The command you want to run goes at the end, just like before. Jan 17, 2018 at 2:29

3 Answers 3


When you define pod spec for your sage you can define both command and an args array, so for you it would be like

command: sage
- -notebook

for launching with kubectl run

  kubectl run NAME --image=image [--env="key=value"] [--port=port] [--replicas=replicas] [--dry-run=bool] [--overrides=inline-json] [--command] -- [COMMAND] [args...] [options]

so try running with -- delimiter : kubectl run --image=sagemath/sagemath --port=8080 --type=LoadBalancer -- sage -notebook

  • Thanks. Does this mean that I can't do it via command line only (have to create the pod spec)?
    – A X
    Jan 17, 2018 at 6:39
  • updated with run reference Jan 17, 2018 at 8:24

-- does the trick. It means that kubectl wouldn't parse as kubectl arguments the following strings that start with -

So you run that container executing:

kubectl run --image=sagemath/sagemath --port=8080 sage -- -notebook

And if you want a public IP on GKE, you should expose the container executing:

kubectl expose deploy sage --type=LoadBalancer --port=8080

You can get the public IP running kubectl get service in the row sage at the column EXTERNAL-IP

command: sage notebook

For such cases

k run --image=sagemath/sagemath --port=8080 --command=true -- sage notebook

--command=false If true and extra arguments are present, use them as the 'command' field in the container, rather than the 'args' field which is the default.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .