The container fails to be launched and the system reports an error such as chown /mnt/acs_mnt/ossfs/XXXX: input/output error if you use the third-party data volume in the method of Data volume name: an existing directory in the image (for example,
o1:/data, when the /data directory exists in the image).
This error occurs because for named data volumes, Docker copies the existing files in the image to the data volumes and uses
chown to set the relevant user permissions. However, Linux prohibits the use of chown for mount points.
To solve this issue, you can use one of the following solutions:
- Upgrade Docker to version 1.11 or later versions. Upgrade Agent to the latest version and specify
nocopyin the orchestration template. Docker will not copy the data and thereby, no
chownerror will occur.
volumes: - o1:/data:nocopy - /tmp:/bbb
- If you need to copy the data, use the mount point path instead of the data volume name to set the data volume. For example, /mnt/acs_mnt/ossfs/XXXX:/data. However, this method bypasses the volume driver. When the machine is restarted, the container might be started before the OSSFS is successfully mounted and the container might be attached to a local data volume. To avoid this issue, use two data volumes at the same time. One is set by the data volume name and the other is set by the mount point path. The data volume set by the data volume name is only used for synchronizing with the volume driver and is not used for storage.
volumes: - o1:/nouse - /mnt/acs_mnt/ossfs/XXXX:/data - /tmp:/bbb