Docker - DockerFile及Docker网络

发现对DockerFile理解不深刻,于是又撸了下Docker视频,在此记录一下。

DockerFile

DockerFile文件主要命令:

FROM              # 基础镜像,一切从这里开始构建    
MAINTAINER        # 镜像是谁写的,姓名+邮箱
RUN               # 镜像构建的时候需要运行的命令
ADD               # 步骤,例如:tomcat镜像,这个tomcat压缩包,添加内容
WORKDIR           # 镜像的工作目录
VOLUME            # 挂载的目录
EXPOST            # 保留端口配置
CMD               # 指定这个容器启动时候要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT        # 指定这个容器启动时候要运行的命令,可追加命令
ONBUILD           # 当构建一个被继承DockerFile 这个时候就会运行ONBUILD指令,触发指令
COPY              # 类似ADD,将我们的文件拷贝到镜像中
ENV               # 构建的时候设置环境变量

通过DockerFile构建镜像:

docker build -f DockerFile文件路径 -t 镜像名:[tag]

# build成功提示
successfully built xxx
successfully tagged xxx:xxx

# 查看镜像构建过程
docker history 镜像ID

注意点

命令区分

ENTRYPOINT和CMD的区别
使用ENTRYPOINT时在docker run时候可以直接追加命令,但是CMD无法追加命令,具体区别如下展示:
准备2个DockerFile
DockerFile1

FROM centos
CMD ["ls","-a"]

DockerFile2

FROM centos
ENTRYPOINT ["ls","-a"]

分别根据DockerFile构建镜像,构建完成后分别执行以下命令

docker run 镜像ID -l

此时会出现两个结果:DockerFile中命令为CMD的,会存在如下报错:

docker: Error response from daemon: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: "-l": executable file not found in $PATH: unknown.
ERRO[0000] error waiting for container: context canceled 

而DockerFile中命令为ENTRYPOINT的可正常将详细信息返回

total 7420
drwxrwxrwx 1 root root      28 Nov  7 10:15 .
drwxr-xr-x 1 root root       6 Mar  7 20:55 ..
drwxrwxrwx 1 root root      20 Nov  7 10:15 bin
-rw-rw-rw- 1 root root     240 Nov  7 09:33 get_arch.sh
-rw-rw-rw- 1 root root     235 Nov  7 09:33 install_argocd_cli.sh
-rw-rw-rw- 1 root root     405 Nov  7 09:33 install_buildx.sh
-rw-rw-rw- 1 root root     157 Nov  7 09:33 install_glab.sh
-rw-rw-rw- 1 root root     195 Nov  7 09:33 install_golangci_lint.sh
-rw-rw-rw- 1 root root     701 Nov  7 09:33 install_helm_push_plugin.sh
-rw-rw-rw- 1 root root     385 Nov  7 09:33 install_kind.sh
-rw-rw-rw- 1 root root     387 Nov  7 09:33 install_kubectl.sh
-rw-rw-rw- 1 root root     175 Nov  7 09:33 install_mc.sh
-rw-rw-rw- 1 root root     389 Nov  7 09:33 install_nerdctl.sh
-rw-rw-rw- 1 root root     321 Nov  7 09:33 install_node.sh
-rw-rw-rw- 1 root root    1174 Nov  7 09:33 install_protoc.sh
-rw-rw-rw- 1 root root     575 Nov  7 09:33 install_shell_check.sh
-rw-rw-rw- 1 root root     280 Nov  7 09:33 install_trivy.sh
-rw-rw-rw- 1 root root     216 Nov  7 09:33 install_yq.sh
-rw-r--r-- 1 root root 7528755 Dec  8  2021 nerdctl-0.12.1-linux-amd64.tar.gz
drwxr-xr-x 1 root root      30 Nov  7 10:06 pkg
drwxrwxrwx 2 root root       6 May 29  2022 src
-rw-rw-rw- 1 root root    3590 Nov  7 09:33 verify_helm_standard.sh

查看运行容器,发现ENTRYPOINT的容器中-l命令被成功追加

CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS                      PORTS     NAMES
515aa735d276   930bc4c286ee   "ls -a -l"               9 minutes ago    Exited (0) 9 minutes ago              suspicious_easley
214e25784108   930bc4c286ee   "ls -a"                  9 minutes ago    Exited (0) 9 minutes ago              stoic_allen

Docker网络

结论:

  • Docker使用的是linux的桥接,宿主机中是一个Docker容器的网桥docker0
  • 所有容器在不指定网络的情况下,都是docker0路由的
  • docker会给我们的容器分配一个默认的可用IP。容器与容器之间的通信是通过docker0
  • Docker中的所有网络接口都是虚伪的。虚拟的转发效率高(内网传递文件)
  • 删除容器,对应的一对网桥就没了
  • 通过–link可用解决网络连通问题
    在这里插入图片描述
# 自定义docker网络,跨网络
docker network create xxx2
docker network commect  xxx1 xxx2
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker是一种开源的容器化平台,它可以帮助开发者将应用程序和服务以容器的形式进行打包、分发和部署。而Gluster是一个分布式存储系统,它可以将多个服务器的存储空间整合在一起,形成一个统一的、可扩展的存储池。 CentOS是一种基于Red Hat Enterprise Linux(RHEL)的开源操作系统,它提供了稳定性和安全性,并且具备广泛的应用支持。 Dockerfile是用于构建Docker镜像的脚本文件,它可以定义容器的运行环境、设置启动命令等。 那么,docker-gluster-centos Dockerfile是指在CentOS系统上构建一个包含Gluster分布式存储系统的Docker镜像的脚本文件。 在docker-gluster-centos Dockerfile中,我们可以使用CentOS的官方镜像作为基础镜像,并在此基础上安装和配置Gluster分布式存储系统。可以通过使用适当的软件包管理工具(如yum)来安装Gluster软件包和依赖项。然后,可以使用Dockerfile中的指令来启动和配置Gluster节点、创建Gluster卷以及设置其他必要的参数和选项。 通过构建docker-gluster-centos Docker镜像,我们可以在任何支持Docker的环境中快速部署和运行Gluster分布式存储系统,而无需手动安装和配置。这样可以大大简化Gluster的部署过程,提高运维效率,并且能够实现更加轻量级、可移植和可扩展的存储解决方案。 总而言之,docker-gluster-centos Dockerfile是用于在CentOS系统上构建包含Gluster分布式存储系统的Docker镜像的脚本文件,使得Gluster的部署和运行变得更加简单、可靠和可扩展。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值