Saya melihat bahwa selama pembuatan buruh pelabuhan dari gambar buruh pelabuhan saya, paket jar yang diunduh tidak dapat digunakan oleh PENGGUNA yang ditentukan karena ini memiliki hak milik root
Yang aneh adalah saya meletakkan USER sebelum mengunduh semua file jars, jadi saya pikir perintah ini dilakukan sebagai USER 65534 daripada root.

    FROM myimage:1.0
    
    USER 65534
    
    ADD [ \
    "https://repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.1/scala-library-2.13.1.jar", \
    "https://repo1.maven.org/maven2/com/typesafe/akka/akka-actor_2.13/2.6.5/akka-actor_2.13-2.6.5.jar", \
    "https://repo1.maven.org/maven2/com/typesafe/akka/akka-osgi_2.13/2.6.5/akka-osgi_2.13-2.6.5.jar", \
    "https://repo1.maven.org/maven2/com/typesafe/akka/akka-slf4j_2.13/2.6.5/akka-slf4j_2.13-2.6.5.jar", \
    "https://repo1.maven.org/maven2/com/typesafe/akka/akka-stream_2.13/2.6.5/akka-stream_2.13-2.6.5.jar",  \"
/tmp/myfolder/lib/" ]

Kemudian melihat ke dalam wadah saya dapat melihat bahwa paket-paket ini adalah root dan tidak dapat digunakan dari USER yang ditentukan.

 ls -alt 
-rw------- 1 root root 2433561 Apr 30 09:09 akka-remote_2.13-2.6.5.jar
-rw------- 1 root root 4665057 Apr 30 09:06 akka-stream_2.13-2.6.5.jar
-rw------- 1 root root   17078 Apr 30 09:05 akka-slf4j_2.13-2.6.5.jar
-rw------- 1 root root   25253 Apr 30 09:04 akka-osgi_2.13-2.6.5.jar
-rw------- 1 root root 3598880 Apr 30 09:02 akka-actor_2.13-2.6.5.jar

Apa yang bisa menjadi masalah?

0
Prisco 6 Juli 2020, 17:15

1 menjawab

Jawaban Terbaik

USER tidak memengaruhi ADD atau COPY, jadi Docker menambahkan flag chown ke perintah ini. Anda memiliki info lebih lanjut di sini https://docs.docker.com/engine/reference/ pembangun/#tambahkan.

Jadi Anda dapat melakukan sesuatu seperti ini untuk mengubah kepemilikan selama ADD atau COPY.

ADD [--chown=<user>:<group>] <src>... <dest>
ADD [--chown=<user>:<group>] ["<src>",... "<dest>"]

Juga dari dokumen USER https://docs.docker.com/engine/reference /builder/#user:

Instruksi USER menetapkan nama pengguna (atau UID) dan secara opsional grup pengguna (atau GID) untuk digunakan saat menjalankan gambar dan untuk instruksi RUN, CMD, dan ENTRYPOINT apa pun yang mengikutinya di Dockerfile.

Jadi USER terbatas pada instruksi RUN, CMD dan ENTRYPOINT.

0
takacsmark 6 Juli 2020, 14:30