视频来源:B站《(2022版)最新、最全、最详细的Kubernetes(K8s)教程,从K8s安装到实战一套搞定》

一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持!

附上汇总贴:(2022版)一套教程搞定k8s安装到实战 | 汇总_COCOgsta的博客-CSDN博客


FROM:继承基础镜像
MAINTAINER:镜像制作者信息
RUN:用来执行shell命令
EXPOSE:暴露端口号
CMD:启动容器默认执行的命令
ENTRYPOINT:启动容器真正执行的命令
VOLUME:创建挂载点
ENV:配置环境变量
ADD:复制文件到容器(如果是tar包会解压)
COPY:复制文件到容器
WORKDIR:设置容器的工作目录
USER:容器使用的用户

举例1:RUN

vi /root/dockerfiles/Dockerfile
FROM centos

LABEL maintainer="test dockerfile"
LABEL test=dockerfile

RUN useradd guoliang
RUN mkdir /opt/guoliang
[root@k8s-master01 dockerfiles]# docker build -t centos:user .
Sending build context to Docker daemon  2.048kB
Step 1/5 : FROM centos
latest: Pulling from library/centos
Digest: sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177
Status: Downloaded newer image for centos:latest
 ---> 5d0da3dc9764
Step 2/5 : LABEL maintainer="test dockerfile"
 ---> Running in 369d1d05266b
Removing intermediate container 369d1d05266b
 ---> 4d416c026780
Step 3/5 : LABEL test=dockerfile
 ---> Running in 31b078c631bc
Removing intermediate container 31b078c631bc
 ---> 786676f65452
Step 4/5 : RUN useradd guoliang
 ---> Running in 19e0da577664
Removing intermediate container 19e0da577664
 ---> 96a6eca9f8c8
Step 5/5 : RUN mkdir /opt/guoliang
 ---> Running in 02c0b95ef5be
Removing intermediate container 02c0b95ef5be
 ---> 587879dbddf7
Successfully built 587879dbddf7
Successfully tagged centos:user
[root@k8s-master01 dockerfiles]# 
[root@k8s-master01 dockerfiles]# docker run -it --rm centos:user bash
[root@949ac3305ee4 /]# 
[root@949ac3305ee4 /]# 
[root@949ac3305ee4 /]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin
systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin
guoliang:x:1000:1000::/home/guoliang:/bin/bash
[root@949ac3305ee4 /]# cd /opt/guoliang/ 

举例2:CMD

vi /root/dockerfiles/Dockerfile
FROM centos

LABEL maintainer="test dockerfile"
LABEL test=dockerfile

RUN useradd guoliang
RUN mkdir /opt/guoliang

# RUN useradd guoliang && mkdir /opt/guoliang


CMD [ "sh","-c","echo 1" ]
[root@k8s-master01 dockerfiles]# docker build -t centos:cmd .
Sending build context to Docker daemon  2.048kB
Step 1/6 : FROM centos
 ---> 5d0da3dc9764
Step 2/6 : LABEL maintainer="test dockerfile"
 ---> Using cache
 ---> 4d416c026780
Step 3/6 : LABEL test=dockerfile
 ---> Using cache
 ---> 786676f65452
Step 4/6 : RUN useradd guoliang
 ---> Using cache
 ---> 96a6eca9f8c8
Step 5/6 : RUN mkdir /opt/guoliang
 ---> Using cache
 ---> 587879dbddf7
Step 6/6 : CMD [ "sh","-c","echo 1" ]
 ---> Running in bec60d75f619
Removing intermediate container bec60d75f619
 ---> 2c3e184a5a3f
Successfully built 2c3e184a5a3f
Successfully tagged centos:cmd
[root@k8s-master01 dockerfiles]# docker run -it --rm centos:cmd 
1
[root@k8s-master01 dockerfiles]# 

举例3:CMD传参

vi /root/dockerfiles/Dockerfile
FROM centos

LABEL maintainer="test dockerfile"
LABEL test=dockerfile

RUN useradd guoliang
RUN mkdir /opt/guoliang

# RUN useradd guoliang && mkdir /opt/guoliang

ENTRYPOINT ["echo"]

CMD [ "sh","-c","echo 1" ]
You have new mail in /var/spool/mail/root
[root@k8s-master01 dockerfiles]# docker build -t centos:ep .
Sending build context to Docker daemon  2.048kB
Step 1/7 : FROM centos
 ---> 5d0da3dc9764
