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

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

[root@k8s-node-01 opt]# docker pull centos
Using default tag: latest
latest: Pulling from library/centos
d8d02d457314: Pull complete
Digest: sha256:307835c385f656ec2e2fec602cf093224173c51119bbebd602c53c3653a3d6eb
Status: Downloaded newer image for centos:latest
[root@k8s-node-01 opt]# docker images
REPOSITORY                              TAG                 IMAGE ID            CREATED             SIZE
centos                                  latest              67fa590cfc1c        9 days ago          202MB
k8s.gcr.io/kube-apiserver               v1.13.3             fe242e556a99        6 months ago        181MB
k8s.gcr.io/kube-proxy                   v1.13.3             98db19758ad4        6 months ago        80.3MB
k8s.gcr.io/kube-controller-manager      v1.13.3             0482f6400933        6 months ago        146MB
k8s.gcr.io/kube-scheduler               v1.13.3             3a6f709e97a0        6 months ago        79.6MB
k8s.gcr.io/coredns                      1.2.6               f59dcacceff4        9 months ago        40MB
k8s.gcr.io/etcd                         3.2.24              3cab8e1b9802        11 months ago       220MB
k8s.gcr.io/kubernetes-dashboard-amd64   v1.10.0             0dab2435c100        12 months ago       122MB
quay.io/coreos/flannel                  v0.10.0-amd64       f0fad859c909        19 months ago       44.6MB
k8s.gcr.io/pause                        3.1                 da86e6ba6ca1        20 months ago       742kB

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

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

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

[root@k8s-node-01 opt]# mkdir tigergao
[root@k8s-node-01 opt]# ll
total 129980
drwxr-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 data.sh
-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.rpm
drwxr-xr-x  11 root root     4096 Aug  6 14:33 jumpserver
drwxr-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.sh
drwxr-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.gz
drwxr-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.gz
drwxr-xr-x   5 root root       74 Aug  6 14:28 py3
drwxr-xr-x   2 root root       36 Aug  6 16:42 python
drwxr-xr-x   2 root root        6 Aug 30 18:00 tigergao
[root@k8s-node-01 opt]# mv Dockerfile main.sh tigergao/

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

[root@k8s-node-01 tigergao]# ll
total 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
[root@k8s-node-01 tigergao]# cat main.sh
#!/bin/bash
echo "girlfriend is magic!"

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

[root@k8s-node-01 tigergao]# cat main.sh
#!/bin/bash
echo "girlfriend is magic!"
[root@k8s-node-01 tigergao]# cat Dockerfile
from centos:latest

copy main.sh /

CMD ["bash","./main.sh"]

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

[root@k8s-node-01 opt]# cd tigergao/
[root@k8s-node-01 tigergao]# ll
total 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
[root@k8s-node-01 tigergao]# docker build -t girlfriend .
Sending build context to Docker daemon  3.072kB
Step 1/3 : from centos:latest
 ---> 67fa590cfc1c
Step 2/3 : copy main.sh /
 ---> d3b3135f985c
Step 3/3 : CMD ["bash","./main.sh"]
 ---> Running in 561c57b53d6d
Removing intermediate container 561c57b53d6d
 ---> c33d4b0609df
Successfully built c33d4b0609df
Successfully tagged girlfriend:latest

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

[root@k8s-node-01 tigergao]# docker images
REPOSITORY                              TAG                 IMAGE ID            CREATED             SIZE
girlfriend                              latest              c33d4b0609df        14 seconds ago      202MB
centos                                  latest              67fa590cfc1c        9 days ago          202MB
tigergao                                latest              67fa590cfc1c        9 days ago          202MB
k8s.gcr.io/kube-proxy                   v1.13.3             98db19758ad4        6 months ago        80.3MB
k8s.gcr.io/kube-apiserver               v1.13.3             fe242e556a99        6 months ago        181MB
k8s.gcr.io/kube-controller-manager      v1.13.3             0482f6400933        6 months ago        146MB
k8s.gcr.io/kube-scheduler               v1.13.3             3a6f709e97a0        6 months ago        79.6MB
k8s.gcr.io/coredns                      1.2.6               f59dcacceff4        9 months ago        40MB
k8s.gcr.io/etcd                         3.2.24              3cab8e1b9802        11 months ago       220MB
k8s.gcr.io/kubernetes-dashboard-amd64   v1.10.0             0dab2435c100        12 months ago       122MB
quay.io/coreos/flannel                  v0.10.0-amd64       f0fad859c909        19 months ago       44.6MB
k8s.gcr.io/pause                        3.1                 da86e6ba6ca1        20 months ago       742kB

或者也可以直接检索:

[root@k8s-node-01 tigergao]# docker images | grep -i girl
girlfriend                              latest              c33d4b0609df        23 minutes ago      202MB

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

[root@k8s-node-01 tigergao]# docker run girlfriend:latest
girlfriend is magic!
[root@k8s-node-01 tigergao]#

戳这里:运维群欢迎你,让我们一起交流和进步。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值