To run a Docker image, rkt will convert it into App Container Image (ACI) format first.
However, during the conversion, the ENTRYPOINT
and CMD
are concatentated to construct ACI’s Exec
field.
This means after the conversion, we are not able to replace only ENTRYPOINT
or CMD
without touching the other part.
So for now, users are recommended to specify the executable path in Command
and arguments in Args
.
(This has the same effect if users specify the executable path + arguments in Command
or Args
alone).
For example:
apiVersion: v1
kind: Pod
metadata:
name: nginx
labels:
name: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
The above pod yaml file is valid as it’s not specifying Command
or Args
, so the default ENTRYPOINT
and CMD
of the image will be used.
apiVersion: v1
kind: Pod
metadata:
name: busybox
labels:
name: busybox
spec:
containers:
- name: busybox
image: busybox
command:
- /bin/sleep
- 1000
apiVersion: v1
kind: Pod
metadata:
name: busybox
labels:
name: busybox
spec:
containers:
- name: busybox
image: busybox
command:
- /bin/sleep
args:
- 1000
apiVersion: v1
kind: Pod
metadata:
name: busybox
labels:
name: busybox
spec:
containers:
- name: busybox
image: busybox
args:
- /bin/sleep
- 1000
All the three examples above are valid as they contain both the executable path and the arguments.
apiVersion: v1
kind: Pod
metadata:
name: busybox
labels:
name: busybox
spec:
containers:
- name: busybox
image: busybox
args:
- 1000
The last example is invalid, as we cannot override just the CMD
of the image alone.