把女朋友封装在容器镜像中

云计算方面的面试大多数都要求会容器化,今天带大家来构建一个属于我们自定义的镜像,这个镜像当中是包含女朋友的。废话不多说,我们直接来操作,首先我们要找一个基础镜像,我是从官网上拉的 centos 镜像,默认的标签是 latest。

[[email protected] opt]# docker pull centosUsing default tag: latestlatest: Pulling from library/centosd8d02d457314: Pull completeDigest: sha256:307835c385f656ec2e2fec602cf093224173c51119bbebd602c53c3653a3d6ebStatus: Downloaded newer image for centos:latest[[email protected] opt]# docker imagesREPOSITORY                              TAG                 IMAGE ID            CREATED             SIZEcentos                                  latest              67fa590cfc1c        9 days ago          202MBk8s.gcr.io/kube-apiserver               v1.13.3             fe242e556a99        6 months ago        181MBk8s.gcr.io/kube-proxy                   v1.13.3             98db19758ad4        6 months ago        80.3MBk8s.gcr.io/kube-controller-manager      v1.13.3             0482f6400933        6 months ago        146MBk8s.gcr.io/kube-scheduler               v1.13.3             3a6f709e97a0        6 months ago        79.6MBk8s.gcr.io/coredns                      1.2.6               f59dcacceff4        9 months ago        40MBk8s.gcr.io/etcd                         3.2.24              3cab8e1b9802        11 months ago       220MBk8s.gcr.io/kubernetes-dashboard-amd64   v1.10.0             0dab2435c100        12 months ago       122MBquay.io/coreos/flannel                  v0.10.0-amd64       f0fad859c909        19 months ago       44.6MBk8s.gcr.io/pause                        3.1                 da86e6ba6ca1        20 months ago       742kB

拉取下来镜像之后,以?#20048;?#25105;们对这个镜像的破坏,所以可以在备份一份。采用 docker tag 命令来进行备份。

[[email protected] opt]# docker tag centos:latest tigergao:latest[[email protected] opt]# docker imagesREPOSITORY                              TAG                 IMAGE ID            CREATED             SIZEtigergao                                latest              67fa590cfc1c        9 days ago          202MBcentos                                  latest              67fa590cfc1c        9 days ago          202MBk8s.gcr.io/kube-controller-manager      v1.13.3             0482f6400933        6 months ago        146MBk8s.gcr.io/kube-proxy                   v1.13.3             98db19758ad4        6 months ago        80.3MBk8s.gcr.io/kube-apiserver               v1.13.3             fe242e556a99        6 months ago        181MBk8s.gcr.io/kube-scheduler               v1.13.3             3a6f709e97a0        6 months ago        79.6MBk8s.gcr.io/coredns                      1.2.6               f59dcacceff4        9 months ago        40MBk8s.gcr.io/etcd                         3.2.24              3cab8e1b9802        11 months ago       220MBk8s.gcr.io/kubernetes-dashboard-amd64   v1.10.0             0dab2435c100        12 months ago       122MBquay.io/coreos/flannel                  v0.10.0-amd64       f0fad859c909        19 months ago       44.6MBk8s.gcr.io/pause                        3.1                 da86e6ba6ca1        20 months ago       742kB

备份之后此时我们的基础镜像已经有了,那么我们可以来创建一个脚本,这个脚本就相当于互联网公司里面的 Java 的 jar 包一样。

[[email protected] opt]# mkdir tigergao[[email protected] opt]# lltotal 129980drwxr-xr-x   3 root root       17 Aug  9 17:23 cni-rw-r--r--   1 root root    36688 Aug 22  2018 container-selinux-2.68-1.el7.noarch.rpm-rwxr-xr-x.  1 root root      254 Aug  5 18:04 >-rw-r--r--   1 root root       61 Aug 30 17:57 Dockerfile-rw-r--r--   1 root root      647 Aug 30 17:55 Dockerfile_new-rw-r--r--   1 root root       18 Aug 27 17:48 EOF-rw-r--r--.  1 root root 58549803 Aug  2 20:55 grafana-6.3.0-beta4.x86_64.rpmdrwxr-xr-x  11 root root     4096 Aug  6 14:33 jumpserverdrwxr-xr-x   3 root root       55 Aug  9 10:57 kernel-rwxr-xr-x   1 root root       40 Aug 30 17:58 main.sh-rwxr-xr-x   1 root root      257 Aug  6 10:15 mem.sh-rw-r--r--   1 root root    74790 Aug  7 14:38 nginx-rw-------   1 root root 18399472 Aug  6 18:35 nohup.out-rwxr-xr-x   1 root root     2993 Aug  8 09:44 pipeline.yaml-rwxr-xr-x   1 root root       55 Aug  6 10:16 planmem.sh-rwxr-xr-x   1 root root       56 Aug  6 10:11 plan.shdrwxr-xr-x.  5 3434 3434      144 Aug 30 12:46 prometheus-rw-r--r--.  1 root root 49425027 Jul 10 23:34 prometheus-2.11.1.linux-amd64.tar.gzdrwxr-xr-x.  2 3434 3434       54 Apr 13 19:39 pushgateway-rw-r--r--.  1 root root  6561633 Apr 13 19:39 pushgateway-0.8.0.linux-amd64.tar.gzdrwxr-xr-x   5 root root       74 Aug  6 14:28 py3drwxr-xr-x   2 root root       36 Aug  6 16:42 pythondrwxr-xr-x   2 root root        6 Aug 30 18:00 tigergao[[email protected] opt]# mv Dockerfile main.sh tigergao/

