GNU/Linux >> Belajar Linux >  >> Panels >> Docker

Cara Menyalin File dengan Docker cp ke Docker Container Anda

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 penampung 80 ke host pada port 80 .
  • 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 string my 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 menggunakan nginx: latest gambar.
  • d flag menjalankan wadah di latar belakang dan membuatnya tetap hidup sampai dihapus.
  • v flag memasang volume my-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?


Docker
  1. Cara Menginstal WordPress dengan Docker di Ubuntu

  2. Cara Menetapkan IP Statis ke Wadah Docker

  3. Cara Menginstal Nextcloud dengan Docker di Server Linux Anda

  1. Cara Menginstal Jenkins dengan Docker

  2. Cara Menyebarkan Wadah nginx dengan Docker di Linode

  3. Cara SSH Ke Wadah Docker

  1. Cara Menjalankan Jenkins Container sebagai Layanan Systemd dengan Docker

  2. Belajar Docker:Cara Membuat Wadah Docker

  3. Cara Menjalankan MySQL Dalam Wadah Docker