欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > docker面试题

docker面试题

2025/9/28 13:10:58 来源:https://blog.csdn.net/ZhanBiaoChina/article/details/147195069  浏览:    关键词:docker面试题

1.docker网络

Docker网络是Docker容器之间进行通信的关键功能。Docker提供了多种网络模式和驱动,以满足不同的网络需求。以下是Docker网络的详细介绍:
1.Docker网络模式
Docker提供了以下几种网络模式,每种模式适用于不同的场景:
1.1 Bridge(默认模式)
特点:每个容器都有自己的虚拟网络接口,并连接到Docker的默认桥接网络(docker0)。
适用场景:适用于需要容器之间互相通信的场景。

docker run -d --name container1 -p 8080:80 nginx

1.2 Host
特点:容器直接使用宿主机的网络栈,没有网络隔离。
适用场景:适用于需要高性能网络的场景。

docker run -d --name container2 --network host nginx

1.3 None
特点:容器没有网络功能,需要手动配置网络。
适用场景:适用于不需要网络的容器。

docker run -d --name container3 --network none nginx

1.4 Overlay
特点:用于Docker Swarm模式,支持跨主机的容器网络。
适用场景:适用于多主机的容器网络。

docker network create --driver overlay my_overlay_network
docker run -d --name container4 --network my_overlay_network nginx

2.Docker网络驱动

Docker支持多种网络驱动,每种驱动适用于不同的网络需求:
2.1 Bridge Driver
默认驱动,适用于单主机的容器网络。
创建自定义bridge网络:.

docker network create --driver bridge my_bridge_network

2.2 Host Driver
容器直接使用宿主机的网络栈。
适用于需要高性能网络的场景。
2.3 Overlay Driver
适用于Docker Swarm模式,支持跨主机的容器网络。
创建overlay网络:

docker network create --driver overlay my_overlay_network

2.4 MACVLAN Driver
适用于需要容器拥有独立MAC地址的场景。
创建MACVLAN网络:

docker network create --driver macvlan --subnet 192.168.1.0/24 --gateway 192.168.1.1 my_macvlan_network

3.查看和管理Docker网络

查看网络列表:

docker network ls

查看网络详情:

docker network inspect my_bridge_network

创建网络:

docker network create my_bridge_network

删除网络:

docker network rm my_bridge_network

连接容器到网络:

docker network connect my_bridge_network container1

断开容器与网络的连接:

docker network disconnect my_bridge_network container1

4.ADD 和 WORKDIR的区别

在 Dockerfile 中,ADD 和 WORKDIR 是两个完全不同的指令,它们的功能和用途完全不同。以下是它们的详细区别:

1.功能
ADD:
用于将文件或目录从本地主机复制到 Docker 镜像中。
可以复制本地文件、目录,或者从 URL 下载文件。
如果目标路径不存在,Docker 会自动创建所需的目录。
例如:

ADD file.txt /app/
ADD https://example.com/file.txt /app/

WORKDIR:
用于设置 Docker 容器中的工作目录(working directory)。

后续的指令(如 RUN、CMD、ENTRYPOINT 等)都会在这个目录下执行。
如果目录不存在,Docker 会自动创建它。
例如:

WORKDIR /app
RUN echo "Current directory is $(pwd)"

2.用途
ADD:
主要用于将文件或目录复制到镜像中。
适合在构建镜像时添加文件或依赖项。
例如,将代码文件、配置文件或依赖包复制到镜像中。
WORKDIR:
主要用于设置容器内的工作目录。
适合在运行容器时指定工作路径,方便后续命令的执行。
例如,设置工作目录为 /app,然后运行 RUN 命令安装依赖。

3.示例对比
使用 ADD:

FROM alpine
ADD file.txt /app/file.txt  # 将本地的 file.txt 复制到镜像的 /app/ 目录

使用 WORKDIR:

FROM alpine
WORKDIR /app  # 设置工作目录为 /app
RUN echo "Hello World" > file.txt  # 在 /app 目录下创建 file.txt

4.Dockerfile 中 CMD 与 ENTRYPOINT 区别

1.功能区别
CMD:
CMD 是容器启动时的默认命令。
如果用户在运行容器时没有指定命令,CMD 中的命令会被执行。

如果用户在运行容器时指定了命令,则 CMD 中的命令会被覆盖。
通常用于提供容器的默认行为,但允许用户在运行时动态修改。

ENTRYPOINT:
ENTRYPOINT 是容器的入口点(entry point)。
它定义了容器启动时必须执行的命令。

如果用户在运行容器时指定了命令,这些命令会被作为参数传递给 ENTRYPOINT 定义的命令。
ENTRYPOINT 提供了一种更固定的行为,通常用于确保容器始终以某种方式运行。

2.用法区别
CMD:
语法:CMD [“command”, “param1”, “param2”] 或 CMD command param1 param2

CMD ["echo", "Hello World"]

或者

CMD echo Hello World

ENTRYPOINT:
语法:ENTRYPOINT [“command”, “param1”, “param2”] 或 ENTRYPOINT command param1 param2

ENTRYPOINT ["echo", "Hello World"]

或者

ENTRYPOINT echo Hello World

3.覆盖性区别
CMD:
如果用户在运行容器时指定了命令,则 CMD 中的命令会被覆盖。
例如:

docker run my_image echo "Custom Command"

这里,echo “Custom Command” 会覆盖 CMD 中的默认命令。
ENTRYPOINT:
如果用户在运行容器时指定了命令,这些命令会被作为参数传递给 ENTRYPOINT 定义的命令。
例如:

ENTRYPOINT ["echo"]

运行容器时:

docker run my_image "Custom Command"

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词