Step 2/7 : LABEL maintainer="test dockerfile"
 ---> Using cache
 ---> 4d416c026780
Step 3/7 : LABEL test=dockerfile
 ---> Using cache
 ---> 786676f65452
Step 4/7 : RUN useradd guoliang
 ---> Using cache
 ---> 96a6eca9f8c8
Step 5/7 : RUN mkdir /opt/guoliang
 ---> Using cache
 ---> 587879dbddf7
Step 6/7 : ENTRYPOINT ["echo"]
 ---> Running in 2ad94b3af36d
Removing intermediate container 2ad94b3af36d
 ---> b7a973b218f7
Step 7/7 : CMD [ "sh","-c","echo 1" ]
 ---> Running in 2042a1645fb2
Removing intermediate container 2042a1645fb2
 ---> 757cb8c614ea
Successfully built 757cb8c614ea
Successfully tagged centos:ep
[root@k8s-master01 dockerfiles]# docker run -it --rm centos:ep 10 # 会覆盖cmd,并将10作为参数传给ENTRYPOINT
10
[root@k8s-master01 dockerfiles]# 

举例3:ENV

vi /root/dockerfiles/Dockerfile
FROM centos

LABEL maintainer="test dockerfile"
LABEL test=dockerfile

ENV test_env1 env1
ENV test_env2 env2

RUN useradd guoliang
RUN mkdir /opt/guoliang

# RUN useradd guoliang && mkdir /opt/guoliang

#ENTRYPOINT ["echo"]

CMD echo "$test_env1 $test_env2"
[root@k8s-master01 dockerfiles]# docker build -t centos:env .
Sending build context to Docker daemon  2.048kB
Step 1/8 : FROM centos
 ---> 5d0da3dc9764
Step 2/8 : LABEL maintainer="test dockerfile"
 ---> Using cache
 ---> 4d416c026780
Step 3/8 : LABEL test=dockerfile
 ---> Using cache
 ---> 786676f65452
Step 4/8 : ENV test_env1 env1
 ---> Using cache
 ---> c30055ed7393
Step 5/8 : ENV test_env2 env2
 ---> Using cache
 ---> c7f93a7f74b5
Step 6/8 : RUN useradd guoliang
 ---> Using cache
 ---> 6c4056e84b28
Step 7/8 : RUN mkdir /opt/guoliang
 ---> Using cache
 ---> 1848fe0e89de
Step 8/8 : CMD echo "$test_env1 $test_env2"
 ---> Running in d1ab56774aac
Removing intermediate container d1ab56774aac
 ---> edf3c2746064
Successfully built edf3c2746064
Successfully tagged centos:env
[root@k8s-master01 dockerfiles]# docker run -it --rm centos:env
env1 env2

举例4:ADD

vi /root/dockerfiles/Dockerfile
FROM centos

LABEL maintainer="test dockerfile"
LABEL test=dockerfile

ENV test_env1 env1
ENV test_env2 env2

RUN useradd guoliang
RUN mkdir /opt/guoliang

# RUN useradd guoliang && mkdir /opt/guoliang

#ENTRYPOINT ["echo"]

ADD ./index.tar.gz /opt/

CMD echo "$test_env1 $test_env2"
[root@k8s-master01 dockerfiles]# echo 123 > index.html
[root@k8s-master01 dockerfiles]# mkdir t
[root@k8s-master01 dockerfiles]# tar zcf index.tar.gz index.html t/
[root@k8s-master01 dockerfiles]# ls
Dockerfile  index.html  index.tar.gz  t
[root@k8s-master01 dockerfiles]# docker build -t centos:add .
Sending build context to Docker daemon  4.608kB
Step 1/9 : FROM centos
 ---> 5d0da3dc9764
Step 2/9 : LABEL maintainer="test dockerfile"
 ---> Using cache
 ---> 4d416c026780
Step 3/9 : LABEL test=dockerfile
 ---> Using cache
 ---> 786676f65452
Step 4/9 : ENV test_env1 env1
 ---> Using cache
 ---> c30055ed7393
Step 5/9 : ENV test_env2 env2
 ---> Using cache
 ---> c7f93a7f74b5
Step 6/9 : RUN useradd guoliang
 ---> Using cache
 ---> 6c4056e84b28
