Docker 内修改被重置?教你如何正确操作
作为一名刚入行的开发者,你可能会遇到在 Docker 容器内进行修改后,重启容器时发现修改被重置的问题。这是因为 Docker 容器默认情况下是使用只读文件系统,任何修改都不会持久化。本文将教你如何正确操作,确保你的修改能够持久化。
步骤流程
以下是实现 Docker 内修改持久化的步骤流程:
步骤 | 操作 | 代码 |
---|---|---|
1 | 创建 Dockerfile | FROM ubuntu:latest |
2 | 复制文件到容器 | COPY . /app |
3 | 安装依赖 | RUN apt-get update && apt-get install -y nginx |
4 | 启动服务 | CMD ["nginx", "-g", "daemon off;"] |
5 | 构建镜像 | docker build -t my-nginx . |
6 | 运行容器 | docker run -d -p 80:80 --name my-nginx-container my-nginx |
7 | 修改容器文件 | docker exec -it my-nginx-container bash |
8 | 重启容器 | docker restart my-nginx-container |
详细操作
1. 创建 Dockerfile
首先,创建一个名为 Dockerfile
的文件,并写入以下内容:
FROM ubuntu:latest
COPY . /app
RUN apt-get update && apt-get install -y nginx
CMD ["nginx", "-g", "daemon off;"]
FROM ubuntu:latest
:基于 Ubuntu 基础镜像创建新镜像。COPY . /app
:将当前目录下的所有文件复制到容器的/app
目录。RUN apt-get update && apt-get install -y nginx
:更新软件包列表并安装 Nginx。CMD ["nginx", "-g", "daemon off;"]
:设置容器启动时执行的命令。
2. 构建镜像
在 Dockerfile 所在的目录下执行以下命令构建镜像:
docker build -t my-nginx .
这会根据 Dockerfile 创建一个名为 my-nginx
的镜像。
3. 运行容器
使用以下命令运行容器:
docker run -d -p 80:80 --name my-nginx-container my-nginx
-d
:后台运行容器。-p 80:80
:将容器的 80 端口映射到宿主机的 80 端口。--name my-nginx-container
:为容器指定名称。my-nginx
:使用之前构建的镜像。
4. 修改容器文件
进入容器并进行修改:
docker exec -it my-nginx-container bash
这会打开一个 shell,你可以在其中进行文件修改。
5. 重启容器
修改完成后,重启容器以使修改生效:
docker restart my-nginx-container
关系图
以下是 Docker 容器与宿主机的关系图:
erDiagram
HOST ||--o| CONTAINER : "运行"
CONTAINER {
int port
string name
}
HOST {
string ip
}
结尾
通过以上步骤,你可以确保在 Docker 容器内进行的修改能够持久化。希望这篇文章能帮助你更好地理解 Docker 的工作原理,并解决你遇到的问题。如果你还有其他疑问,欢迎随时提问。