sleep 命令(或任何其他命令)是在 nfsvol-2 挂载完成之前还是之后执行的?
为了理解这一点,让我们深入了解 Openshift 的基本概念。
OpenShift 是一个将 docker 和 Kubernetes 带入企业的容器应用平台。所以 Openshift 只不过是docker 和 kubernetes 之上的一个抽象层以及附加功能。
关于卷和命令,让我们考虑以下示例:
让我们通过挂载一个卷来运行 docker 容器,该卷是主机的主目录到容器的根路径(-v 是附加卷的选项)。
$ docker run -it -v /home:/root ubuntu /bin/bash
Unable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu
50aff78429b1: Pull complete
f6d82e297bce: Pull complete
275abb2c8a6f: Pull complete
9f15a39356d6: Pull complete
fc0342a94c89: Pull complete
Digest: sha256:f871d0805ee3ce1c52b0608108dbdf1b447a34d22d5c7278a3a9dd78fc12c663
Status: Downloaded newer image for ubuntu:latest
root@1f07f083ba79:/# cd /root/
root@1f07f083ba79:~# ls
lost+found raghavendralokineni raghu user1
root@1f07f083ba79:~/raghavendralokineni# pwd
/root/raghavendralokineni
现在在容器中执行sleep命令并退出。
root@1f07f083ba79:~/raghavendralokineni# sleep 10
root@1f07f083ba79:~/raghavendralokineni#
root@1f07f083ba79:~/raghavendralokineni# exit
检查我们已安装到容器的/home路径中可用的文件。该内容与容器中的/root路径相同。
raghavendralokineni@iconic-glider-186709:/home$ ls
lost+found raghavendralokineni raghu user1
因此,当一个卷被挂载到容器时,卷中的任何更改也会在主机中受到影响。
因此卷将与容器一起安装,并且命令将在容器启动后执行。
回到你的 YAML 文件,
volumeMounts:
- name: nfsvol-2
mountPath: /usr/share/busybox
它说,将卷 nfsvol-2 安装到容器中,卷中提到了有关卷的信息:
volumes:
- name: nfsvol-2
persistentVolumeClaim:
claimName: nfs-pvc
因此,将卷挂载到容器并执行指定的命令:
containers:
- name: busybox-nfs-pod
image: busybox
command: ["sleep", "60000"]
希望这可以帮助。