Step 7/9 : RUN mkdir /opt/guoliang
 ---> Using cache
 ---> 1848fe0e89de
Step 8/9 : ADD ./index.tar.gz /opt/
 ---> 12a00abfa8bd
Step 9/9 : CMD echo "$test_env1 $test_env2"
 ---> Running in b228f2da731a
Removing intermediate container b228f2da731a
 ---> 8b298ae30bc0
Successfully built 8b298ae30bc0
Successfully tagged centos:add
[root@k8s-master01 dockerfiles]# docker run -it --rm centos:add bash
[root@7112579dd6e7 /]# cd /opt
[root@7112579dd6e7 opt]# ls
guoliang  index.html  t
[root@7112579dd6e7 opt]# 

举例5:COPY

vi /root/dockerfiles/Dockerfile
FROM centos

LABEL maintainer="test dockerfile"
LABEL test=dockerfile

ENV test_env1 env1
ENV test_env2 env2

RUN useradd guoliang
RUN mkdir /opt/guoliang

# RUN useradd guoliang && mkdir /opt/guoliang

#ENTRYPOINT ["echo"]

ADD ./index.tar.gz /opt/
COPY ./t /opt/guoliang/

CMD echo "$test_env1 $test_env2"
[root@k8s-master01 dockerfiles]# cd t/
[root@k8s-master01 t]# echo test > test.txt
[root@k8s-master01 t]# 
[root@k8s-master01 t]# cd ..
[root@k8s-master01 dockerfiles]# docker build -t centos:copy .
Sending build context to Docker daemon  5.632kB
Step 1/10 : FROM centos
 ---> 5d0da3dc9764
Step 2/10 : LABEL maintainer="test dockerfile"
 ---> Using cache
 ---> 4d416c026780
Step 3/10 : LABEL test=dockerfile
 ---> Using cache
 ---> 786676f65452
Step 4/10 : ENV test_env1 env1
 ---> Using cache
 ---> c30055ed7393
Step 5/10 : ENV test_env2 env2
 ---> Using cache
 ---> c7f93a7f74b5
Step 6/10 : RUN useradd guoliang
 ---> Using cache
 ---> 6c4056e84b28
Step 7/10 : RUN mkdir /opt/guoliang
 ---> Using cache
 ---> 1848fe0e89de
Step 8/10 : ADD ./index.tar.gz /opt/
 ---> Using cache
 ---> 12a00abfa8bd
Step 9/10 : COPY ./t /opt/guoliang/
 ---> 8f8d6a5a2b7e
Step 10/10 : CMD echo "$test_env1 $test_env2"
 ---> Running in bd0061934b93
Removing intermediate container bd0061934b93
 ---> 062dd8e2c609
Successfully built 062dd8e2c609
Successfully tagged centos:copy
[root@k8s-master01 dockerfiles]# docker run -it --rm centos:copy bash
[root@961085e9e4fc /]# cd /opt/guoliang/
[root@961085e9e4fc guoliang]# ls
test.txt # 不会拷贝当前目录,但可以拷贝当前目录的下一层目录,拷贝文件也不会解压

举例6:COPY不会解压

vi /root/dockerfiles/Dockerfile
FROM centos

LABEL maintainer="test dockerfile"
LABEL test=dockerfile

ENV test_env1 env1
ENV test_env2 env2

RUN useradd guoliang
RUN mkdir /opt/guoliang

# RUN useradd guoliang && mkdir /opt/guoliang

#ENTRYPOINT ["echo"]

ADD ./index.tar.gz /opt/
COPY ./index.tar.gz /opt/guoliang/

CMD echo "$test_env1 $test_env2"
[root@k8s-master01 dockerfiles]# docker build -t centos:copy .
Sending build context to Docker daemon  5.632kB
Step 1/10 : FROM centos
 ---> 5d0da3dc9764
Step 2/10 : LABEL maintainer="test dockerfile"
 ---> Using cache
 ---> 4d416c026780
Step 3/10 : LABEL test=dockerfile
 ---> Using cache
 ---> 786676f65452
Step 4/10 : ENV test_env1 env1
 ---> Using cache
 ---> c30055ed7393
Step 5/10 : ENV test_env2 env2
 ---> Using cache
 ---> c7f93a7f74b5
Step 6/10 : RUN useradd guoliang
 ---> Using cache
 ---> 6c4056e84b28