我们来看一下这个脚本中的内容如下,其实就是在启动容器后,在终端输出女朋友很有魅力这样的字体。

[[email protected] tigergao]# lltotal 8-rw-r--r-- 1 root root 61 Aug 30 17:57 Dockerfile-rwxr-xr-x 1 root root 40 Aug 30 17:58 main.sh[[email protected] tigergao]# cat main.sh#!/bin/bashecho "girlfriend is magic!"

接下来我们来书写 Dockerfile。如下,大意就是我们利用之前拉下来的 centos 基础镜像,并且将这个脚本放到容器里面的根目录下,之后进行运行脚本。

[[email protected] tigergao]# cat main.sh#!/bin/bashecho "girlfriend is magic!"[[email protected] tigergao]# cat Dockerfilefrom centos:latestcopy main.sh /CMD ["bash","./main.sh"]

好了,这里需要特别注意,需要将脚本和 Dockerfile 放到同一路径中,因为在构建镜像时,需要依赖。采用docker build 命令去构建即可。

[[email protected] opt]# cd tigergao/[[email protected] tigergao]# lltotal 8-rw-r--r-- 1 root root 61 Aug 30 17:57 Dockerfile-rwxr-xr-x 1 root root 40 Aug 30 17:58 main.sh[[email protected] tigergao]# docker build -t girlfriend .Sending build context to Docker daemon  3.072kBStep 1/3 : from centos:latest ---> 67fa590cfc1cStep 2/3 : copy main.sh / ---> d3b3135f985cStep 3/3 : CMD ["bash","./main.sh"] ---> Running in 561c57b53d6dRemoving intermediate container 561c57b53d6d ---> c33d4b0609dfSuccessfully built c33d4b0609dfSuccessfully tagged girlfriend:latest

接下来我们看看容器镜像中是否有这个镜像:

[[email protected] tigergao]# docker imagesREPOSITORY                              TAG                 IMAGE ID            CREATED             SIZEgirlfriend                              latest              c33d4b0609df        14 seconds ago      202MBcentos                                  latest              67fa590cfc1c        9 days ago          202MBtigergao                                latest              67fa590cfc1c        9 days ago          202MBk8s.gcr.io/kube-proxy                   v1.13.3             98db19758ad4        6 months ago        80.3MBk8s.gcr.io/kube-apiserver               v1.13.3             fe242e556a99        6 months ago        181MBk8s.gcr.io/kube-controller-manager      v1.13.3             0482f6400933        6 months ago        146MBk8s.gcr.io/kube-scheduler               v1.13.3             3a6f709e97a0        6 months ago        79.6MBk8s.gcr.io/coredns                      1.2.6               f59dcacceff4        9 months ago        40MBk8s.gcr.io/etcd                         3.2.24              3cab8e1b9802        11 months ago       220MBk8s.gcr.io/kubernetes-dashboard-amd64   v1.10.0             0dab2435c100        12 months ago       122MBquay.io/coreos/flannel                  v0.10.0-amd64       f0fad859c909        19 months ago       44.6MBk8s.gcr.io/pause                        3.1                 da86e6ba6ca1        20 months ago       742kB

或者?#37096;?#20197;直接检索:

[[email protected] tigergao]# docker images | grep -i girlgirlfriend                              latest              c33d4b0609df        23 minutes ago      202MB

最后我们可以直接启动容器,来查看终端输出内容:女朋友很有魅力

[[email protected] tigergao]# docker run girlfriend:latestgirlfriend is magic![[email protected] tigergao]#

最后我开了一个运维群,?#34892;?#36259;的可以戳这里:运维群欢迎你,让我们一起交流和进?#20581;?/strong>

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或?#20449;担?#35831;读者仅作参考,并自行核实相关内容。

http://image99.pinlue.com/thumb/img_jpg/7IrdfbhAhcBzXaw8BslYxofwJibVtKEwuSPVmelIiaktPmgzQmawxHC3jCn6qJF8qTqmiceEt3zv5FphQFCMp6yiaw/0.jpeg
我要收藏
赞一个
踩一下
分享到
?
高速公路之王电子游艺