【docker】docker添加host操作 dockerfile

一、–add-host

docker run 后追加参数--add-host=www.test.cn:192.168.100.10

二、使用容器卷

docker run -v 宿主机内hosts文件:/etc/hosts

三、dockerfile内设计

思路:
(1)dockerfile entrypoint启动一个shell,在shell内先执行add host脚本。

FROM openjdk:8-jdk-alpine

ADD "path/hosts" "/hosts-extra"
ADD "path/add-hosts.sh" "/add-hosts.sh"
ADD "path/entrypoint.sh" /
RUN chmod +x "/entrypoint.sh"
# docker入口
ENTRYPOINT ["/entrypoint.sh"]

注:openjdk:8-jdk-alpinebash命令是ash
entrypoint.sh内先调用add-hosts.sh

#!/bin/ash
echo "starting app!"
sh /add-hosts.sh
# 最终需要启动的任务,比如:java -jar server.jar
${RUN_APP}

add-hosts.sh

#!/bin/ash
# mean to add \n to bottom the file
echo "ready to add hosts in docker!"
cat >> /etc/host <<  EOF

EOF
cat "/hosts-extra" >> /etc/hosts
### 使用 DockerDockerfile 构建并运行容器 #### 创建 Dockerfile 文件 为了构建 Docker 镜像,需先创建一个名为 `Dockerfile` 的文件。此文件包含了用于组装镜像的一系列指令,这些指令描述了从基础镜像开始直到最终可执行状态的所有操作[^1]。 ```Dockerfile # 基础镜像 FROM openjdk:8-jdk-alpine # 维护者信息 LABEL maintainer="admin@example.com" # 设置工作目录 WORKDIR /app # 将本地 jar 包复制到容器内 COPY target/my-app.jar . # 暴露应用监听端口 EXPOSE 8080 # 启动命令 ENTRYPOINT ["java", "-jar", "/app/my-app.jar"] ``` 上述例子展示了如何利用 Java 应用来准备一个简单的 Dockerfile。这里选择了轻量级的基础镜像,并指定了应用程序所需的维护者标签、工作路径、依赖项拷贝动作、服务暴露端口及启动方式。 #### 编译 Docker 镜像 完成 Dockerfile 编写之后,在该文件所在位置打开终端窗口,输入如下命令编译生成新的 Docker 镜像: ```bash docker build -t my-docker-image-name . ``` 这条语句告诉 Docker 工具链依据当前目录下的 Dockerfile 来制作新版本的镜像;其中 `-t` 参数后面跟的是自定义的目标镜像名称。 #### 运行 Docker 容器实例 一旦有了可用的 Docker 镜像,就可以通过下面的方式快速启动一个新的容器实例: ```bash docker run -d \ --name=my-container-name \ -p host-port:container-port \ -v local-path:container-path \ -e ENV_VAR_NAME=value \ my-docker-image-name ``` 这段 shell 脚本片段说明了怎样以守护进程模式 (`-d`) 执行指定名字 (`--name`) 的容器,同时设置了主机与容器间的网络端口映射关系 (`-p`) ,挂载卷 (-v),设置环境变量(-e)[^2]。 例如,如果希望把宿主机上的某个日志文件夹绑定至正在运行中的容器内部,则可以采用类似于这样的参数组合形式: ```bash -v D:/docker/demo/logs:/home/service/logs ``` 这会使得位于 Windows 主机上 `D:\docker\demo\logs` 下面的日志记录能够被 Linux 系统里的 `/home/service/logs` 访问得到。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值