Step 7/10 : RUN mkdir /opt/guoliang
 ---> Using cache
 ---> 1848fe0e89de
Step 8/10 : ADD ./index.tar.gz /opt/
 ---> Using cache
 ---> 12a00abfa8bd
Step 9/10 : COPY ./index.tar.gz /opt/guoliang/
 ---> 00d26becacce
Step 10/10 : CMD echo "$test_env1 $test_env2"
 ---> Running in 413cdde90d0e
Removing intermediate container 413cdde90d0e
 ---> bbb0bd13c11c
Successfully built bbb0bd13c11c
Successfully tagged centos:copy
[root@k8s-master01 dockerfiles]# docker run -it --rm centos:copy bash
[root@ffb8f53a6ca2 /]# cd /opt/guoliang
[root@ffb8f53a6ca2 guoliang]# ls
index.tar.gz

举例7:WORKDIR

vi /root/dockerfiles/Dockerfile
FROM centos

LABEL maintainer="test dockerfile"
LABEL test=dockerfile

ENV test_env1 env1
ENV test_env2 env2

RUN useradd guoliang
RUN mkdir /opt/guoliang

# RUN useradd guoliang && mkdir /opt/guoliang

#ENTRYPOINT ["echo"]

ADD ./index.tar.gz /opt/
COPY ./index.tar.gz /opt/guoliang/

WORKDIR /opt/guoliang
CMD pwd; ls
[root@k8s-master01 dockerfiles]# docker build -t centos:workdir .
Sending build context to Docker daemon  5.632kB
Step 1/11 : FROM centos
 ---> 5d0da3dc9764
Step 2/11 : LABEL maintainer="test dockerfile"
 ---> Using cache
 ---> 4d416c026780
Step 3/11 : LABEL test=dockerfile
 ---> Using cache
 ---> 786676f65452
Step 4/11 : ENV test_env1 env1
 ---> Using cache
 ---> c30055ed7393
Step 5/11 : ENV test_env2 env2
 ---> Using cache
 ---> c7f93a7f74b5
Step 6/11 : RUN useradd guoliang
 ---> Using cache
 ---> 6c4056e84b28
Step 7/11 : RUN mkdir /opt/guoliang
 ---> Using cache
 ---> 1848fe0e89de
Step 8/11 : ADD ./index.tar.gz /opt/
 ---> Using cache
 ---> 12a00abfa8bd
Step 9/11 : COPY ./index.tar.gz /opt/guoliang/
 ---> Using cache
 ---> 00d26becacce
Step 10/11 : WORKDIR /opt/guoliang
 ---> Running in 4b20d79d9224
Removing intermediate container 4b20d79d9224
 ---> 35d0b1963616
Step 11/11 : CMD pwd; ls
 ---> Running in 99722ead3b2f
Removing intermediate container 99722ead3b2f
 ---> 5d54e7feb994
Successfully built 5d54e7feb994
Successfully tagged centos:workdir
[root@k8s-master01 dockerfiles]# 
[root@k8s-master01 dockerfiles]# 
[root@k8s-master01 dockerfiles]# docker run -it --rm centos:workdir
/opt/guoliang
index.tar.gz

举例8:USER

vi /root/dockerfiles/Dockerfile
FROM centos

LABEL maintainer="test dockerfile"
LABEL test=dockerfile

ENV test_env1 env1
ENV test_env2 env2

RUN useradd guoliang
RUN mkdir /opt/guoliang

# RUN useradd guoliang && mkdir /opt/guoliang

#ENTRYPOINT ["echo"]

ADD ./index.tar.gz /opt/
COPY ./index.tar.gz /opt/guoliang/

WORKDIR /opt/guoliang
CMD pwd; ls

USER 1000
[root@k8s-master01 dockerfiles]# docker build -t centos:user .
Sending build context to Docker daemon  5.632kB
Step 1/12 : FROM centos
 ---> 5d0da3dc9764
Step 2/12 : LABEL maintainer="test dockerfile"
 ---> Using cache
 ---> 4d416c026780
Step 3/12 : LABEL test=dockerfile
 ---> Using cache
 ---> 786676f65452
Step 4/12 : ENV test_env1 env1
 ---> Using cache
 ---> c30055ed7393
Step 5/12 : ENV test_env2 env2
 ---> Using cache
 ---> c7f93a7f74b5
