ਡੌਕਰ ਮੇਰੇ ਮਾਉਂਟ ਮਾਰਗ 'ਤੇ ਕਿਉਂ ਨਹੀਂ ਲਿਖ ਸਕਦਾ? GitLab ਰਨਰ ਅਨੁਮਤੀਆਂ ਦਾ ਨਿਪਟਾਰਾ ਕਰਨਾ
ਡੌਕਰ ਵਿੱਚ ਇੱਕ ਗਿੱਟਲੈਬ ਰਨਰ ਨੂੰ ਚਲਾਉਣਾ ਅਕਸਰ ਸੁਚਾਰੂ ਢੰਗ ਨਾਲ ਚਲਦਾ ਹੈ-ਜਦੋਂ ਤੱਕ ਕਿ ਤੁਹਾਨੂੰ ਮਾਊਂਟ ਅਨੁਮਤੀਆਂ ਨਾਲ ਇੱਕ ਹੈਰਾਨ ਕਰਨ ਵਾਲੀ ਗਲਤੀ ਦਾ ਸਾਹਮਣਾ ਨਹੀਂ ਕਰਨਾ ਪੈਂਦਾ। 🐳 ਹਾਲ ਹੀ ਵਿੱਚ, ਮੈਨੂੰ ਇੱਕ "ਰੀਡ-ਓਨਲੀ ਫਾਈਲ ਸਿਸਟਮ" ਸਮੱਸਿਆ ਦਾ ਸਾਹਮਣਾ ਕਰਨਾ ਪਿਆ ਜਿਸ ਨੇ ਡੌਕਰ ਨੂੰ ਇੱਕ ਮਾਊਂਟ ਮਾਰਗ ਤੱਕ ਪਹੁੰਚਣ ਤੋਂ ਰੋਕ ਦਿੱਤਾ, ਇਸ ਨੂੰ ਠੀਕ ਕਰਨ ਦੇ ਕਈ ਯਤਨਾਂ ਦੇ ਬਾਵਜੂਦ। ਇਹ ਗਲਤੀ ਉਦੋਂ ਸਾਹਮਣੇ ਆਈ ਜਦੋਂ ਮੈਂ GitLab ਰਨਰ ਲਈ ਇੱਕ ਡੌਕਰ ਕੰਟੇਨਰ ਵਿੱਚ `/srv/gitlab-runner/config` ਡਾਇਰੈਕਟਰੀ ਨੂੰ ਮਾਊਂਟ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕੀਤੀ।
ਸ਼ੁਰੂ ਵਿੱਚ, ਮੈਂ ਮੰਨਿਆ ਕਿ ਇਹ ਇੱਕ ਡਾਇਰੈਕਟਰੀ ਅਨੁਮਤੀਆਂ ਸਮੱਸਿਆ ਹੋ ਸਕਦੀ ਹੈ, ਇਸਲਈ ਮੈਂ ਮਲਕੀਅਤ ਅਤੇ ਅਨੁਮਤੀਆਂ ਨੂੰ ਵਿਵਸਥਿਤ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕੀਤੀ। ਹਾਲਾਂਕਿ, ਇਹਨਾਂ ਤਬਦੀਲੀਆਂ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਨ ਤੋਂ ਬਾਅਦ ਵੀ, ਗਲਤੀ ਜਾਰੀ ਰਹੀ, ਕੁਝ ਹੋਰ ਪ੍ਰਣਾਲੀਗਤ ਵੱਲ ਇਸ਼ਾਰਾ ਕਰਦੀ ਹੈ। ਸੈਟਅਪ ਸਹੀ ਜਾਪਦਾ ਸੀ, ਅਤੇ ਫਿਰ ਵੀ ਡੌਕਰ ਨੇ ਮਾਰਗ ਨੂੰ ਬਣਾਉਣ ਜਾਂ ਐਕਸੈਸ ਕਰਨ ਦੀ ਕਿਸੇ ਵੀ ਕੋਸ਼ਿਸ਼ ਨੂੰ ਰੱਦ ਕਰਨਾ ਜਾਰੀ ਰੱਖਿਆ।
ਅੱਗੇ, ਮੈਂ ਜਾਂਚ ਕੀਤੀ ਕਿ ਕੀ ਮਾਊਟ ਵਿਕਲਪ ਡਾਇਰੈਕਟਰੀ ਨੂੰ ਸਿਰਫ਼-ਪੜ੍ਹਨ ਦਾ ਕਾਰਨ ਬਣ ਰਹੇ ਸਨ। ਮੇਰੇ ਹੈਰਾਨੀ ਲਈ, `/srv` ਅਸਲ ਵਿੱਚ `ro` (ਸਿਰਫ਼ ਪੜ੍ਹਨ ਲਈ) ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਨਾਲ ਮਾਊਂਟ ਕੀਤਾ ਜਾਪਦਾ ਹੈ, ਸੰਭਵ ਤੌਰ 'ਤੇ ਮੇਰੇ ਸਿਸਟਮ ਦੇ ਅੰਡਰਲਾਈੰਗ ਡੇਬੀਅਨ ਜਾਂ ਡੌਕਰ ਕੌਂਫਿਗਰੇਸ਼ਨ ਦੇ ਕਾਰਨ।
ਇਸ ਲੇਖ ਵਿੱਚ, ਮੈਂ ਹਰੇਕ ਸਮੱਸਿਆ-ਨਿਪਟਾਰੇ ਦੇ ਪੜਾਅ ਨੂੰ ਤੋੜਾਂਗਾ ਅਤੇ ਦੱਸਾਂਗਾ ਕਿ ਡੌਕਰ ਕੁਝ ਡਾਇਰੈਕਟਰੀਆਂ ਨੂੰ ਸਿਰਫ਼-ਪੜ੍ਹਨ ਲਈ ਕਿਉਂ ਸਮਝ ਸਕਦਾ ਹੈ। ਖਾਸ ਹੱਲਾਂ ਦੀ ਪੜਚੋਲ ਕਰਕੇ, ਮੈਂ ਉਮੀਦ ਕਰਦਾ ਹਾਂ ਕਿ ਤੁਸੀਂ ਸਮਾਨ ਮਾਊਟ ਅਨੁਮਤੀ ਸਮੱਸਿਆਵਾਂ ਨੂੰ ਦੂਰ ਕਰਨ ਅਤੇ ਤੁਹਾਡੇ GitLab ਰਨਰ ਕੰਟੇਨਰ ਨੂੰ ਸੁਚਾਰੂ ਢੰਗ ਨਾਲ ਚਲਾਉਣ ਵਿੱਚ ਮਦਦ ਕਰੋਗੇ! 🚀
ਹੁਕਮ | ਵਰਤੋਂ ਦੀ ਉਦਾਹਰਨ |
---|---|
mount | grep "/srv" | ਸਾਰੇ ਮਾਊਂਟ ਕੀਤੇ ਫਾਈਲ ਸਿਸਟਮਾਂ ਨੂੰ ਸੂਚੀਬੱਧ ਕਰਦਾ ਹੈ, `/srv` ਡਾਇਰੈਕਟਰੀ ਲਈ ਫਿਲਟਰ ਕਰਨਾ। ਇਹ ਕਮਾਂਡ ਇਹ ਤਸਦੀਕ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰਦੀ ਹੈ ਕਿ ਕੀ ਡਾਇਰੈਕਟਰੀ ਸਿਰਫ਼ ਰੀਡ-ਓਨਲੀ (ro) ਜਾਂ ਰੀਡ-ਰਾਈਟ (rw) ਦੇ ਤੌਰ 'ਤੇ ਮਾਊਂਟ ਕੀਤੀ ਗਈ ਹੈ, ਜੋ ਕਿ ਅਨੁਮਤੀ ਦੇ ਮੁੱਦਿਆਂ ਦੇ ਨਿਦਾਨ ਲਈ ਮਹੱਤਵਪੂਰਨ ਹੈ। |
sudo mount -o remount,rw /srv | ਪੜ੍ਹਨ-ਲਿਖਣ ਦੀ ਇਜਾਜ਼ਤ ਨਾਲ `/srv` ਡਾਇਰੈਕਟਰੀ ਨੂੰ ਮੁੜ-ਮਾਊਂਟ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼। ਇਹ ਕਮਾਂਡ ਉਹਨਾਂ ਸਥਿਤੀਆਂ ਲਈ ਖਾਸ ਹੈ ਜਿੱਥੇ ਇੱਕ ਡਾਇਰੈਕਟਰੀ ਨੂੰ ਅਣਜਾਣੇ ਵਿੱਚ ਸਿਰਫ਼-ਪੜ੍ਹਨ ਲਈ ਮਾਊਂਟ ਕੀਤਾ ਗਿਆ ਹੈ ਅਤੇ ਡੌਕਰ ਵਾਲੀਅਮ ਬਾਈਡਿੰਗ ਦੇ ਕੰਮ ਕਰਨ ਲਈ ਲਿਖਣਯੋਗ ਹੋਣ ਦੀ ਲੋੜ ਹੈ। |
sudo chown -R 1000:1000 /srv/gitlab-runner | ਇੱਕ ਖਾਸ ਉਪਭੋਗਤਾ (UID 1000) ਲਈ `/srv/gitlab-runner` ਡਾਇਰੈਕਟਰੀ ਦੀ ਮਲਕੀਅਤ ਨੂੰ ਵਾਰ-ਵਾਰ ਬਦਲਦਾ ਹੈ। ਇਹ ਕਮਾਂਡ ਖਾਸ ਤੌਰ 'ਤੇ ਉਹਨਾਂ ਕੇਸਾਂ ਲਈ ਲਾਭਦਾਇਕ ਹੈ ਜਿੱਥੇ ਡੌਕਰ ਨੂੰ ਬਾਈਡ-ਮਾਊਂਟ ਕੀਤੇ ਵਾਲੀਅਮ ਨੂੰ ਐਕਸੈਸ ਕਰਨ ਲਈ ਉਪਭੋਗਤਾ-ਵਿਸ਼ੇਸ਼ ਅਧਿਕਾਰਾਂ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ। |
docker.from_env() | ਇੱਕ ਡੌਕਰ ਕਲਾਇੰਟ ਨੂੰ ਸ਼ੁਰੂ ਕਰਦਾ ਹੈ ਜੋ ਹੋਸਟ ਮਸ਼ੀਨ 'ਤੇ ਸੰਰਚਿਤ ਡੌਕਰ ਵਾਤਾਵਰਣ ਨਾਲ ਜੁੜਦਾ ਹੈ। ਇਹ ਪਾਇਥਨ ਸਕ੍ਰਿਪਟਾਂ ਵਿੱਚ ਡੌਕਰ ਕੰਟੇਨਰਾਂ ਨੂੰ ਪ੍ਰੋਗਰਾਮੇਟਿਕ ਤੌਰ 'ਤੇ ਪ੍ਰਬੰਧਿਤ ਕਰਨ ਲਈ ਜ਼ਰੂਰੀ ਹੈ, ਜਿਵੇਂ ਕਿ ਸ਼ੁਰੂ ਕਰਨਾ, ਰੋਕਣਾ, ਜਾਂ ਕੰਟੇਨਰਾਂ ਦਾ ਨਿਰੀਖਣ ਕਰਨਾ। |
client.containers.run() | ਪਾਈਥਨ ਲਈ ਡੌਕਰ SDK ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਇੱਕ ਡੌਕਰ ਕੰਟੇਨਰ ਚਲਾਉਂਦਾ ਹੈ। ਇਹ ਵਿਧੀ ਬਹੁਤ ਉਪਯੋਗੀ ਹੁੰਦੀ ਹੈ ਜਦੋਂ ਕੰਟੇਨਰ ਦੀ ਸੰਰਚਨਾ 'ਤੇ ਸਹੀ ਨਿਯੰਤਰਣ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ, ਜਿਵੇਂ ਕਿ ਵੌਲਯੂਮ ਬਾਈਡਿੰਗ ਅਤੇ ਵਿਸ਼ੇਸ਼ ਅਧਿਕਾਰ ਪ੍ਰਾਪਤ ਐਕਸੈਸ ਨੂੰ ਪ੍ਰੋਗਰਾਮੇਟਿਕ ਤੌਰ 'ਤੇ ਪਰਿਭਾਸ਼ਤ ਕਰਨਾ। |
unittest.TestCase | ਪਾਇਥਨ ਦੇ ਯੂਨਿਟਟੈਸਟ ਫਰੇਮਵਰਕ ਦਾ ਹਿੱਸਾ, ਇਹ ਬੇਸ ਕਲਾਸ ਸੰਗਠਿਤ ਅਤੇ ਮੁੜ ਵਰਤੋਂ ਯੋਗ ਟੈਸਟ ਕੇਸ ਬਣਾਉਣ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ, ਜੋ ਹਰੇਕ ਫੰਕਸ਼ਨ ਦੇ ਵਿਵਹਾਰ ਨੂੰ ਪ੍ਰਮਾਣਿਤ ਕਰਨ ਲਈ ਜ਼ਰੂਰੀ ਹਨ, ਖਾਸ ਕਰਕੇ ਬਹੁ-ਵਾਤਾਵਰਣ ਦ੍ਰਿਸ਼ਾਂ ਵਿੱਚ। |
assertNotIn("ro", mount_check) | ਇਹ ਪੁਸ਼ਟੀ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ ਕਿ ਸਿਰਫ਼-ਪੜ੍ਹਨ ਲਈ (ro) ਵਿਸ਼ੇਸ਼ਤਾ `mount` ਕਮਾਂਡ ਆਉਟਪੁੱਟ ਵਿੱਚ ਮੌਜੂਦ ਨਹੀਂ ਹੈ, ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਕਿ ਡਾਇਰੈਕਟਰੀ ਲਿਖਣਯੋਗ ਹੈ। ਇਹ ਫਾਈਲ ਸਿਸਟਮ ਅਨੁਮਤੀਆਂ ਲਈ ਇੱਕ ਨਿਸ਼ਾਨਾ ਜਾਂਚ ਹੈ। |
restart_policy={"Name": "always"} | ਡੌਕਰ ਕੰਟੇਨਰ ਨੂੰ ਆਪਣੇ ਆਪ ਮੁੜ ਚਾਲੂ ਕਰਨ ਲਈ ਕੌਂਫਿਗਰ ਕਰਦਾ ਹੈ ਜੇਕਰ ਇਹ ਅਚਾਨਕ ਬੰਦ ਹੋ ਜਾਂਦਾ ਹੈ। ਇਹ ਸੈਟਿੰਗ ਲੰਬੇ ਸਮੇਂ ਤੋਂ ਚੱਲ ਰਹੀਆਂ ਸੇਵਾਵਾਂ ਜਿਵੇਂ ਕਿ GitLab Runner ਲਈ ਮਹੱਤਵਪੂਰਨ ਹੈ ਤਾਂ ਜੋ ਇਹ ਯਕੀਨੀ ਬਣਾਇਆ ਜਾ ਸਕੇ ਕਿ ਇਹ ਰੀਬੂਟ ਜਾਂ ਤਰੁੱਟੀਆਂ ਤੋਂ ਬਾਅਦ ਚਾਲੂ ਰਹੇ। |
container.status | ਇੱਕ ਡੌਕਰ ਕੰਟੇਨਰ ਦੀ ਮੌਜੂਦਾ ਸਥਿਤੀ ਨੂੰ ਮੁੜ ਪ੍ਰਾਪਤ ਕਰਦਾ ਹੈ (ਉਦਾਹਰਨ ਲਈ, "ਚੱਲ ਰਿਹਾ," "ਬਾਹਰ")। ਇਹ ਕਮਾਂਡ ਪ੍ਰੋਗਰਾਮੇਟਿਕ ਤੌਰ 'ਤੇ ਪੁਸ਼ਟੀ ਕਰਨ ਲਈ ਜ਼ਰੂਰੀ ਹੈ ਕਿ ਕੰਟੇਨਰ ਸਫਲਤਾਪੂਰਵਕ ਸ਼ੁਰੂ ਹੋ ਗਿਆ ਹੈ ਅਤੇ ਕਾਰਜਸ਼ੀਲ ਹੈ। |
ls -ld /srv/gitlab-runner | `/srv/gitlab-runner` ਲਈ ਅਨੁਮਤੀਆਂ ਅਤੇ ਮਲਕੀਅਤ ਸਮੇਤ ਡਾਇਰੈਕਟਰੀ ਵੇਰਵਿਆਂ ਦੀ ਸੂਚੀ ਬਣਾਉਂਦਾ ਹੈ। ਇਹ ਕਮਾਂਡ ਇਹ ਤਸਦੀਕ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰਦੀ ਹੈ ਕਿ ਡਾਇਰੈਕਟਰੀ ਵਿੱਚ ਸਹੀ ਅਨੁਮਤੀਆਂ ਅਤੇ ਮਲਕੀਅਤ ਸੈਟਿੰਗਾਂ ਹਨ ਜੋ ਡੌਕਰ ਨੂੰ ਸਫਲਤਾਪੂਰਵਕ ਮਾਊਂਟ ਕਰਨ ਲਈ ਲੋੜੀਂਦੀਆਂ ਹਨ। |
ਹੱਲਾਂ ਨੂੰ ਸਮਝਣਾ: ਡੌਕਰ ਮਾਊਂਟ ਅਨੁਮਤੀਆਂ ਅਤੇ ਰੀਮਾਉਂਟਿੰਗ
ਨੂੰ ਸੰਬੋਧਨ ਕਰਨ ਲਈ ਡੌਕਰ ਮਾਊਂਟ GitLab ਰਨਰ ਸੈੱਟਅੱਪ ਵਿੱਚ ਆਈ ਸਮੱਸਿਆ, ਮੈਂ ਸ਼ੈੱਲ ਸਕ੍ਰਿਪਟਾਂ, ਡੌਕਰ ਕੰਪੋਜ਼, ਅਤੇ ਪਾਈਥਨ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਤਿੰਨ ਵੱਖਰੇ ਹੱਲ ਤਿਆਰ ਕੀਤੇ ਹਨ। ਪਹਿਲਾ ਹੱਲ ਫਾਈਲ ਸਿਸਟਮ ਅਨੁਮਤੀਆਂ ਨੂੰ ਸਿੱਧੇ ਤੌਰ 'ਤੇ ਹੇਰਾਫੇਰੀ ਕਰਨ ਲਈ ਬੁਨਿਆਦੀ ਸ਼ੈੱਲ ਕਮਾਂਡਾਂ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ। ਇਹ ਜਾਂਚ ਕੇ ਕਿ ਕੀ `/srv` ਡਾਇਰੈਕਟਰੀ `ਮਾਊਂਟ | ਨਾਲ ਸਿਰਫ਼ ਪੜ੍ਹਨ ਲਈ ਹੈ grep "/srv"` ਕਮਾਂਡ, ਸਕ੍ਰਿਪਟ ਪਛਾਣ ਕਰਦੀ ਹੈ ਕਿ ਕੀ ਡਾਇਰੈਕਟਰੀ ਅਨੁਮਤੀਆਂ ਡੌਕਰ ਦੀ ਪਹੁੰਚ ਸਮੱਸਿਆ ਦਾ ਕਾਰਨ ਬਣ ਰਹੀਆਂ ਹਨ। ਜੇਕਰ ਅਜਿਹਾ ਹੈ, ਤਾਂ ਸਕ੍ਰਿਪਟ `/srv` ਨੂੰ `sudo mount -o remount,rw/srv` ਨਾਲ ਰੀਡ-ਰਾਈਟ ਦੇ ਰੂਪ ਵਿੱਚ ਰੀਮਾਉਂਟ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦੀ ਹੈ। ਇਹ ਪਹੁੰਚ ਤੁਰੰਤ ਰੀਮਾਉਂਟ ਕਰਨ ਦੀਆਂ ਲੋੜਾਂ ਲਈ ਇੱਕ ਤੇਜ਼ ਹੱਲ ਹੈ, ਖਾਸ ਕਰਕੇ ਜਦੋਂ ਡੌਕਰ ਫਾਈਲ ਸਿਸਟਮ ਪਾਬੰਦੀਆਂ ਕਾਰਨ ਡਾਇਰੈਕਟਰੀਆਂ ਬਣਾਉਣ ਵਿੱਚ ਅਸਮਰੱਥ ਹੈ। ਉਦਾਹਰਨ ਲਈ, ਉਹਨਾਂ ਸਿਸਟਮਾਂ 'ਤੇ ਜਿੱਥੇ ਡਾਇਰੈਕਟਰੀਆਂ ਅਣਜਾਣੇ ਵਿੱਚ ਸਿਰਫ਼-ਪੜ੍ਹਨ ਲਈ ਡਿਫਾਲਟ ਹੁੰਦੀਆਂ ਹਨ, ਇਹ ਤੇਜ਼ ਵਿਵਸਥਾ ਅਨੁਮਤੀ ਸਮੱਸਿਆਵਾਂ ਨੂੰ ਕੁਸ਼ਲਤਾ ਨਾਲ ਹੱਲ ਕਰ ਸਕਦੀ ਹੈ। 🛠️
ਸ਼ੈੱਲ ਸਕ੍ਰਿਪਟ 'sudo chown -R 1000:1000 /srv/gitlab-runner' ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ `/srv/gitlab-runner` ਦੀ ਮਲਕੀਅਤ ਨੂੰ ਵੀ ਬਦਲਦੀ ਹੈ, ਜਿਸ ਨਾਲ ਡੌਕਰ ਨੂੰ ਡਾਇਰੈਕਟਰੀ ਤੱਕ ਲੋੜੀਂਦੀ ਪਹੁੰਚ ਮਿਲਦੀ ਹੈ। ਇਹ ਕਮਾਂਡ ਜ਼ਰੂਰੀ ਹੈ ਕਿਉਂਕਿ, ਸਹੀ ਮਲਕੀਅਤ ਤੋਂ ਬਿਨਾਂ, ਡੌਕਰ ਅਕਸਰ ਡਾਇਰੈਕਟਰੀਆਂ ਨੂੰ ਸਹੀ ਢੰਗ ਨਾਲ ਮਾਊਂਟ ਕਰਨ ਲਈ ਸੰਘਰਸ਼ ਕਰਦਾ ਹੈ। ਕਮਾਂਡ `ls -ld /srv/gitlab-runner` ਫਿਰ ਡਾਇਰੈਕਟਰੀ ਦੀਆਂ ਇਜਾਜ਼ਤਾਂ ਦੀ ਪੁਸ਼ਟੀ ਕਰਦੀ ਹੈ, ਜਿਸ ਨਾਲ ਅਸੀਂ ਪੁਸ਼ਟੀ ਕਰ ਸਕਦੇ ਹਾਂ ਕਿ ਡੌਕਰ ਉਸ ਸਥਾਨ 'ਤੇ ਪੜ੍ਹ ਅਤੇ ਲਿਖ ਸਕਦਾ ਹੈ। ਇਹ ਸਧਾਰਨ, ਸਿੱਧੀ ਪਹੁੰਚ ਲਾਭਦਾਇਕ ਹੈ ਜਦੋਂ ਤੁਰੰਤ ਵਿਵਸਥਾਵਾਂ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ, ਅਤੇ ਡੌਕਰ ਨੂੰ ਆਮ ਮਾਰਗਾਂ ਤੋਂ ਬਾਹਰ ਡਾਇਰੈਕਟਰੀਆਂ ਤੱਕ ਪਹੁੰਚ ਕਰਨੀ ਚਾਹੀਦੀ ਹੈ, ਜਿਵੇਂ `/srv`। ਇਹ ਪਹੁੰਚ, ਹਾਲਾਂਕਿ, ਉਤਪਾਦਨ ਵਾਤਾਵਰਣਾਂ ਵਿੱਚ ਸੰਭਾਲਣ ਯੋਗ ਨਹੀਂ ਹੋ ਸਕਦੀ, ਜਿੱਥੇ ਮਾਡਿਊਲਰ ਅਤੇ ਮੁੜ ਵਰਤੋਂ ਯੋਗ ਸੰਰਚਨਾਵਾਂ ਨੂੰ ਤਰਜੀਹ ਦਿੱਤੀ ਜਾਂਦੀ ਹੈ।
ਦੂਜਾ ਹੱਲ ਵਰਤ ਕੇ ਮਾਡਿਊਲਰਿਟੀ 'ਤੇ ਬਣਾਉਂਦਾ ਹੈ ਡੌਕਰ ਕੰਪੋਜ਼. ਇੱਕ `docker-compose.yml` ਫਾਈਲ ਦੇ ਅੰਦਰ ਵਾਲੀਅਮ ਅਤੇ ਅਨੁਮਤੀਆਂ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰਕੇ, ਅਸੀਂ ਇੱਕ ਮੁੜ ਵਰਤੋਂ ਯੋਗ ਸੰਰਚਨਾ ਬਣਾਉਂਦੇ ਹਾਂ। ਇਹ ਕੰਪੋਜ਼ ਫਾਈਲ ਕੰਟੇਨਰ ਦੇ ਅੰਦਰ `/srv/gitlab-runner/config` ਨੂੰ `/etc/gitlab-runner` ਨਾਲ ਨਕਸ਼ੇ ਕਰਦੀ ਹੈ ਅਤੇ ਕੰਟੇਨਰ ਨੂੰ ਵਿਸ਼ੇਸ਼ ਅਧਿਕਾਰ ਪ੍ਰਾਪਤ ਪਹੁੰਚ ਪ੍ਰਦਾਨ ਕਰਦੀ ਹੈ। ਉਦਾਹਰਨ ਲਈ, ਵਾਤਾਵਰਨ ਵਿੱਚ ਜਿੱਥੇ GitLab ਰਨਰ ਸੇਵਾਵਾਂ ਨੂੰ ਇਕਸਾਰ ਸ਼ੁਰੂਆਤੀ ਸੰਰਚਨਾਵਾਂ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ, ਡੌਕਰ ਕੰਪੋਜ਼ ਪੂਰੇ ਸੈੱਟਅੱਪ ਨੂੰ ਇੱਕ ਸੇਵਾ ਵਜੋਂ ਪ੍ਰਬੰਧਿਤ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ। ਇੱਕ ਵਾਰ 'docker-compose.yml' ਫਾਈਲ ਨੂੰ ਸੁਰੱਖਿਅਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, 'docker-compose up -d' ਕੰਟੇਨਰ ਲਿਆਉਂਦਾ ਹੈ। ਕੰਪੋਜ਼ ਵਿਧੀ ਲੰਬੇ ਸਮੇਂ ਦੀ ਸਾਂਭ-ਸੰਭਾਲ ਨੂੰ ਬਿਹਤਰ ਬਣਾਉਂਦੀ ਹੈ, ਖਾਸ ਤੌਰ 'ਤੇ ਜਦੋਂ ਵੱਖ-ਵੱਖ ਮਸ਼ੀਨਾਂ 'ਤੇ ਤੈਨਾਤ ਜਾਂ ਟੀਮ ਦੇ ਮੈਂਬਰਾਂ ਨਾਲ ਸੰਰਚਨਾਵਾਂ ਸਾਂਝੀਆਂ ਕੀਤੀਆਂ ਜਾਂਦੀਆਂ ਹਨ।
ਤੀਜਾ ਹੱਲ ਪਾਈਥਨ ਅਤੇ ਡੌਕਰ SDK ਦਾ ਲਾਭ ਲੈਂਦਾ ਹੈ, ਜੋ ਵਧੇਰੇ ਲਚਕਤਾ ਜੋੜਦਾ ਹੈ ਅਤੇ ਵਿਸਤ੍ਰਿਤ ਪ੍ਰੋਗਰਾਮੇਟਿਕ ਨਿਯੰਤਰਣ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ। ਇਹ ਪਹੁੰਚ ਪਹਿਲਾਂ ਜਾਂਚ ਕਰਦੀ ਹੈ ਕਿ ਕੀ `/srv` ਸਿਰਫ਼-ਪੜ੍ਹਨ ਲਈ ਹੈ, ਫਿਰ ਲੋੜ ਪੈਣ 'ਤੇ ਇਸਨੂੰ ਦੁਬਾਰਾ ਮਾਊਂਟ ਕਰਦਾ ਹੈ। `client.containers.run` ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ, ਸਕ੍ਰਿਪਟ ਫਿਰ ਇੱਕ GitLab ਰਨਰ ਕੰਟੇਨਰ ਨੂੰ ਖਾਸ ਵਾਲੀਅਮ ਮੈਪਿੰਗ ਅਤੇ ਰੀਸਟਾਰਟ ਨੀਤੀਆਂ ਦੇ ਨਾਲ ਚਲਾਉਂਦੀ ਹੈ, ਨਿਰੰਤਰ ਕਾਰਵਾਈ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਂਦੀ ਹੈ। ਇਹ ਹੱਲ ਖਾਸ ਤੌਰ 'ਤੇ ਗੁੰਝਲਦਾਰ ਪ੍ਰਣਾਲੀਆਂ ਵਿੱਚ ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਹੁੰਦਾ ਹੈ ਜਿੱਥੇ ਮੈਨੂਅਲ ਐਡਜਸਟਮੈਂਟਾਂ ਨਾਲੋਂ ਪ੍ਰੋਗਰਾਮੇਟਿਕ ਸੈੱਟਅੱਪ ਨੂੰ ਤਰਜੀਹ ਦਿੱਤੀ ਜਾਂਦੀ ਹੈ। ਇਹਨਾਂ ਡੌਕਰ ਕੌਂਫਿਗਰੇਸ਼ਨਾਂ ਨੂੰ ਸਵੈਚਲਿਤ ਕਰਕੇ, ਅਸੀਂ ਮਲਟੀ-ਯੂਜ਼ਰ ਵਾਤਾਵਰਣਾਂ ਵਿੱਚ ਡੌਕਰ ਦੇ ਵਿਵਹਾਰ ਉੱਤੇ ਗਲਤੀ ਸੰਭਾਲਣ ਅਤੇ ਨਿਯੰਤਰਣ ਪ੍ਰਾਪਤ ਕਰਦੇ ਹਾਂ। ਇਸ ਤੋਂ ਇਲਾਵਾ, ਇਸ ਪਹੁੰਚ ਨੂੰ ਵੱਡੇ ਆਟੋਮੇਸ਼ਨ ਪਾਈਪਲਾਈਨਾਂ ਵਿੱਚ ਜੋੜਿਆ ਜਾ ਸਕਦਾ ਹੈ, ਇਸ ਨੂੰ ਉਤਪਾਦਨ ਦੇ ਵਾਤਾਵਰਣ ਲਈ ਅਨਮੋਲ ਬਣਾਉਂਦਾ ਹੈ। 🚀
ਹੱਲ 1: ਸ਼ੈੱਲ ਕਮਾਂਡਾਂ ਨਾਲ ਡੌਕਰ ਵਾਲੀਅਮ ਅਨੁਮਤੀਆਂ ਨੂੰ ਅਡਜਸਟ ਕਰਨਾ
ਫਾਈਲ ਸਿਸਟਮ ਅਤੇ ਡੌਕਰ ਅਨੁਮਤੀ ਪ੍ਰਬੰਧਨ ਲਈ ਸ਼ੈੱਲ ਸਕ੍ਰਿਪਟਿੰਗ
# Step 1: Check if the /srv directory is mounted as read-only
mount | grep "/srv"
# If /srv is mounted as read-only, attempt remounting it as read-write
sudo mount -o remount,rw /srv
# Step 2: Change ownership of the target directory to avoid permission conflicts
sudo chown -R 1000:1000 /srv/gitlab-runner
# Step 3: Verify permissions (directory should now be writable by Docker)
ls -ld /srv/gitlab-runner
# Step 4: Run the Docker command again to see if the error persists
sudo docker run -d --privileged --name gitlab-runner --restart always \
-v /srv/gitlab-runner/config:/etc/gitlab-runner \
-v /var/run/docker.sock:/var/run/docker.sock \
gitlab/gitlab-runner:latest
ਹੱਲ 2: ਸੁਧਾਰੀ ਮਾਡਯੂਲਰਿਟੀ ਲਈ ਡੌਕਰ ਕੰਪੋਜ਼ ਨਾਲ ਡੌਕਰ ਨੂੰ ਕੌਂਫਿਗਰ ਕਰਨਾ
ਡੌਕਰ ਕੰਪੋਜ਼ ਕੌਂਫਿਗਰੇਸ਼ਨ ਫਾਈਲ ਵਾਲੀਅਮ ਅਨੁਮਤੀਆਂ ਅਤੇ ਕੰਟੇਨਰ ਤੈਨਾਤੀ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਨ ਲਈ
# Create a docker-compose.yml file to configure the GitLab Runner container
version: '3.8'
services:
gitlab-runner:
image: gitlab/gitlab-runner:latest
container_name: gitlab-runner
privileged: true
restart: always
volumes:
- /srv/gitlab-runner/config:/etc/gitlab-runner
- /var/run/docker.sock:/var/run/docker.sock
# Step 1: Run Docker Compose to start the GitLab Runner container
sudo docker-compose up -d
# Step 2: Verify if container is running with appropriate permissions
sudo docker-compose ps
ਹੱਲ 3: ਪਾਈਥਨ ਅਤੇ ਡੌਕਰ SDK ਨਾਲ ਰੀਮਾਉਂਟਿੰਗ ਅਤੇ ਪਰਮਿਸ਼ਨ ਹੈਂਡਲਿੰਗ
ਐਡਵਾਂਸ ਰੀਮਾਉਂਟ ਹੈਂਡਲਿੰਗ ਅਤੇ ਕੰਟੇਨਰ ਤੈਨਾਤੀ ਲਈ ਡੌਕਰ SDK ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਪਾਈਥਨ ਸਕ੍ਰਿਪਟ
import os
import docker
from subprocess import call
# Step 1: Check if /srv is mounted as read-only and attempt remount if necessary
mount_check = call(["mount", "|", "grep", "/srv"])
if 'ro' in mount_check:
call(["sudo", "mount", "-o", "remount,rw", "/srv"])
# Step 2: Change ownership of the directory to allow Docker access
os.system("sudo chown -R 1000:1000 /srv/gitlab-runner")
# Step 3: Set up Docker client and run GitLab Runner container
client = docker.from_env()
container = client.containers.run("gitlab/gitlab-runner:latest",
name="gitlab-runner",
detach=True,
privileged=True,
restart_policy={"Name": "always"},
volumes={'/srv/gitlab-runner/config': {'bind': '/etc/gitlab-runner', 'mode': 'rw'},
'/var/run/docker.sock': {'bind': '/var/run/docker.sock', 'mode': 'rw'}}
)
print("Container started with ID:", container.id)
# Step 4: Validate the status of the container
print(client.containers.get("gitlab-runner").status)
ਸਾਰੇ ਹੱਲਾਂ ਵਿੱਚ ਪ੍ਰਮਾਣਿਕਤਾ ਲਈ ਯੂਨਿਟ ਟੈਸਟ
ਰੀਮਾਉਂਟਿੰਗ ਅਤੇ ਡੌਕਰ ਕੰਟੇਨਰ ਅਨੁਮਤੀਆਂ ਦੀ ਜਾਂਚ ਕਰਨ ਲਈ ਪਾਈਥਨ ਯੂਨਿਟਸਟ ਫਰੇਮਵਰਕ
import unittest
import os
from subprocess import call
import docker
class TestDockerGitLabRunner(unittest.TestCase):
def test_mount_check(self):
mount_check = call(["mount", "|", "grep", "/srv"])
self.assertNotIn("ro", mount_check, "Directory is read-only")
def test_directory_permissions(self):
self.assertEqual(os.stat('/srv/gitlab-runner').st_uid, 1000, "Ownership mismatch")
def test_container_start(self):
client = docker.from_env()
container = client.containers.get("gitlab-runner")
self.assertEqual(container.status, "running", "Container failed to start")
if __name__ == "__main__":
unittest.main()
ਡੌਕਰ ਵਿੱਚ ਸਿਰਫ਼ ਰੀਡ-ਓਨਲੀ ਫਾਈਲਸਿਸਟਮ ਮੁੱਦਿਆਂ ਨੂੰ ਸਮਝਣਾ
ਡੌਕਰ ਨਾਲ ਕੰਮ ਕਰਨ ਦਾ ਇੱਕ ਘੱਟ-ਜਾਣਿਆ ਪਹਿਲੂ ਹੈ ਅੰਡਰਲਾਈੰਗ ਫਾਇਲ ਸਿਸਟਮ ਸੰਰਚਨਾ ਹੋਸਟ 'ਤੇ ਕੰਟੇਨਰ ਵਿਵਹਾਰ ਨੂੰ ਪ੍ਰਭਾਵਤ ਕਰ ਸਕਦਾ ਹੈ, ਖਾਸ ਕਰਕੇ ਜਦੋਂ ਵਾਲੀਅਮ ਮਾਊਂਟ ਕਰਦੇ ਹਨ। ਕੁਝ ਸਿਸਟਮਾਂ ਵਿੱਚ, ਜਿਵੇਂ ਕਿ ਡੇਬੀਅਨ ਜਾਂ ਉਬੰਟੂ ਕੋਰ ਦੇ ਕੁਝ ਸੰਸਕਰਣਾਂ ਵਿੱਚ, ਖਾਸ ਡਾਇਰੈਕਟਰੀਆਂ ਨੂੰ ਮੂਲ ਰੂਪ ਵਿੱਚ ਜਾਂ ਸਿਸਟਮ ਅੱਪਡੇਟ ਦੇ ਕਾਰਨ ਸਿਰਫ਼ ਪੜ੍ਹਨ ਲਈ ਸੈੱਟ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ, ਜਿਸ ਨਾਲ ਡੌਕਰ ਦੀ ਮਾਊਂਟਿੰਗ ਸਮਰੱਥਾ ਫੇਲ੍ਹ ਹੋ ਜਾਂਦੀ ਹੈ। ਇਹ ਅਕਸਰ ਉਦੋਂ ਹੁੰਦਾ ਹੈ ਜਦੋਂ ਤੁਸੀਂ GitLab ਰਨਰ ਲਈ `/srv` ਵਰਗੇ ਮਾਰਗਾਂ ਨੂੰ ਮਾਊਂਟ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰ ਰਹੇ ਹੁੰਦੇ ਹੋ, ਸਿਰਫ਼ "ਪੜ੍ਹਨ ਲਈ" ਤਰੁੱਟੀਆਂ ਦਾ ਸਾਹਮਣਾ ਕਰਨ ਲਈ। ਇਹਨਾਂ ਤੋਂ ਬਚਣ ਲਈ, ਸਿਰਫ਼-ਪੜ੍ਹਨ ਵਾਲੇ ਫਾਈਲਸਿਸਟਮ ਦੇ ਮੂਲ ਕਾਰਨਾਂ ਨੂੰ ਸਮਝਣਾ ਮਦਦਗਾਰ ਹੈ, ਖਾਸ ਤੌਰ 'ਤੇ ਸੁਰੱਖਿਅਤ ਜਾਂ ਅਟੱਲ ਸੈੱਟਅੱਪਾਂ 'ਤੇ, ਜੋ ਕਿ ਕੰਟੇਨਰ ਮਾਊਂਟ ਨੂੰ ਮਹੱਤਵਪੂਰਨ ਤੌਰ 'ਤੇ ਪ੍ਰਭਾਵਿਤ ਕਰ ਸਕਦੇ ਹਨ।
ਇਹਨਾਂ ਮੁੱਦਿਆਂ ਨੂੰ ਹੱਲ ਕਰਨ ਲਈ, ਉਪਭੋਗਤਾ ਅਕਸਰ ਆਮ ਫਿਕਸ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦੇ ਹਨ ਜਿਵੇਂ ਕਿ `chown` ਨਾਲ ਅਨੁਮਤੀਆਂ ਨੂੰ ਬਦਲਣਾ ਜਾਂ `mount -o remount,rw/srv` ਨਾਲ ਡਾਇਰੈਕਟਰੀਆਂ ਨੂੰ ਮੁੜ ਮਾਊਂਟ ਕਰਨਾ। ਹਾਲਾਂਕਿ, ਇਹ ਪਹੁੰਚ ਕੰਮ ਨਹੀਂ ਕਰ ਸਕਦੇ ਜੇਕਰ ਰੂਟ ਫਾਈਲ ਸਿਸਟਮ ਵਿੱਚ ਖੁਦ ਪਾਬੰਦੀਆਂ ਹਨ ਜਾਂ ਜੇਕਰ ਡੌਕਰ ਦਾ ਸਟੋਰੇਜ ਡਰਾਈਵਰ (ਜਿਵੇਂ ਕਿ ਓਵਰਲੇ 2) ਖਾਸ ਹੋਸਟ ਸੰਰਚਨਾਵਾਂ ਨਾਲ ਅਸੰਗਤ ਹੈ। ਅਜਿਹੇ ਮਾਮਲਿਆਂ ਵਿੱਚ, ਸਮਰਪਿਤ ਡੌਕਰ ਕੰਪੋਜ਼ ਕੌਂਫਿਗਰੇਸ਼ਨਾਂ ਦੀ ਵਰਤੋਂ ਕਰਨਾ ਜਾਂ ਡੌਕਰ ਦੀ ਰੂਟ ਡਾਇਰੈਕਟਰੀ (`ਡੌਕਰ ਰੂਟ ਡਾਇਰ`) ਨੂੰ ਮੁੜ ਸੰਰਚਿਤ ਕਰਨਾ ਕਈ ਵਾਰ ਮਾਉਂਟ ਨੂੰ ਵਧੇਰੇ ਲਚਕਦਾਰ ਡਾਇਰੈਕਟਰੀਆਂ ਵੱਲ ਨਿਰਦੇਸ਼ਤ ਕਰਕੇ ਇੱਕ ਹੱਲ ਪ੍ਰਦਾਨ ਕਰ ਸਕਦਾ ਹੈ। ਇਸ ਤੋਂ ਇਲਾਵਾ, ਕੁਬਰਨੇਟਸ ਵਰਗੇ ਕੰਟੇਨਰ ਆਰਕੈਸਟ੍ਰੇਸ਼ਨ ਟੂਲਸ ਦੀ ਵਰਤੋਂ ਲਗਾਤਾਰ ਸਟੋਰੇਜ ਲਈ ਵਧੇਰੇ ਸੰਰਚਨਾਯੋਗ ਵਿਕਲਪ ਪੇਸ਼ ਕਰ ਸਕਦੀ ਹੈ।
ਡਿਵੈਲਪਰਾਂ ਲਈ ਜੋ ਅਕਸਰ ਪ੍ਰਤੀਬੰਧਿਤ ਫਾਈਲ ਸਿਸਟਮਾਂ 'ਤੇ ਡੌਕਰ ਵਿੱਚ ਕੰਮ ਕਰਦੇ ਹਨ, ਇਹਨਾਂ ਸੰਰਚਨਾਵਾਂ ਨੂੰ ਸਮਝਣਾ ਮਹੱਤਵਪੂਰਨ ਸਮੱਸਿਆ ਨਿਪਟਾਰਾ ਸਮਾਂ ਬਚਾਉਂਦਾ ਹੈ। ਕੁਝ ਪਹੁੰਚਾਂ ਵਿੱਚ ਸਿਸਟਮ ਫਾਈਲਾਂ ਦਾ ਸੰਪਾਦਨ ਵੀ ਸ਼ਾਮਲ ਹੁੰਦਾ ਹੈ (ਜਿਵੇਂ ਕਿ `/etc/fstab`), ਰੀਬੂਟ ਹੋਣ 'ਤੇ ਵਧੇਰੇ ਸਥਾਈ ਰੀਡ-ਰਾਈਟ ਸੰਰਚਨਾ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ। ਇਹਨਾਂ ਤਰੀਕਿਆਂ ਦੀ ਪੜਚੋਲ ਕਰਕੇ, ਡੌਕਰ ਉਪਭੋਗਤਾ ਸੀਮਤ ਫਾਈਲਸਿਸਟਮ 'ਤੇ ਕੰਟੇਨਰਾਈਜ਼ਡ ਵਰਕਫਲੋ ਨੂੰ ਬਿਹਤਰ ਢੰਗ ਨਾਲ ਸੰਭਾਲ ਸਕਦੇ ਹਨ, ਨਿਰਵਿਘਨ ਤੈਨਾਤੀਆਂ ਅਤੇ ਘੱਟ ਅਨੁਮਤੀਆਂ-ਅਧਾਰਿਤ ਸਿਰ ਦਰਦ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਂਦੇ ਹਨ! 🔧
ਡੌਕਰ ਵਾਲੀਅਮ ਮਾਊਂਟ ਗਲਤੀਆਂ ਬਾਰੇ ਅਕਸਰ ਪੁੱਛੇ ਜਾਂਦੇ ਸਵਾਲ
- ਡੌਕਰ ਵਾਲੀਅਮ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਸਮੇਂ ਸਿਰਫ-ਪੜ੍ਹਨ ਲਈ ਫਾਈਲ ਸਿਸਟਮ ਗਲਤੀ ਕਿਉਂ ਸੁੱਟਦਾ ਹੈ?
- ਇਹ ਗਲਤੀ ਆਮ ਤੌਰ 'ਤੇ ਉਦੋਂ ਵਾਪਰਦੀ ਹੈ ਜਦੋਂ ਹੋਸਟ ਡਾਇਰੈਕਟਰੀ ਜਿਸ ਨੂੰ ਤੁਸੀਂ ਮਾਊਂਟ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰ ਰਹੇ ਹੋ, ਸਿਰਫ਼-ਪੜ੍ਹਨ ਲਈ ਸੈੱਟ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸਦੀ ਜਾਂਚ ਕਰਨ ਲਈ, ਕਮਾਂਡ ਦੀ ਵਰਤੋਂ ਕਰੋ mount | grep "/srv" ਇਹ ਪੁਸ਼ਟੀ ਕਰਨ ਲਈ ਕਿ ਕੀ ਇਹ ਸਿਰਫ਼-ਪੜ੍ਹਨ ਲਈ ਮਾਊਂਟ ਹੈ।
- ਕੀ ਮੈਂ chown ਨਾਲ ਅਨੁਮਤੀਆਂ ਨੂੰ ਬਦਲ ਕੇ ਇਸ ਗਲਤੀ ਨੂੰ ਹੱਲ ਕਰ ਸਕਦਾ ਹਾਂ?
- ਕਈ ਵਾਰ. ਨਾਲ ਮਲਕੀਅਤ ਬਦਲ ਰਿਹਾ ਹੈ sudo chown -R 1000:1000 /srv/gitlab-runner ਮਦਦ ਕਰ ਸਕਦਾ ਹੈ ਜੇਕਰ ਇਹ ਇੱਕ ਸਧਾਰਨ ਅਨੁਮਤੀਆਂ ਦਾ ਮੁੱਦਾ ਹੈ। ਪਰ ਜੇਕਰ ਡਾਇਰੈਕਟਰੀ ਨੂੰ ਸਿਰਫ਼-ਪੜ੍ਹਨ ਲਈ ਫਾਇਲ-ਸਿਸਟਮ ਪੱਧਰ 'ਤੇ ਮਾਊਂਟ ਕੀਤਾ ਗਿਆ ਹੈ, ਤਾਂ ਹੋਰ ਸੰਰਚਨਾ ਦੀ ਲੋੜ ਹੈ।
- ਰੀਡ-ਰਾਈਟ ਦੇ ਤੌਰ 'ਤੇ ਮੁੜ ਮਾਊਂਟ ਕਰਨ ਦਾ ਕੀ ਮਤਲਬ ਹੈ?
- ਨਾਲ ਰੀਮਾਉਂਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ sudo mount -o remount,rw /srv ਡਾਇਰੈਕਟਰੀ ਨੂੰ ਲਿਖਣਯੋਗ ਬਣਾਉਂਦਾ ਹੈ। ਇਹ ਲਾਭਦਾਇਕ ਹੈ ਜੇਕਰ ਡਾਇਰੈਕਟਰੀ ਗਲਤੀ ਨਾਲ ਸਿਰਫ਼-ਪੜ੍ਹਨ ਲਈ ਮਾਊਂਟ ਕੀਤੀ ਗਈ ਸੀ, ਪਰ ਇਹ ਰੀਬੂਟ ਦੌਰਾਨ ਜਾਰੀ ਨਹੀਂ ਰਹਿ ਸਕਦੀ ਹੈ।
- ਅਧਿਕਾਰਾਂ ਦੇ ਪ੍ਰਬੰਧਨ ਲਈ ਡੌਕਰ ਕੰਪੋਜ਼ ਦੀ ਸਿਫਾਰਸ਼ ਕਿਉਂ ਕੀਤੀ ਜਾਂਦੀ ਹੈ?
- ਡੌਕਰ ਕੰਪੋਜ਼ ਤੁਹਾਨੂੰ ਵਾਲੀਅਮ ਅਤੇ ਅਨੁਮਤੀਆਂ ਨੂੰ ਮੁੜ ਵਰਤੋਂ ਯੋਗ ਫਾਰਮੈਟ ਵਿੱਚ ਕੌਂਫਿਗਰ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ। ਤੁਸੀਂ ਵਿਸ਼ੇਸ਼ ਅਧਿਕਾਰ ਪ੍ਰਾਪਤ ਪਹੁੰਚ ਵਰਗੀਆਂ ਸੈਟਿੰਗਾਂ ਨੂੰ ਨਿਸ਼ਚਿਤ ਕਰ ਸਕਦੇ ਹੋ, ਜੋ ਕਿ GitLab ਰਨਰ ਵਰਗੀਆਂ ਸੇਵਾਵਾਂ ਲਈ ਲਾਭਦਾਇਕ ਹੈ ਜਿਨ੍ਹਾਂ ਨੂੰ ਉੱਚਿਤ ਅਨੁਮਤੀਆਂ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ।
- ਕੀ ਸਿਰਫ਼-ਪੜ੍ਹਨ ਵਾਲੀਆਂ ਗਲਤੀਆਂ ਨੂੰ ਰੋਕਣ ਲਈ ਲਗਾਤਾਰ ਹੱਲ ਹਨ?
- ਹਾਂ। ਸੰਪਾਦਨ /etc/fstab ਡਾਇਰੈਕਟਰੀਆਂ ਨੂੰ ਬੂਟ 'ਤੇ ਪੱਕੇ ਤੌਰ 'ਤੇ ਲਿਖਣਯੋਗ ਬਣਾਉਣਾ ਇੱਕ ਆਮ ਪਹੁੰਚ ਹੈ, ਹਾਲਾਂਕਿ ਇਸ ਲਈ ਪ੍ਰਬੰਧਕ ਪਹੁੰਚ ਅਤੇ ਧਿਆਨ ਨਾਲ ਸੰਰਚਨਾ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ।
- ਕੀ ਖਾਸ ਡੌਕਰ ਸੰਸਕਰਣ ਮਾਊਂਟਿੰਗ ਅਨੁਮਤੀਆਂ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰ ਸਕਦੇ ਹਨ?
- ਹਾਂ, ਖਾਸ ਤੌਰ 'ਤੇ ਜੇ ਤੁਸੀਂ ਸਟੋਰੇਜ ਡ੍ਰਾਈਵਰਾਂ ਦੀ ਵਰਤੋਂ ਕਰ ਰਹੇ ਹੋ ਜਿਵੇਂ ਓਵਰਲੇ 2. ਡੌਕਰ ਦੇ ਸੰਸਕਰਣ ਅਤੇ ਸਟੋਰੇਜ ਡਰਾਈਵਰਾਂ ਵਿਚਕਾਰ ਅਨੁਕੂਲਤਾ ਮੁੱਦੇ ਮਾਊਂਟਿੰਗ ਵਿਵਹਾਰ ਨੂੰ ਪ੍ਰਭਾਵਤ ਕਰ ਸਕਦੇ ਹਨ।
- ਡੌਕਰ ਰੂਟ ਡਾਇਰ ਕੀ ਹੈ ਅਤੇ ਇਹ ਕਿਵੇਂ ਮਦਦ ਕਰਦਾ ਹੈ?
- ਡੌਕਰ ਰੂਟ ਡਾਇਰ, ਵਿੱਚ ਦਿਖਾਇਆ ਗਿਆ ਹੈ docker info, ਉਹ ਥਾਂ ਹੈ ਜਿੱਥੇ ਡੌਕਰ ਕੰਟੇਨਰ ਡਾਟਾ ਸਟੋਰ ਕਰਦਾ ਹੈ। ਇਸਨੂੰ ਲਿਖਣਯੋਗ ਮਾਰਗ ਵਿੱਚ ਬਦਲਣ ਨਾਲ ਕਈ ਵਾਰ ਮਾਊਂਟਿੰਗ ਗਲਤੀਆਂ ਤੋਂ ਬਚਿਆ ਜਾ ਸਕਦਾ ਹੈ।
- ਕੀ ਪ੍ਰੋਗਰਾਮੇਟਿਕ ਤੌਰ 'ਤੇ ਜਾਂਚ ਕਰਨ ਦਾ ਕੋਈ ਤਰੀਕਾ ਹੈ ਕਿ ਕੀ ਕੋਈ ਡਾਇਰੈਕਟਰੀ ਲਿਖਣਯੋਗ ਹੈ?
- ਹਾਂ, ਪਾਈਥਨ ਜਾਂ ਬੈਸ਼ ਸਕ੍ਰਿਪਟਾਂ ਦੀ ਵਰਤੋਂ ਇਹ ਜਾਂਚ ਕਰਨ ਲਈ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ ਕਿ ਕੀ ਕੋਈ ਡਾਇਰੈਕਟਰੀ ਲਿਖਣਯੋਗ ਹੈ, ਜਿਸ ਨਾਲ ਤੁਸੀਂ ਡੌਕਰ ਕਮਾਂਡਾਂ ਨੂੰ ਚਲਾਉਣ ਤੋਂ ਪਹਿਲਾਂ ਅਨੁਮਤੀਆਂ ਦੀ ਜਾਂਚ ਨੂੰ ਆਟੋਮੈਟਿਕ ਕਰ ਸਕਦੇ ਹੋ।
- ਕੀ ਸਾਰੇ ਡੌਕਰ ਕੰਟੇਨਰਾਂ ਨੂੰ ਮਾਊਂਟਿੰਗ ਲਈ ਵਿਸ਼ੇਸ਼ ਅਧਿਕਾਰ ਪ੍ਰਾਪਤ ਪਹੁੰਚ ਦੀ ਲੋੜ ਹੈ?
- ਨਹੀਂ, ਪਰ GitLab Runner ਵਰਗੀਆਂ ਸੇਵਾਵਾਂ ਨੂੰ ਕੁਝ ਓਪਰੇਸ਼ਨਾਂ ਲਈ ਇਸਦੀ ਲੋੜ ਹੋ ਸਕਦੀ ਹੈ। ਜੋੜ ਰਿਹਾ ਹੈ --privileged ਤੁਹਾਡੀ ਡੌਕਰ ਕਮਾਂਡ ਵਿੱਚ ਕੰਟੇਨਰ ਨੂੰ ਹੋਸਟ ਤੱਕ ਪੂਰੀ ਪਹੁੰਚ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ।
- ਕੀ ਮੈਂ ਇਹਨਾਂ ਹੱਲਾਂ ਨੂੰ ਉਤਪਾਦਨ 'ਤੇ ਤੈਨਾਤ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਸਥਾਨਕ ਤੌਰ 'ਤੇ ਟੈਸਟ ਕਰ ਸਕਦਾ ਹਾਂ?
- ਹਾਂ! ਡੌਕਰ ਇਹਨਾਂ ਸੰਰਚਨਾਵਾਂ ਦੀ ਆਸਾਨ ਜਾਂਚ ਲਈ ਸਹਾਇਕ ਹੈ। ਤੁਸੀਂ ਸੰਸ਼ੋਧਿਤ ਅਨੁਮਤੀਆਂ ਦੇ ਨਾਲ ਟੈਸਟ ਕੰਟੇਨਰ ਸੈਟ ਅਪ ਕਰ ਸਕਦੇ ਹੋ ਜਾਂ ਉਤਪਾਦਨ ਵਾਤਾਵਰਣਾਂ ਦੀ ਨਕਲ ਕਰਨ ਲਈ ਸਥਾਨਕ ਡੌਕਰ ਕੰਪੋਜ਼ ਫਾਈਲਾਂ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹੋ।
ਡੌਕਰ ਮਾਊਂਟ ਪਰਮਿਸ਼ਨ ਗਲਤੀਆਂ ਨੂੰ ਹੱਲ ਕਰਨਾ
ਡੌਕਰ ਮਾਊਂਟ ਗਲਤੀਆਂ, ਖਾਸ ਤੌਰ 'ਤੇ ਸਿਰਫ-ਪੜ੍ਹਨ ਵਾਲੇ ਫਾਈਲ ਸਿਸਟਮਾਂ ਨਾਲ, ਨਿਰਾਸ਼ਾਜਨਕ ਹੋ ਸਕਦੀਆਂ ਹਨ, ਪਰ ਉਹ ਸਹੀ ਪਹੁੰਚ ਨਾਲ ਪ੍ਰਬੰਧਨਯੋਗ ਹਨ. ਮੂਲ ਕਾਰਨਾਂ ਨੂੰ ਸਮਝ ਕੇ — ਜਿਵੇਂ ਕਿ ਸਿਸਟਮ ਕੌਂਫਿਗਰੇਸ਼ਨਾਂ ਜਾਂ ਡੌਕਰਜ਼ ਸਟੋਰੇਜ ਡਰਾਈਵਰ — ਤੁਸੀਂ ਇਹਨਾਂ ਮੁੱਦਿਆਂ ਨੂੰ ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਢੰਗ ਨਾਲ ਹੱਲ ਕਰ ਸਕਦੇ ਹੋ। ਅਨੁਮਤੀਆਂ ਨੂੰ ਸੈੱਟ ਕਰਨਾ, ਮਾਊਂਟ ਵਿਕਲਪਾਂ ਦੀ ਪੁਸ਼ਟੀ ਕਰਨਾ, ਅਤੇ ਡੌਕਰ ਕੰਪੋਜ਼ ਦੀ ਵਰਤੋਂ ਕਰਨਾ ਮੁੱਖ ਰਣਨੀਤੀਆਂ ਹਨ।
ਭਵਿੱਖ ਵਿੱਚ ਇਸ ਸਮੱਸਿਆ ਤੋਂ ਬਚਣ ਲਈ, ਸਵੈਚਲਿਤ ਜਾਂਚਾਂ ਨੂੰ ਸਥਾਪਤ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ ਜਾਂ ਡੌਕਰ ਲਈ ਕੌਂਫਿਗਰ ਕੀਤੇ ਸਮਰਪਿਤ ਮਾਊਂਟ ਮਾਰਗਾਂ ਦੀ ਵਰਤੋਂ ਕਰੋ। ਇਹ ਪਾਬੰਦੀਸ਼ੁਦਾ ਪ੍ਰਣਾਲੀਆਂ ਵਿੱਚ ਡੌਕਰ ਨਾਲ ਨਿਰਵਿਘਨ ਪਰਸਪਰ ਪ੍ਰਭਾਵ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ, ਤੈਨਾਤੀ ਮੁੱਦਿਆਂ ਨੂੰ ਘਟਾਉਂਦਾ ਹੈ। ਇਹਨਾਂ ਅਨੁਮਤੀਆਂ ਨੂੰ ਸਰਗਰਮੀ ਨਾਲ ਨਜਿੱਠਣਾ GitLab ਰਨਰ ਅਤੇ ਸਮਾਨ ਸੇਵਾਵਾਂ ਨੂੰ ਬਿਨਾਂ ਕਿਸੇ ਰੁਕਾਵਟ ਦੇ ਚੱਲਣ ਦਿੰਦਾ ਹੈ। 🚀
ਹਵਾਲੇ ਅਤੇ ਹੋਰ ਪੜ੍ਹਨਾ
- ਡੌਕਰ ਵਾਲੀਅਮ ਅਨੁਮਤੀਆਂ ਅਤੇ ਸਮੱਸਿਆ ਨਿਪਟਾਰਾ ਦੀ ਡੂੰਘਾਈ ਨਾਲ ਖੋਜ, ਕੰਟੇਨਰ ਡਾਇਰੈਕਟਰੀਆਂ ਵਿੱਚ ਸਿਰਫ਼-ਪੜ੍ਹਨ ਲਈ ਤਰੁੱਟੀਆਂ ਨੂੰ ਸੰਭਾਲਣ ਲਈ ਵਿਹਾਰਕ ਹੱਲਾਂ ਦੇ ਨਾਲ। ਹੋਰ ਲਈ, 'ਤੇ ਜਾਓ ਡੌਕਰ ਦਸਤਾਵੇਜ਼ੀ .
- ਅਧਿਕਾਰਤ ਗਿੱਟਲੈਬ ਰਨਰ ਡੌਕਰ ਚਿੱਤਰ ਦਸਤਾਵੇਜ਼ ਕੰਟੇਨਰਾਈਜ਼ਡ ਵਾਤਾਵਰਣਾਂ ਵਿੱਚ ਗਿੱਟਲੈਬ ਰਨਰ ਦੀ ਸੰਰਚਨਾ ਅਤੇ ਵਰਤੋਂ ਦਾ ਵੇਰਵਾ ਦਿੰਦਾ ਹੈ। ਦੇਖੋ ਡੌਕਰ 'ਤੇ ਗਿੱਟਲੈਬ ਰਨਰ .
- ਲੀਨਕਸ ਫਾਈਲਸਿਸਟਮ ਅਨੁਮਤੀਆਂ ਅਤੇ ਮਾਊਂਟਿੰਗ ਵਿਕਲਪਾਂ 'ਤੇ ਵਿਆਪਕ ਗਾਈਡ, ਸਿਰਫ-ਪੜ੍ਹਨ ਲਈ ਮੁੱਦਿਆਂ ਅਤੇ ਰੀਮਾਉਂਟ ਕਮਾਂਡਾਂ ਦੀ ਸੂਝ ਪ੍ਰਦਾਨ ਕਰਦੀ ਹੈ। 'ਤੇ ਉਪਲਬਧ ਹੈ LinuxConfig .
- ਉਬੰਟੂ ਕੋਰ ਸਿਸਟਮ ਆਰਕੀਟੈਕਚਰ ਦੀ ਸੰਖੇਪ ਜਾਣਕਾਰੀ ਅਤੇ ਸਨੈਪ ਪੈਕੇਜਾਂ ਦੇ ਨਾਲ ਖਾਸ ਰੁਕਾਵਟਾਂ, ਸੰਭਾਵੀ ਰੀਡ-ਓਨਲੀ ਸਿਸਟਮ ਮਾਊਂਟਸ ਦੀ ਵਿਆਖਿਆ ਕਰਦੇ ਹੋਏ। 'ਤੇ ਪੂਰਾ ਲੇਖ ਚੈੱਕ ਕਰੋ ਉਬੰਟੂ ਕੋਰ ਡੌਕੂਮੈਂਟੇਸ਼ਨ .