Docker在两台不同的机器上安装不同的path和相同的configuration
我的docker撰写服务的条目是:
api: restart: always build: ./project/api volumes: - ./:/usr/src/app:ro - ~/data:/root/data:ro # /root is the ~ in container
我运行我的容器使用
sudo docker-compose down && sudo docker-compose up --build -d
我有两个不同的机器,都与admin
用户。 在检查创build的容器时:
sudo docker inspect project_api_1 | grep Mounts -A20
在机器1上,admin用户是admin:x:1005:1001:Admin User,,,:/home/admin:/bin/zsh
和admin:x:1000:1000:Debian:/home/admin:/bin/zsh
在机器2上
机器上的输出1
"Mounts": [ { "Type": "bind", "Source": "/home/admin/project", "Destination": "/usr/src/app", "Mode": "ro", "RW": false, "Propagation": "rprivate" }, { "Type": "bind", "Source": "/home/admin/data", "Destination": "/root/data", "Mode": "ro", "RW": false, "Propagation": "rprivate" } ],
机器2上的输出
"Mounts": [ { "Type": "bind", "Source": "/home/admin/project", "Destination": "/usr/src/app", "Mode": "ro", "RW": false, "Propagation": "rprivate" }, { "Type": "bind", "Source": "/root/data", "Destination": "/root/data", "Mode": "ro", "RW": false, "Propagation": "rprivate" } ],
在机器1上, /root/data
指向/home/admin/data
,这是所需的行为,但在机器2上指向/root/data
。 我可以通过使用相对path./data
(符号链接到〜/ data)或通过使用绝对path/home/admin/data
。 我的docker版本在两台机器上都是一样的 – Docker version 17.06.0-ce, build 02c1d87
我很好奇,为什么这是不同的?
在你的yaml文件中,你正在使用〜/ data ,其中〜是你用来运行docker的用户主目录的简写。 从这个angular度来说,我想你是在pipe理员上运行机器1上的docker,而你是以root身份运行机器2上的docker。
您应该记住,源目录是主机(不是容器)上的一个目录,所以与〜相关的用户是主机上的用户。