Jika Anda perlu menyalin file dari host Docker ke wadah Docker Anda, tutorial ini cocok untuk Anda.
Dalam tutorial ini, Anda akan belajar menyalin file dari host Docker ke container Docker menggunakan berbagai pendekatan.
Mari kita lakukan!
Prasyarat
Jika Anda ingin mengikuti langkah demi langkah, pastikan Anda memiliki hal berikut:
- Sebuah host Linux. Tutorial ini menggunakan Ubuntu 18.04.5 LTS.
- Docker diinstal pada host Linux. Tutorial ini menggunakan Docker v19.03.11. Anda dapat mengonfirmasi versi Docker Anda dengan menjalankan
docker version
.
- Gambar Docker apa pun yang diunduh dan tersedia. Tutorial ini menggunakan image NGINX Docker terbaru yang tersedia di Docker Hub.
Menyalin File dengan docker cp
Perintah
Untuk memulai tutorial ini, Anda akan belajar menyalin file dari host Docker ke container menggunakan docker cp
memerintah. docker cp
perintah menyalin file atau folder antara wadah dan sistem file lokal dari host Docker Anda dan sebaliknya.
Mari pelajari cara menggunakan perintah cp Docker dengan sebuah contoh.
1. Buka terminal di komputer lokal Anda.
2. Buat file bernama myfile.txt menggunakan touch
memerintah. file saya.txt akan disalin dari host buruh pelabuhan ke wadah.
touch myfile.txt
3. Jalankan docker run
memerintah. Docker run di bawah ini akan membuat wadah baru di latar belakang. Perintah di bawah ini berisi tiga parameter yang dijelaskan di bawah ini:
d
bendera yang menjalankan penampung di latar belakang dan membuatnya tetap hidup hingga dihapus.p
flag memublikasikan port penampung80
ke host pada port80
.nginx
akan menjadi gambar yang akan digunakan untuk menjalankan container.
sudo docker run -d -p 80:80 nginx
4. Verifikasi apakah wadah Docker berhasil dibuat menggunakan docker ps
memerintah. Setelah Anda menjalankan docker ps
perintah, Anda akan melihat nilai baru yang dihasilkan di bawah atribut CONTAINER ID (Dalam kasus di bawah ini ccae4670f030
) menggunakan gambar NGINX yang mengonfirmasi penampung berhasil dibuat.
sudo docker ps
Sebelum Anda menjalankan perintah Docker cp, Sintaks dari perintah Docker cp adalah:
CONTAINER: SRC_PATH
menentukan jalur sumber penampung.DEST_PATH
adalah jalur tujuan pada host.CONTAINER: DEST_PATH
adalah jalur tujuan pada wadah.
Selain itu, Anda juga dapat menambahkan options
dengan parameter di bawah ini dengan perintah sebagai berikut:
- Menggunakan arsip atau a – Menyalin semua izin pengguna dan grup utama dari file dan folder.
- Menggunakan L – Menentukan opsi L akan memungkinkan tautan simbolis apa pun di Jalur Sumber disalin ke jalur tujuan.
# Syntax to Copy from Container to Docker Host
docker cp {options} CONTAINER:SRC_PATH DEST_PATH
# Syntax to Copy from Docker Host to Container
docker cp {options} SRC_PATH CONTAINER:DEST_PATH
5. Selanjutnya, jalankan docker cp
memerintah. docker cp
perintah akan menyalin myfile.txt yang Anda buat sebelumnya ke wadah /usr/share direktori. ccae4670f030
adalah ID penampung tempat myfile.txt akan disalin.
sudo docker cp myfile.txt ccae4670f030:/usr/share
6. Terakhir, SSH ke dalam container yang sedang berjalan dengan menjalankan docker exec
perintah dengan /bin/bash
, yang digunakan sebagai shell default untuk login pengguna sistem Linux.
i
tanda yang menunjukkan Anda ingin membuka sesi SSH interaktif ke penampung.i
flag tidak menutup sesi SSH meskipun container tidak dilampirkan.t
flag mengalokasikan pseudo-TTY yang banyak digunakan untuk menjalankan perintah secara interaktif.sudo docker exec -it ccae4670f030 /bin/bash
sudo docker exec -it ccae4670f030 /bin/bash
Anda akan melihat di bawah bahwa Anda sekarang terhubung ke shell container saat Anda menjalankan docker exec
.
7. Setelah log in ke container, verifikasi apakah myfile.txt telah disalin ke wadah menggunakan perintah ls.
ls
adalah perintah untuk membuat daftar file komputer dalam sistem operasi mirip Unix dan Unix.grep
akan mencari semua file atau folder, dimulai dengan stringmy
di dalam usr/share direktori.
Menyalin File menggunakan DockerFile
Di bagian sebelumnya, Anda telah mempelajari cara menyalin file ke dalam wadah dengan menjalankan perintah cp Docker. Bagaimana jika Anda perlu menyalin banyak file sekaligus? Tentu saja, menjalankan banyak perintah menjadi overhead! Untuk mengatasi menjalankan beberapa perintah cp, mengapa tidak mencoba menyalin file atau folder ke dalam wadah menggunakan Dockerfile dengan COPY
perintah?
Menyebarkan wadah dan menyalin file/folder menggunakan Dockerfile memungkinkan Anda untuk menghapus langkah-langkah penyalinan manual yang Anda lakukan di bagian sebelumnya. Dockerfile adalah dokumen teks yang berisi semua perintah yang dapat dipanggil pengguna pada baris perintah untuk merakit sebuah gambar.
Mari buat Dockerfile, jalankan container darinya, dan terakhir salin file.
1. Buat folder bernama ~/host-to-container-copy-demo, lalu ubah (cd
) direktori kerja ke folder itu. Folder ini akan berisi semua file yang akan Anda buat dalam demo ini.
mkdir ~/host-to-container-copy-demo
cd ~/host-to-container-copy-demo
2. Sekarang, buat dua file teks bernama myfile1.tx t dan file2.txt saya , salin dan tempel ke dalam file, dan simpan ke ~/host-to-container-copy-demo direktori.
# myfile1.txt
Hello This is my first file !
This is file will be copied in /usr/share directory from Docker host to Docker Container.
# myfile2.txt
Hello This is my second file !
This is file will be copied in /tmp directory from Docker host to Docker Container.
3. Buat file lain, salin/tempel konfigurasi di bawah ini, dan simpan file sebagai Dockerfile di dalam ~/host-to-container-copy-demo direktori. Setelah selesai, Docker akan menggunakan DockerFile ini untuk menjalankan semua perintah yang diperlukan untuk membangun image Docker baru di atas image dasar apa pun.
DockerFile di bawah ini berisi berbagai langkah/petunjuk yang akan membangun wadah baru:
FROM
– Instruksi FROM menginisialisasi tahap build baru dan menyetel Gambar Dasar untuk instruksi selanjutnya.COPY
– Perintah COPY menyalin file dari mesin host (host Docker) ke wadah.
# Instruction for Dockerfile to create a new image on top of the base image (ubuntu)
# Using the base image ubuntu: latest
FROM ubuntu:latest
# Copying myfile1.txt to the containers /usr/share directory
COPY myfile1.txt /usr/share
# Copying myfile2.txt to the containers /tmp directory
COPY myfile2.txt /tmp
4. Verifikasi semua file yang diperlukan untuk membuat gambar baru dengan menjalankan tree
memerintah. Anda akan melihat Dockerfile, myfile1.txt, dan myfile2.txt di bawah ~/host-to-container-copy-demo direktori.
5. Selanjutnya, build image dengan menjalankan docker build
memerintah. t
flag digunakan untuk menandai gambar updated_ubuntu_image
dengan latest
dan.
memungkinkan buruh pelabuhan untuk memilih semua file yang diperlukan dari direktori kerja saat ini.
sudo docker build -t updated_ubuntu_image:latest .
6. Sekarang, verifikasi gambar yang baru dibuat updated_ubuntu_image
dengan menjalankan docker images
memerintah. Perhatikan REPOSITORY atribut. Atribut ini adalah tag yang dibuat dengan -t
bendera pada langkah sebelumnya.
sudo docker images
7. Terakhir, jalankan container docker menggunakan image yang baru dibuat dengan menjalankan docker run
memerintah. -it
flag menginstruksikan Docker untuk mengalokasikan terminal semu yang terhubung ke stdin container. bash
menyediakan shell default untuk login pengguna sistem Linux.
sudo docker run -it updated_ubuntu_image bash
Anda akan melihat di bawah bahwa Anda sekarang berada di shell Bash wadah Docker.
8. Selanjutnya, verifikasi apakah file berhasil disalin pada wadah di direktori /tmp dan /usr/share dengan menjalankan ls
memerintah.
Memasang Volume Penyimpanan dan Mengakses File dengan Docker Volume
Perintah
Hingga saat ini, Anda telah mempelajari cara menyalin file dari host ke container menggunakan dua pendekatan berbeda dengan menggunakan docker cp
perintah dan DockerFile . Kali ini, mari pelajari cara mudah berbagi sistem file antara host dan container menggunakan docker volume
perintah.
Dengan asumsi Anda masih masuk ke terminal:
1. Buat volume pada host Docker dengan menjalankan docker volume create
memerintah. Perintah di bawah ini akan membuat volume bernama my-vol
. sudo docker volume create my-vol
sudo docker volume create my-vol
2. Pastikan volume telah berhasil dibuat dengan menjalankan docker volume ls
memerintah. docker volume ls perintah mencantumkan volume. Setelah menjalankan docker volume ls
perintah, Anda akan melihat my-vol
di atribut VOLUME NAME yang mengonfirmasi bahwa volume berhasil dibuat.
sudo docker volume ls
3. Selanjutnya, jalankan container menggunakan docker run
perintah.
- Wadah bernama
volume_testing
menggunakannginx: latest
gambar. d
flag menjalankan wadah di latar belakang dan membuatnya tetap hidup sampai dihapus.v
flag memasang volumemy-vol
dibuat di Host Docker ke/app
tujuan container direktori.
sudo docker run -d --name volume_testing -v my-vol:/app nginx:latest
4. Verifikasi apakah volume my-vol yang Anda buat sebelumnya sudah terpasang dengan benar dengan wadah menggunakan docker inspect
memerintah. Perintah inspeksi Docker memberikan informasi wadah. Setelah menjalankan docker inspect
perintah, itu akan menampilkan semua detail dari wadah yang ditentukan (volume_testing
) detail, termasuk detail pemasangan, seperti yang ditunjukkan di bawah ini.
sudo docker inspect volume_testing
Di bawah, cuplikan Gambar mengonfirmasi bahwa volume (my-vol
) yang Anda buat di host berhasil dipasang dengan /app
penampung direktori.
Kesimpulan
Dalam tutorial ini, Anda mempelajari berbagai cara menyalin file atau folder dari host Docker ke container, seperti menggunakan perintah cp Docker, perintah volume Docker, dan Dockerfile.
Jadi pendekatan mana yang akan Anda gunakan selanjutnya saat menyalin data dari host ke container Docker?