其他分享
首页 > 其他分享> > K8S下的docker commit

K8S下的docker commit

作者:互联网

在使用docker 的过程中,我们有时候需要在容器中安装一些依赖,并且希望在不改变原镜像的前提的情况下能够把这些操作保存下来。这时候我们可以使用docker commit 命令,来基于容器创建一个新镜像。
但是在K8S 集群环境下,我们知道pod 是最小单元,而容器包含在pod 中。并且,pod 可能运行在集群中的任何一个节点上。那么,我们该如何获取到pod 中的容器ID 及pod 所在节点来执行commit 命令呢?
以下步骤,是在一个pod 中只含有一个业务容器的情况下操作的:
  1. 根据pod 名称获取到容器的ID 和节点名称
[root@node-master ~]# kubectl get pod podName -o -wide
NAME      READY      STATUS      RESTARTS      AGE      IP      NODE      NOMINATED NODE
podName      1/1      Running      0      12s      aa.bb.cc.dd      nodeName      <none>
  1. 根据节点名称获取到对应主机的ip
[root@node-master ~]# kubectl get node nodeName -o -wide
NAME      STATUS      ROLES      AGE      VERSION      INTERNAL-IP      EXTERNAL-IP      OS-IMAGE      KERNEL-VERSION      CONTAINER-RUNTINE
nodeName      Ready      compute      10d      v1.0.0      11.22.33.44      <none>      ContOS Linux 7 (Core)      1.11.111-generic      docker://2.22.2
  1. 保存pod 的yaml 文件到本地,读取yaml 中containerID
[root@node-master ~]# kubectl get podName -o yaml > podName.yaml
[root@node-master ~]# cat podName.yaml | awk -F ["//"] '/containerID/{print$3}'
  1. 登录到pod 所在主机
[root@node-master ~]# ssh 11.22.33.44
[root@node-node1 ~]#
  1. 执行commit 操作
[root@node-master ~]# docker commit -m comment -a author containId newImageName:tag
以上,我们可以使用docker images 命令来查看新创建的镜像了。

标签:node,master,podName,commit,docker,K8S,root,pod
来源: https://www.cnblogs.com/xujuan/p/14085592.html