如何在Docker容器中访问宿主机器上的文件?

在Docker容器中访问宿主机器上的文件,可以通过以下两种方式进行:

  1. 数据卷挂载:
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
  1. 宿主机绑定:
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容器访问宿主机文件,实现容器与宿主机的文件交互,简化测试和开发流程。