Step 6/12 : RUN useradd guoliang
 ---> Using cache
 ---> 6c4056e84b28
Step 7/12 : RUN mkdir /opt/guoliang
 ---> Using cache
 ---> 1848fe0e89de
Step 8/12 : ADD ./index.tar.gz /opt/
 ---> Using cache
 ---> 12a00abfa8bd
Step 9/12 : COPY ./index.tar.gz /opt/guoliang/
 ---> Using cache
 ---> 00d26becacce
Step 10/12 : WORKDIR /opt/guoliang
 ---> Using cache
 ---> 35d0b1963616
Step 11/12 : CMD pwd; ls
 ---> Using cache
 ---> 5d54e7feb994
Step 12/12 : USER 1000
 ---> Running in b67c15afbde6
Removing intermediate container b67c15afbde6
 ---> 133143caec08
Successfully built 133143caec08
Successfully tagged centos:user
[root@k8s-master01 dockerfiles]# 
[root@k8s-master01 dockerfiles]# 
[root@k8s-master01 dockerfiles]# docker run -it --rm centos:user bash
[guoliang@48bc5b5db6d3 guoliang]$ whoami
guoliang

举例:VOLUME

vi /root/dockerfiles/Dockerfile
FROM centos

LABEL maintainer="test dockerfile"
LABEL test=dockerfile

ENV test_env1 env1
ENV test_env2 env2

RUN useradd guoliang
RUN mkdir /opt/guoliang

# RUN useradd guoliang && mkdir /opt/guoliang

#ENTRYPOINT ["echo"]

ADD ./index.tar.gz /opt/
COPY ./index.tar.gz /opt/guoliang/

WORKDIR /opt/guoliang
CMD pwd; ls

#USER 1000

VOLUME /data
[root@k8s-master01 dockerfiles]# docker build -t centos:volume .
Sending build context to Docker daemon  5.632kB
Step 1/12 : FROM centos
 ---> 5d0da3dc9764
Step 2/12 : LABEL maintainer="test dockerfile"
 ---> Using cache
 ---> 4d416c026780
Step 3/12 : LABEL test=dockerfile
 ---> Using cache
 ---> 786676f65452
Step 4/12 : ENV test_env1 env1
 ---> Using cache
 ---> c30055ed7393
Step 5/12 : ENV test_env2 env2
 ---> Using cache
 ---> c7f93a7f74b5
Step 6/12 : RUN useradd guoliang
 ---> Using cache
 ---> 6c4056e84b28
Step 7/12 : RUN mkdir /opt/guoliang
 ---> Using cache
 ---> 1848fe0e89de
Step 8/12 : ADD ./index.tar.gz /opt/
 ---> Using cache
 ---> 12a00abfa8bd
Step 9/12 : COPY ./index.tar.gz /opt/guoliang/
 ---> Using cache
 ---> 00d26becacce
Step 10/12 : WORKDIR /opt/guoliang
 ---> Using cache
 ---> 35d0b1963616
Step 11/12 : CMD pwd; ls
 ---> Using cache
 ---> 5d54e7feb994
Step 12/12 : VOLUME /data
 ---> Running in 3aec92ea0742
Removing intermediate container 3aec92ea0742
 ---> 26de69d82003
Successfully built 26de69d82003
Successfully tagged centos:volume
[root@k8s-master01 dockerfiles]# 
[root@k8s-master01 dockerfiles]# docker exec -it --rm centos:volume bash
unknown flag: --rm
See 'docker exec --help'.
[root@k8s-master01 dockerfiles]# docker run -it --rm centos:volume bash
[root@621e2e221dde guoliang]# 
[root@621e2e221dde guoliang]# cd /data
[root@621e2e221dde data]# ls
[root@621e2e221dde data]# touch 1 #此时在host主机的/var/lib/docker/volumes目录下可以找到创建的文件。如果容器退出,该内容会消失
[root@k8s-master01 ~]# docker run -it -v /root/mysql_data/:/data/ centos:volume bash
[root@cdfb2bb79d79 guoliang]# 
[root@cdfb2bb79d79 guoliang]# cd /data
[root@cdfb2bb79d79 data]# touch 123 #此时在host的/root/mysql_data目录下会出现创建的文件,容器退出后该文件内容不会丢失
Logo

开源、云原生的融合云平台

更多推荐