在Docker容器中访问宿主机器上的文件,可以通过以下两种方式进行:
- 数据卷挂载:
docker run -d -v /host/path:/container/path ...
此命令将宿主机的/host/path目录挂载到容器的/container/path目录。容器内进程访问/container/path目录的文件时,会直接操作宿主机的/host/path目录。
例如:
# 在宿主机上创建data目录
mkdir data
# 在data目录中创建file文件
echo "Hello" > data/file
# 运行容器并挂载data目录
docker run -d -v $(pwd)/data:/data ubuntu
# 在容器内访问/data/file文件
docker exec -it <容器ID> cat /data/file
# 输出Hello
- 宿主机绑定:
docker run -d --privileged -p 8080:80 -v /:/host ubuntu
此命令将启动一个ubuntu容器,绑定宿主机根目录到容器的/host目录,并将容器的80端口映射到宿主机的8080端口。
然后我们可以在浏览器中访问http://ip:8080/host/路径访问宿主机文件。
例如:
# 在宿主机根目录下创建file文件
echo "Hello" > /file
# 运行前述privileged容器
# 在浏览器访问http://ip:8080/host/file文件
# 输出Hello
因此,通过上述两种方式,我们可以使Docker容器访问宿主机文件,实现容器与宿主机的文件交互,简化测试和开发流程。