One place for hosting & domains
      • Fast, Secure, Realiable

        Powerful shared hosting on enterprise hardware.


        • Easy control panel
        • 1-Click script install
        • SSD disk storage
        • Unlimited transfer
        • 24/7 technical support
        • 99% uptime guarantee
      • Unlimited Web Hosting

        All the Feature You Need
        In One Package

        Power and Stability Guaranteed

        Learn more  

        UNLIMITED WEB HOSTING

        63%

        OFF

        starting at

        $29/month

      • High performance SSD Server

        At vero eos et accusamus iusto odio dignissimos ducimus blanditiis.

        Sign Up Now!
      • GET THE DOMAIN
        YOU WANT


        FOR THE PRICE
        YOU LOVE

      Cara Menginstal dan Menggunakan PostgreSQL pada Ubuntu 20.04


      Pengantar

      Sistem manajemen basis data relasional adalah komponen penting dari banyak situs web dan aplikasi. Sistem ini menyediakan cara yang terstruktur untuk menyimpan, mengelola, dan mengakses informasi.

      PostgreSQL, atau Postgres, adalah sistem manajemen basis data relasional yang memberikan penerapan dari bahasa kueri SQL. Sistem ini sesuai dengan standar dan memiliki banyak fitur lanjutan seperti transaksi yang andal dan konkurensi tanpa kunci baca.

      Panduan ini mendemonstrasikan cara menginstal Postgres pada server Ubuntu 20.04. Panduan ini juga menyediakan beberapa instruksi untuk administrasi basis data umum.

      Prasyarat

      Untuk mengikuti tutorial ini, Anda akan membutuhkan satu server Ubuntu 20.04 yang telah dikonfigurasi dengan mengikuti Panduan Penyiapan Server Awal untuk Ubuntu 20.04 dari kami. Setelah menyelesaikan tutorial prasyarat ini, server Anda akan memiliki pengguna non-root dengan izin sudo dan firewall dasar.

      Langkah 1 — Menginstal PostgreSQL

      Repositori asali Ubuntu memuat paket Postgres, sehingga Anda dapat menginstal ini menggunakan sistem paket apt.

      Jika Anda belum melakukan itu baru-baru ini, segarkan indeks paket lokal server Anda:

      Lalu, instal paket Postgres bersama dengan paket -contrib yang menambah beberapa utilitas dan fungsionalitas tambahan:

      • sudo apt install postgresql postgresql-contrib

      Karena kini perangkat lunak sudah terinstal, kita dapat memeriksa cara kerjanya dan kemungkinan perbedaannya dengan sistem manajemen basis data relasional lain yang Anda mungkin gunakan.

      Langkah 2 — Menggunakan Peran dan Basis Data PostgreSQL

      Secara asali, Postgres menggunakan konsep yang disebut “role” untuk menangani autentikasi dan otorisasi. Dalam beberapa hal, ini mirip dengan akun bergaya Unix reguler, tetapi Postgres tidak membedakan antara pengguna dan grup, serta alih-alih lebih memilih istilah “peran” yang fleksibel.

      Setelah instalasi, Postgres sudah siap untuk menggunakan autentikasi ident, yang berarti ini mengasosiasikan peran-peran Postgres dengan akun sistem Unix/Linux yang cocok. Jika peran ada di dalam Postgres, nama pengguna Unix/Linux dengan nama yang sama dapat masuk sebagai peran itu.

      Prosedur instalasi menciptakan akun pengguna bernama postgres yang terasosiasi dengan peran Postgres asali. Untuk menggunakan Postgres, Anda dapat log masuk ke akun itu.

      Ada beberapa cara untuk memanfaatkan akun ini guna mengakses Postgres.

      Beralih ke Akun postgres

      Beralihlah ke akun postgres pada server Anda dengan mengetik:

      Anda kini dapat segera mengakses prompt PostgreSQL dengan mengetik:

      Dari sana, Anda bebas berinteraksi dengan sistem manajemen basis data sesuai kebutuhan.

      Keluarlah dari prompt PostgreSQL dengan mengetik:

      Ini akan membawa Anda kembali ke prompt perintah Linux postgres.

      Mengakses Prompt Postgres Tanpa Beralih Akun

      Anda juga dapat menjalankan perintah yang Anda inginkan secara langsung menggunakan akun postgres dengan sudo.

      Misalnya, pada contoh terakhir, Anda diperintahkan untuk pergi ke prompt Postgres dengan pertama-tama beralih ke pengguna postgres, lalu menjalankan psql untuk membuka prompt Postgres. Anda dapat melakukan ini dalam satu langkah dengan menjalankan perintah tunggal psql sebagai pengguna postgres dengan sudo, seperti ini:

      Ini akan membawa Anda log masuk secara langsung ke Postgres tanpa shell bash perantara di antaranya.

      Sekali lagi, Anda dapat keluar dari sesi Postgres interaktif dengan mengetik:

      Banyak kasus penggunaan membutuhkan lebih dari satu peran Postgres. Lanjutkan membaca mempelajari cara mengonfigurasi ini.

      Langkah 3 — Menciptakan Peran Baru

      Saat ini, Anda baru saja mengonfigurasi peran postgres di dalam basis data. Anda dapat membuat peran baru dari baris perintah dengan perintah createrole. Bendera --interactive akan meminta nama peran baru ini kepada Anda serta menanyakan apakah bendera itu harus memiliki izin superuser.

      Jika Anda log masuk sebagai akun postgres, Anda dapat membuat pengguna baru dengan mengetik:

      Jika Anda lebih memilih untuk menggunakan sudo untuk setiap perintah tanpa berpindah dari akun normal Anda, ketik:

      • sudo -u postgres createuser --interactive

      Skrip akan memberi Anda beberapa pilihan dan, berdasarkan respons Anda, menjalankan perintah Postgres yang benar untuk menciptakan pengguna sesuai dengan spesifikasi Anda.

      Output

      Enter name of role to add: sammy Shall the new role be a superuser? (y/n) y

      Anda dapat memiliki kontrol lebih banyak dengan memberi beberapa bendera tambahan. Periksa opsi dengan membuka laman man:

      Instalasi Postgres Anda kini memiliki pengguna baru, tetapi Anda belum menambahkan basis data apa pun. Bagian selanjutnya menggambarkan proses ini.

      Langkah 4 — Menciptakan Basis Data Baru

      Asumsi lain yang dibuat oleh sistem autentikasi Postgres secara asali adalah bahwa pada setiap peran yang digunakan untuk log masuk akan memiliki basis data bernama sama yang dapat diakses oleh peran itu.

      Ini berarti bahwa jika pengguna yang Anda ciptakan di bagian terakhir bernama sammy, maka peran itu akan mencoba terhubung ke basis data yang juga bernama “sammy” secara asali. Anda dapat menciptakan basis data yang sesuai dengan perintah createdb.

      Jika Anda log masuk sebagai akun postgres, Anda dapat mengetik sesuatu seperti:

      Jika Anda lebih memilih untuk menggunakan sudo untuk setiap perintah tanpa berpindah dari akun normal, Anda dapat mengetik:

      • sudo -u postgres createdb sammy

      Fleksibilitas ini menyediakan beberapa jalur untuk menciptakan basis data sesuai kebutuhan.

      Langkah 5 — Membuka Prompt Postgres dengan Peran Baru

      Untuk log masuk dengan autentikasi berbasis ident, Anda akan membutuhkan pengguna Linux dengan nama yang sama dengan peran dan basis data Postgres.

      Jika tidak ada pengguna Linux yang cocok, Anda dapat menciptakannya dengan perintah adduser. Anda harus melakukan ini dari akun non-root dengan privilese sudo (yang berarti, tidak log masuk sebagai pengguna postgres):

      Setelah akun baru ini tersedia, Anda dapat beralih dan terhubung ke basis data itu dengan mengetik:

      Atau, Anda dapat melakukannya dalam baris ini:

      Perintah ini akan membuat Anda log masuk secara otomatis, dengan asumsi bahwa semua komponen telah dikonfigurasi dengan benar.

      Jika Anda ingin pengguna terhubung ke basis data yang berbeda, Anda dapat melakukannya dengan menetapkan basis datanya seperti ini:

      Setelah log masuk, Anda dapat memeriksa informasi koneksi saat ini dengan mengetik:

      Output

      You are connected to database "sammy" as user "sammy" via socket in "/var/run/postgresql" at port "5432".

      Ini berguna jika Anda terhubung ke basis data non-asali atau menggunakan pengguna non-asali.

      Langkah 6 — Membuat dan Menghapus Tabel

      Karena kini Anda mengetahui cara terhubung ke sistem basis data PostgreSQL, Anda dapat mempelajari beberapa tugas manajemen Postgres dasar.

      Sintaks dasar untuk membuat tabel adalah sebagai berikut:

      CREATE TABLE table_name (
          column_name1 col_type (field_length) column_constraints,
          column_name2 col_type (field_length),
          column_name3 col_type (field_length)
      );
      

      Seperti yang Anda lihat, perintah ini memberi nama pada tabel, lalu mendefinisikan kolom serta jenis kolom dan panjang maksimum dari data bidang. Anda juga dapat menambahkan batasan tabel pada masing-masing kolom.

      Anda dapat mempelajari lebih lanjut tentang cara membuat dan mengelola tabel di Postgres di sini.

      Untuk demonstrasi, buat tabel berikut:

      • CREATE TABLE playground (
      • equip_id serial PRIMARY KEY,
      • type varchar (50) NOT NULL,
      • color varchar (25) NOT NULL,
      • location varchar(25) check (location in ('north', 'south', 'west', 'east', 'northeast', 'southeast', 'southwest', 'northwest')),
      • install_date date
      • );

      Perintah ini akan membuat tabel yang menginventarisasi peralatan taman bermain. Kolom pertama di dalam tabel akan menampung nomor ID peralatan dari tipe serial, yang merupakan bilangan bulat yang bertambah secara otomatis. Kolom ini juga memiliki batasan dari PRIMARY KEY yang berarti bahwa nilai di dalamnya harus unik dan bukan nol.

      Dua baris selanjutnya membuat kolom untuk type (jenis) peralatan dan color (warna) secara berurutan, yang tidak boleh kosong. Baris setelah baris ini membuat kolom location (lokasi) serta batasan yang mengharuskan nilai itu menjadi salah satu dari delapan kemungkinan nilai. Baris terakhir membuat kolom date (tanggal) yang merekam tanggal saat Anda memasang peralatan itu.

      Untuk dua kolom (equip_id dan install_date) adalah perintah tidak menentukan panjang bidang. Alasan untuk ini adalah bahwa beberapa tipe data tidak memerlukan panjang rangkaian karena panjang atau format sudah tersirat.

      Anda dapat melihat tabel baru Anda dengan mengetik:

      Output

      List of relations Schema | Name | Type | Owner --------+-------------------------+----------+------- public | playground | table | sammy public | playground_equip_id_seq | sequence | sammy (2 rows)

      Tabel taman bermain Anda ada di sini, tetapi juga ada sesuatu yang bernama playground_equip_id_seq yang merupakan sequence (urutan) tipe. Ini adalah representasi dari tipe serial yang Anda berikan pada kolom equip_id. Ini melacak angka selanjutnya pada urutan dan dibuat secara otomatis untuk kolom tipe ini.

      Jika Anda hanya ingin melihat tabel tanpa urutan, Anda dapat mengetik:

      Output

      List of relations Schema | Name | Type | Owner --------+------------+-------+------- public | playground | table | sammy (1 row)

      Setelah tabel siap, mari kita gunakan untuk berlatih mengelola data.

      Langkah 7 — Menambahkan, Membuat Kueri, dan Menghapus Data pada Tabel

      Karena Anda sudah memiliki tabel, Anda dapat memasukkan beberapa data ke dalamnya. Sebagai contoh, tambahkan perosotan dan ayunan dengan memanggil tabel yang Anda ingin tambahkan, menamai kolom, lalu memberi data untuk masing-masing kolom, seperti ini:

      • INSERT INTO playground (type, color, location, install_date) VALUES ('slide', 'blue', 'south', '2017-04-28');
      • INSERT INTO playground (type, color, location, install_date) VALUES ('swing', 'yellow', 'northwest', '2018-08-16');

      Anda harus berhati-hati saat memasukkan data untuk menghindari beberapa masalah umum. Misalnya, jangan membungkus nama kolom dengan tanda kutip, tetapi nilai kolom yang Anda masukkan memang membutuhkan tanda kutip.

      Hal lain yang harus diingat adalah bahwa Anda tidak memasukkan nilai untuk kolom equip_id. Karena nilai ini secara otomatis dihasilkan setiap kali Anda menambah baris baru ke tabel.

      Ambil informasi yang Anda tambahkan dengan mengetik:

      • SELECT * FROM playground;

      Output

      equip_id | type | color | location | install_date ----------+-------+--------+-----------+-------------- 1 | slide | blue | south | 2017-04-28 2 | swing | yellow | northwest | 2018-08-16 (2 rows)

      Di sini, Anda dapat melihat bahwa equip_id telah berhasil diisi dan semua data yang lain telah terorganisir dengan benar.

      Jika perosotan di taman bermain rusak dan Anda harus menghapusnya, Anda juga dapat menghapus baris dari tabel dengan mengetik:

      • DELETE FROM playground WHERE type="slide";

      Buat kueri tabel lagi:

      • SELECT * FROM playground;

      Output

      equip_id | type | color | location | install_date ----------+-------+--------+-----------+-------------- 2 | swing | yellow | northwest | 2018-08-16 (1 row)

      Perhatikan bahwa baris slide (perosotan) tidak lagi menjadi bagian dari tabel.

      Langkah 8 — Menambahkan dan Menghapus Kolom dari Tabel

      Setelah membuat tabel, Anda dapat mengubahnya dengan menambah atau menghapus kolom. Tambahkan kolom untuk menunjukkan kunjungan pemeliharaan terakhir pada setiap peralatan dengan mengetik:

      • ALTER TABLE playground ADD last_maint date;

      Jika Anda melihat informasi tabel Anda lagi, Anda akan melihat kolom baru telah ditambahkan, tetapi tidak ada data yang dimasukkan:

      • SELECT * FROM playground;

      Output

      equip_id | type | color | location | install_date | last_maint ----------+-------+--------+-----------+--------------+------------ 2 | swing | yellow | northwest | 2018-08-16 | (1 row)

      Jika Anda menemukan bahwa kru pekerja menggunakan alat berbeda untuk melacak riwayat pemeliharaan, Anda dapat menghapusnya dari kolom dengan mengetik:

      • ALTER TABLE playground DROP last_maint;

      Ini menghapus kolom last_maint dan nilai apa pun yang ditemukan di dalamnya, tetapi tidak mengubah semua data lainnya.

      Langkah 9 — Memperbarui Data pada Tabel

      Sejauh ini, Anda telah mempelajari cara menambahkan catatan ke tabel dan cara menghapusnya, tetapi tutorial ini belum membahas cara untuk mengubah entri yang ada.

      Anda dapat memperbarui nilai-nilai dari entri yang sudah ada dengan meminta catatan yang Anda inginkan dan mengatur kolom pada nilai yang Anda ingin gunakan. Anda dapat meminta catatan swing (ini akan sesuai dengan setiap ayunan di tabel Anda) dan mengubah warnanya menjadi red (merah). Ini akan berguna jika Anda mengecat ayunan:

      • UPDATE playground SET color="red" WHERE type="swing";

      Anda dapat memverifikasi bahwa operasi berhasil dengan meminta data lagi:

      • SELECT * FROM playground;

      Output

      equip_id | type | color | location | install_date ----------+-------+-------+-----------+-------------- 2 | swing | red | northwest | 2018-08-16 (1 row)

      Seperti yang Anda lihat, perosotan kini sudah terdaftar sebagai berwarna merah.

      Kesimpulan

      Anda sekarang sudah siap dengan PostgreSQL di server Ubuntu 20.04. Jika Anda ingin mempelajari lebih lanjut tentang Postgres dan cara menggunakannya, kami menyarankan Anda untuk membaca panduan berikut:



      Source link

      Cara Menginstal dan Menggunakan Docker Compose pada Ubuntu 20.04


      Pengantar

      Docker menyederhanakan proses dari pengelolaan proses aplikasi di dalam kontainer. Meskipun kontainer mirip dengan mesin virtual dalam hal tertentu, tetapi kontainer lebih ringan dan ramah sumber daya. Ini memungkinkan pengembang untuk membagi lingkungan aplikasi menjadi beberapa layanan terisolasi.

      Untuk aplikasi yang bergantung pada beberapa layanan, menyusun semua kontainer untuk memulai, berkomunikasi, dan menutup secara bersamaan akan menjadi hal yang sulit. Docker Compose adalah alat yang memungkinkan Anda untuk menjalankan lingkungan aplikasi multikontainer berdasarkan definisi yang ditetapkan dalam berkas YAML. Alat ini menggunakan definisi layanan untuk sepenuhnya membangun lingkungan yang dapat disesuaikan dengan penggunaan beberapa kontainer yang dapat berbagi volume data dan jaringan.

      Dalam panduan ini, kami akan menunjukkan cara menginstal Docker Compose pada server Ubuntu 20.04 dan cara memulainya menggunakan alat ini.

      Prasyarat

      Untuk mengikuti artikel ini, Anda akan memerlukan:

      Langkah 1 — Menginstal Docker Compose

      Untuk memastikan bahwa kita memperoleh versi stabil yang terbaru dari Docker Compose, kita akan mengunduh perangkat lunak ini dari repositori Github resmi.

      Pertama-tama, pastikan versi terbaru yang tersedia di laman rilis mereka. Pada saat panduan penulisan ini, versi stabil yang terbaru adalah 1.26.0.

      Perintah berikut akan mengunduh rilis 1.26.0 dan menyimpan berkas yang dapat dieksekusi di /usr/local/bin/docker-compose, yang akan menjadikan perangkat lunak ini dapat diakses secara global sebagai docker-compose:

      • sudo curl -L "https://github.com/docker/compose/releases/download/1.26.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

      Selanjutnya, atur izin yang benar sehingga perintah docker-compose dapat dieksekusi:

      • sudo chmod +x /usr/local/bin/docker-compose

      Untuk memverifikasi bahwa instalasi berhasil, Anda dapat menjalankan:

      Anda akan melihat keluaran yang serupa dengan ini:

      Output

      docker-compose version 1.26.0, build 8a1c60f6

      Docker Compose kini telah berhasil terinstal di sistem Anda. Di bagian selanjutnya, kita akan melihat cara menyiapkan berkas docker-compose.yml dan menjadikan lingkungan terkontainerisasi aktif dan berjalan dengan alat ini.

      Langkah 2 — Menyiapkan Berkas docker-compose.yml

      Untuk menunjukkan cara menyiapkan berkas docker-compose.yml dan bekerja dengan Docker Compose, kita akan menciptakan suatu lingkungan server web menggunakan citra Nginx resmi dari Docker Hub, yang merupakan registri Docker publik. Lingkungan terkontainerisasi ini akan menyajikan sebuah berkas HTML statis tunggal.

      Mulai dengan menciptakan direktori baru di dalam folder rumah Anda, lalu masuk ke dalamnya:

      • mkdir ~/compose-demo
      • cd ~/compose-demo

      Dalam direktori ini, siapkan folder aplikasi untuk berperan sebagai root dokumen bagi lingkungan Nginx Anda:

      Dengan menggunakan editor teks pilihan Anda, ciptakan berkas index.html yang baru di dalam folder app:

      Taruh konten berikut ke dalam berkas ini:

      ~/compose-demo/app/index.html

      <!doctype html>
      <html lang="en">
      <head>
          <meta charset="utf-8">
          <title>Docker Compose Demo</title>
          <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/kognise/water.css@latest/dist/dark.min.css">
      </head>
      <body>
      
          <h1>This is a Docker Compose Demo Page.</h1>
          <p>This content is being served by an Nginx container.</p>
      
      </body>
      </html>
      

      Simpan dan tutup berkas setelah Anda selesai. Jika Anda menggunakan nano, Anda dapat melakukan itu dengan mengetik CTRL+X, lalu Y, dan ENTER untuk mengonfirmasi.

      Selanjutnya, ciptakan berkas docker-compose.yml:

      Masukkan konten berikut pada berkas docker-compose.yml Anda:

      docker-compose.yml

      version: '3.7'
      services:
        web:
          image: nginx:alpine
          ports:
            - "8000:80"
          volumes:
            - ./app:/usr/share/nginx/html
      

      Berkas docker-compose.yml biasanya dimulai dengan definisi version. Ini akan memberi tahu Docker Compose tentang versi konfigurasi yang kita gunakan.

      Kemudian, kita memiliki blok services, untuk menyiapkan layanan yang merupakan bagian dari lingkungan ini. Dalam kasus ini, kita memiliki sebuah layanan tunggal yang disebut web. Layanan ini menggunakan citra nginx:alpine dan menyiapkan pengalihan porta dengan arahan ports. Semua permintaan pada porta 8000 dari mesin *hos *(sistem tempat Anda menjalankan Docker Compose) akan dialihkan ke kontainer web pada porta 80, tempat Nginx akan berjalan.

      Arahan volumes akan menciptakan volume bersama antara mesin hos dan kontainer. Volume ini akan berbagi folder app lokal dengan kontainer, dan terletak di /usr/share/nginx/html di dalam kontainer, yang kemudian akan menimpa root dokumen asali untuk Nginx.

      Simpan dan tutup berkas.

      Kita telah menyiapkan laman demo dan berkas docker-compose.yml untuk menciptakan lingkungan server web terkontainerisasi yang akan melengkapinya. Dalam langkah berikutnya, kita akan menjadikan lingkungan ini aktif dengan Docker Compose.

      Langkah 3 — Menjalankan Docker Compose

      Dengan berkas docker-compose.yml berada di tempatnya, kita kini dapat mengeksekusi Docker Compose untuk menjadikan lingkungan kita aktif. Perintah berikut akan mengunduh citra Docker yang diperlukan, menciptakan kontainer untuk layanan web, dan menjalankan lingkungan terkontainerisasi dalam mode latar belakang:

      Docker Compose pertama-tama akan mencari citra yang didefinisikan pada sistem lokal Anda, dan jika Docker Compose tidak dapat menemukan citra tersebut, maka Docker Compose akan mengunduh citra dari Docker Hub. Anda akan melihat keluaran seperti ini:

      Output

      Creating network "compose-demo_default" with the default driver Pulling web (nginx:alpine)... alpine: Pulling from library/nginx cbdbe7a5bc2a: Pull complete 10c113fb0c77: Pull complete 9ba64393807b: Pull complete c829a9c40ab2: Pull complete 61d685417b2f: Pull complete Digest: sha256:57254039c6313fe8c53f1acbf15657ec9616a813397b74b063e32443427c5502 Status: Downloaded newer image for nginx:alpine Creating compose-demo_web_1 ... done

      Lingkungan Anda kini telah aktif dan berjalan di latar belakang. Untuk memverifikasi bahwa kontainer sudah aktif, Anda dapat menjalankan:

      Perintah ini akan menunjukkan informasi kepada Anda tentang kontainer yang sedang berjalan dan keadaannya, serta pengalihan porta apa pun yang aktif:

      Output

      Name Command State Ports ---------------------------------------------------------------------------------- compose-demo_web_1 /docker-entrypoint.sh ngin ... Up 0.0.0.0:8000->80/tcp

      Anda kini dapat mengakses aplikasi demo dengan mengarahkan peramban Anda ke localhost:8000 jika Anda menjalankan demo ini pada mesin lokal, atau your_server_domain_or_IP:8000 jika Anda menjalankan demo ini pada server jauh.

      Anda akan melihat sebuah laman seperti ini:

      Laman Demo Docker Compose

      Karena volume bersama yang Anda siapkan di dalam berkas docker-compose.yml menjaga berkas-berkas folder app Anda tetap sinkron dengan root dokumen kontainer. Jika Anda membuat perubahan apa pun terhadap berkas index.html, perubahan itu akan secara otomatis diambil oleh kontainer dan tercermin pada peramban ketika Anda memuat ulang laman.

      Pada langkah selanjutnya, Anda akan melihat cara mengelola lingkungan terkontainerisasi Anda dengan perintah Docker Compose.

      Langkah 4 — Membiasakan Diri dengan Perintah Docker Compose

      Anda telah melihat cara menyiapkan berkas docker-compose.yml dan menjadikan lingkungan Anda aktif dengan docker-compose up. Anda kini akan melihat cara menggunakan perintah Docker Compose untuk mengelola dan berinteraksi dengan lingkungan terkontainerisasi Anda.

      Untuk memeriksa log yang dihasilkan oleh kontainer Nginx, Anda dapat menggunakan perintah logs:

      Anda akan melihat keluaran yang serupa dengan ini:

      Output

      Attaching to compose-demo_web_1 web_1 | /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration web_1 | /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/ web_1 | /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh web_1 | 10-listen-on-ipv6-by-default.sh: Getting the checksum of /etc/nginx/conf.d/default.conf web_1 | 10-listen-on-ipv6-by-default.sh: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf web_1 | /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh web_1 | /docker-entrypoint.sh: Configuration complete; ready for start up web_1 | 172.22.0.1 - - [02/Jun/2020:10:47:13 +0000] "GET / HTTP/1.1" 200 353 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" "-"

      Jika Anda ingin menghentikan sejenak eksekusi lingkungan tanpa mengubah keadaan kontainer saat ini, Anda dapat menggunakan:

      Output

      Pausing compose-demo_web_1 ... done

      Untuk melanjutkan eksekusi setelah melakukan jeda:

      Output

      Unpausing compose-demo_web_1 ... done

      Perintah stop akan menghentikan eksekusi kontainer, tetapi tidak akan menghancurkan data apa pun yang terasosiasi dengan kontainer Anda:

      Output

      Stopping compose-demo_web_1 ... done

      Jika Anda ingin menghapus kontainer, jaringan, dan volume yang terasosiasi dengan lingkungan terkontainerisasi, gunakan perintah down:

      Output

      Removing compose-demo_web_1 ... done Removing network compose-demo_default

      Perhatikan bahwa ini tidak akan menghapus citra dasar yang digunakan oleh Docker Compose untuk mengaktifkan lingkungan Anda (dalam kasus kita, nginx:alpine). Dengan cara ini, kapan pun Anda menjadikan lingkungan aktif kembali dengan docker-compose up, prosesnya akan jauh lebih cepat karena citra sudah berada di sistem Anda.

      Jika Anda juga ingin menghapus citra dasar dari sistem, Anda dapat menggunakan:

      • docker image rm nginx:alpine

      Output

      Untagged: nginx:alpine Untagged: nginx@sha256:b89a6ccbda39576ad23fd079978c967cecc6b170db6e7ff8a769bf2259a71912 Deleted: sha256:7d0cdcc60a96a5124763fddf5d534d058ad7d0d8d4c3b8be2aefedf4267d0270 Deleted: sha256:05a0eaca15d731e0029a7604ef54f0dda3b736d4e987e6ac87b91ac7aac03ab1 Deleted: sha256:c6bbc4bdac396583641cb44cd35126b2c195be8fe1ac5e6c577c14752bbe9157 Deleted: sha256:35789b1e1a362b0da8392ca7d5759ef08b9a6b7141cc1521570f984dc7905eb6 Deleted: sha256:a3efaa65ec344c882fe5d543a392a54c4ceacd1efd91662d06964211b1be4c08 Deleted: sha256:3e207b409db364b595ba862cdc12be96dcdad8e36c59a03b7b3b61c946a5741a

      Catatan: Lihat panduan kami tentang Cara Menginstal dan Menggunakan Docker untuk referensi yang lebih mendetail tentang perintah-perintah Docker.

      Kesimpulan

      Dalam panduan ini, kita telah melihat cara menginstal Docker Compose dan menyiapkan lingkungan terkontainerisasi berdasarkan suatu citra server web Nginx. Kita juga telah melihat cara mengelola lingkungan ini dengan menggunakan perintah-perintah Compose.

      Untuk referensi lengkap dari semua perintah docker-compose yang tersedia, lihat dokumentasi resmi.



      Source link

      Cara Menginstal dan Menggunakan Docker pada Ubuntu 20.04


      Pengantar

      Docker adalah suatu aplikasi yang menyederhanakan proses pengelolaan proses aplikasi di dalam kontainer. Kontainer memungkinkan Anda menjalankan aplikasi di dalam proses yang terisolasi sumber daya. Kontainer mirip seperti mesin virtual, tetapi kontainer lebih portabel, lebih ramah sumber daya, dan lebih bergantung pada sistem operasi hos.

      Untuk pengantar mendetail tentang beragam komponen berbeda dari kontainer Docker, silakan baca The Docker Ecosystem: An Introduction to Common Components.

      Dalam tutorial ini, Anda akan menginstal dan menggunakan Docker Community Edition (CE) pada Ubuntu 20.04. Anda akan menginstal Docker sendiri, bekerja dengan kontainer dan citra, serta mendorong citra ke Repositori Docker.

      Prasyarat

      Untuk mengikuti tutorial ini, Anda membutuhkan hal berikut ini:

      • Satu server Ubuntu 20.04 yang disiapkan dengan mengikuti panduan penyiapan server awal Ubuntu 20.04 berikut ini, termasuk penggguna non-root sudo dan firewall.
      • Satu akun di Docker Hub jika Anda ingin menciptakan citra sendiri dan mendorongnya ke Docker Hub, seperti yang diperlihatkan dalam Langkah 7 dan 8.

      Langkah 1 — Menginstal Docker

      Paket instalasi Docker yang tersedia di repositori Ubuntu resmi mungkin bukan versi terbaru. Untuk memastikan kita mendapat versi terbaru, kita akan menginstal Docker dari repositori Docker resmi. Untuk melakukan itu, kita akan menambah satu sumber paket baru, menambah kunci GPG dari Docker untuk memastikan unduhannya valid, lalu menginstal paket itu.

      Pertama, perbarui daftar paket Anda saat ini:

      Selanjutnya, instal beberapa paket prasyarat yang memungkinkan apt menggunakan paket lewat HTTPS:

      • sudo apt install apt-transport-https ca-certificates curl software-properties-common

      Lalu tambahkan kunci GPG untuk repositori Docker resmi ke sistem Anda:

      • curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

      Tambahkan repositori Docker ke sumber APT:

      • sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"

      Selanjutnya, perbarui basis data paket dengan paket Docker dari repo yang baru ditambahkan:

      Pastikan Anda akan menginstal dari repo Docker alih-alih repo Ubuntu asali:

      • apt-cache policy docker-ce

      Anda akan melihat keluaran seperti ini, meskipun nomor versi untuk Docker mungkin berbeda:

      Output of apt-cache policy docker-ce

      docker-ce:
        Installed: (none)
        Candidate: 5:19.03.9~3-0~ubuntu-focal
        Version table:
           5:19.03.9~3-0~ubuntu-focal 500
              500 https://download.docker.com/linux/ubuntu focal/stable amd64 Packages
      

      Perhatikan bahwa docker-ce belum terinstal, tetapi kandidat untuk instalasi adalah dari repositori Docker untuk Ubuntu 20.04 (focal).

      Akhirnya, instal Docker:

      • sudo apt install docker-ce

      Docker kini seharusnya sudah terinstal, daemon dimulai, dan prosesnya kini dapat berjalan ketika memulai saat boot. Periksa bahwa ini berjalan:

      • sudo systemctl status docker

      Keluaran harus mirip dengan yang berikut ini, yang menunjukkan bahwa layanan sudah aktif dan berjalan:

      Output

      ● docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2020-05-19 17:00:41 UTC; 17s ago TriggeredBy: ● docker.socket Docs: https://docs.docker.com Main PID: 24321 (dockerd) Tasks: 8 Memory: 46.4M CGroup: /system.slice/docker.service └─24321 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

      Menginstal Docker kini tidak hanya memberi Anda layanan Docker (daemon) tetapi juga utilitas baris perintah docker, atau klien Docker. Kita akan menjelajahi cara menggunakan perintah docker di dalam tutorial ini nanti.

      Langkah 2 — Mengeksekusi Perintah Docker Tanpa Sudo (Opsional)

      Secara asali, perintah docker hanya dapat dijalankan pengguna root atau oleh pengguna di dalam grup docker yang tercipta secara otomatis selama proses instalasi Docker. Jika Anda mencoba menjalankan perintah docker tanpa mengawalinya dengan sudo atau tanpa berada di dalam grup docker, Anda akan mendapat keluaran seperti ini:

      Output

      docker: Cannot connect to the Docker daemon. Is the docker daemon running on this host?. See 'docker run --help'.

      Jika Anda ingin menghindari untuk mengetik sudo setiap kali Anda menjalankan perintah docker, tambahkan nama pengguna Anda ke grup docker:

      • sudo usermod -aG docker ${USER}

      Untuk menerapkan keanggotaan grup baru, lakukan log keluar dari server dan masuk kembali, atau ketik yang berikut ini:

      Anda akan diminta untuk memasukkan kata sandi pengguna Anda untuk melanjutkan.

      Konfirmasikan bahwa pengguna Anda kini sudah ditambahkan ke grup docker dengan mengetik:

      Output

      sammy sudo docker

      Jika Anda perlu menambahkan seorang pengguna ke grup docker yang Anda sedang tidak sedang log masuk di dalamnya, deklarasikan nama pengguna secara eksplisit menggunakan:

      • sudo usermod -aG docker username

      Mulai dari sekarang, artikel ini mengasumsikan bahwa Anda menjalankan perintah docker sebagai pengguna di dalam grup docker. Jika Anda memilih untuk tidak melakukan itu, silakan sisipkan perintah dengan awalan sudo.

      Mari kita jelajahi perintah docker berikutnya.

      Langkah 3 — Menggunakan Perintah Docker

      Menggunakan docker terdiri dari memberikannya serangkaian opsi dan perintah yang diikuti oleh argumen. Sintaksnya berbentuk seperti ini:

      • docker [option] [command] [arguments]

      Untuk melihat semua subperintah yang tersedia, ketik:

      Mulai dari Docker 19, daftar lengkap subperintah yang tersedia termasuk:

      Output

      attach Attach local standard input, output, and error streams to a running container build Build an image from a Dockerfile commit Create a new image from a container's changes cp Copy files/folders between a container and the local filesystem create Create a new container diff Inspect changes to files or directories on a container's filesystem events Get real time events from the server exec Run a command in a running container export Export a container's filesystem as a tar archive history Show the history of an image images List images import Import the contents from a tarball to create a filesystem image info Display system-wide information inspect Return low-level information on Docker objects kill Kill one or more running containers load Load an image from a tar archive or STDIN login Log in to a Docker registry logout Log out from a Docker registry logs Fetch the logs of a container pause Pause all processes within one or more containers port List port mappings or a specific mapping for the container ps List containers pull Pull an image or a repository from a registry push Push an image or a repository to a registry rename Rename a container restart Restart one or more containers rm Remove one or more containers rmi Remove one or more images run Run a command in a new container save Save one or more images to a tar archive (streamed to STDOUT by default) search Search the Docker Hub for images start Start one or more stopped containers stats Display a live stream of container(s) resource usage statistics stop Stop one or more running containers tag Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE top Display the running processes of a container unpause Unpause all processes within one or more containers update Update configuration of one or more containers version Show the Docker version information wait Block until one or more containers stop, then print their exit codes

      Untuk melihat opsi yang tersedia untuk perintah spesifik, ketik:

      • docker docker-subcommand --help

      Untuk melihat informasi keseluruhan sistem tentang Docker, gunakan:

      Mari kita jelajahi beberapa dari perintah ini. Kita akan mulai dengan bekerja dengan citra.

      Langkah 4 — Bekerja dengan Citra Docker

      Kontainer Docker dibangun dari citra Docker. Secara asali, Docker menarik citra ini dari Docker Hub, suatu registri Docker yang dikelola oleh Docker, perusahaan di balik proyek Docker. Siapa pun dapat menjadi hos citra Docker miliknya di Docker Hub, sehingga sebagian besar aplikasi dan distro Linux yang Anda butuhkan akan memiliki citra yang ditempatkan di dalamnya.

      Untuk memeriksa apakah Anda dapat mengakses dan mengunduh citra dari Docker Hub, ketik:

      Keluaran akan mengindikasikan bahwa Docker bekerja dengan benar:

      Output

      Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world 0e03bdcc26d7: Pull complete Digest: sha256:6a65f928fb91fcfbc963f7aa6d57c8eeb426ad9a20c7ee045538ef34847f44f1 Status: Downloaded newer image for hello-world:latest Hello from Docker! This message shows that your installation appears to be working correctly. ...

      Docker pada awalnya tidak dapat menemukan citra hello-world secara lokal, sehingga Docker mengunduh citra dari Docker Hub, yang merupakan repositori asali. Setelah citra diunduh, Docker menciptakan suatu kontainer dari citra dan aplikasi di dalam kontainer yang dieksekusi, yang menampilkan pesan.

      Anda dapat mencari citra yang tersedia di Docker Hub dengan menggunakan perintah docker dengan subperintah search. Sebagai contoh, untuk mencari citra Ubuntu, ketik:

      Skrip ini akan mencari di Docker Hub dan memberi daftar semua citra yang namanya cocok dengan string pencarian. Dalam kasus ini, keluarannya akan mirip seperti ini:

      Output

      NAME DESCRIPTION STARS OFFICIAL AUTOMATED ubuntu Ubuntu is a Debian-based Linux operating sys… 10908 [OK] dorowu/ubuntu-desktop-lxde-vnc Docker image to provide HTML5 VNC interface … 428 [OK] rastasheep/ubuntu-sshd Dockerized SSH service, built on top of offi… 244 [OK] consol/ubuntu-xfce-vnc Ubuntu container with "headless" VNC session… 218 [OK] ubuntu-upstart Upstart is an event-based replacement for th… 108 [OK] ansible/ubuntu14.04-ansible Ubuntu 14.04 LTS with ...

      Pada kolom OFFICIAL, OK menandakan citra yang dibuat dan didukung oleh perusahaan yang ada di balik proyek ini. Setelah Anda mengidentifikasi citra yang Anda ingin gunakan, Anda dapat mengunduhnya ke komputer Anda menggunakan subperintah pull.

      Jalankan perintah berikut ini untuk mengunduh citra ubuntu resmi ke komputer Anda:

      Anda akan melihat keluaran berikut ini:

      Output

      Using default tag: latest latest: Pulling from library/ubuntu d51af753c3d3: Pull complete fc878cd0a91c: Pull complete 6154df8ff988: Pull complete fee5db0ff82f: Pull complete Digest: sha256:747d2dbbaaee995098c9792d99bd333c6783ce56150d1b11e333bbceed5c54d7 Status: Downloaded newer image for ubuntu:latest docker.io/library/ubuntu:latest

      Setelah suatu citra telah diunduh, Anda lalu dapat menjalankan suatu kontainer dengan menggunakan citra yang telah diunduh dengan subperintah run. Seperti yang Anda lihat dengan contoh hello-world, jika suatu citra belum diunduh saat docker dieksekusi dengan subperintah run, klien Docker akan mengunduh citra terlebih dahulu, lalu menjalankan kontainer dengan menggunakannya.

      Untuk melihat citra yang telah diunduh ke komputer Anda, ketik:

      Keluaran akan terlihat mirip dengan yang berikut ini:

      Output

      REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu latest 1d622ef86b13 3 weeks ago 73.9MB hello-world latest bf756fb1ae65 4 months ago 13.3kB

      Seperti yang Anda nanti lihat di tutorial ini, citra yang Anda gunakan untuk menjalankan kontainer dapat dimodifikasi dan digunakan untuk menghasilkan citra baru, yang mungkin diunggah (didorong adalah istilah teknisnya) ke Docker Hub atau registri Docker lainnya.

      Mari kita lihat cara menjalankan kontainer secara lebih mendetail.

      Langkah 5 — Menjalankan Kontainer Docker

      Kontainer hello-world yang Anda jalankan di langkah sebelumnya adalah contoh dari kontainer yang berjalan dan keluar setelah menampilkan suatu pesan teks. Kontainer dapat menjadi lebih bermanfaat daripada itu dan dapat menjadi interaktif. Bagaimanapun juga, kontainer mirip dengan mesin virtual, hanya saja lebih ramah sumber daya.

      Sebagai contoh, mari kita jalankan kontainer dengan menggunakan citra terbaru dari Ubuntu. Kombinasi dari switch -i dan -t memberi Anda akses shell interaktif ke dalam kontainer:

      Prompt perintah Anda harus berubah untuk mencerminkan fakta bahwa Anda kini bekerja di dalam kontainer dan harus berbentuk seperti ini:

      Output

      root@d9b100f2f636:/#

      Perhatikan id kontainer di dalam prompt perintah. Pada contoh ini, id-nya adalah d9b100f2f636. Anda akan membutuhkan id kontainer itu untuk mengidentifikasi kontainer ketika Anda ingin menghapusnya.

      Sekarang Anda dapat menjalankan perintah apa pun di dalam kontainer. Sebagai contoh, mari kita perbarui basis data paket di dalam kontainer. Anda tidak perlu mengawali perintah dengan sudo, karena Anda kini beroperasi di dalam kontainer sebagai pengguna root:

      Lalu, instal aplikasi apa pun di dalamnya. Mari kita instal Node.js:

      Ini menginstal Node.js di dalam kontainer dari repositori Ubuntu resmi. Saat instalasi selesai, pastikan bahwa Node.js sudah terinstal:

      Anda akan melihat nomor versi ditampilkan pada terminal Anda:

      Output

      v10.19.0

      Segala perubahan yang Anda buat di dalam kontainer hanya berlaku pada kontainer itu.

      Untuk keluar dari kontainer, ketik exit di prompt.

      Selanjutnya, mari kita lihat tentang pengelolaan kontainer di sistem kita.

      Langkah 6 — Mengelola Kontainer Docker

      Setelah menggunakan Docker selama beberapa waktu, Anda akan memiliki banyak kontainer aktif (berjalan) dan tidak aktif di komputer Anda. Untuk melihat kontainer yang aktif, gunakan:

      Anda akan melihat keluaran yang mirip dengan yang berikut ini:

      Output

      CONTAINER ID IMAGE COMMAND CREATED

      Dalam tutorial ini, Anda memulai dua kontainer, satu dari citra hello-word dan yang lain dari citra ubuntu. Kedua kontainer tidak lagi berjalan, tetapi masih ada di sistem Anda.

      Untuk melihat semua kontainer — aktif dan tidak aktif, jalankan docker ps dengan switch -a:

      Anda akan melihat keluaran mirip dengan ini:

      1c08a7a0d0e4        ubuntu              "/bin/bash"         2 minutes ago       Exited (0) 8 seconds ago                       quizzical_mcnulty
      a707221a5f6c        hello-world         "/hello"            6 minutes ago       Exited (0) 6 minutes ago                       youthful_curie
      
      

      Untuk melihat kontainer terbaru yang Anda buat, teruskan ke switch -l:

      • CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
      • 1c08a7a0d0e4 ubuntu "/bin/bash" 2 minutes ago Exited (0) 40 seconds ago quizzical_mcnulty

      Untuk memulai kontainer yang telah dihentikan, gunakan docker start, diikuti dengan id kontainer atau nama kontainer. Mari kita mulai kontainer berbasis Ubuntu dengan ID 1c08a7a0d0e4:

      • docker start 1c08a7a0d0e4

      Kontainer akan memulai, dan Anda dapat menggunakan docker ps untuk melihat statusnya:

      Output

      CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1c08a7a0d0e4 ubuntu "/bin/bash" 3 minutes ago Up 5 seconds quizzical_mcnulty

      Untuk menghentikan suatu kontainer yang sedang berjalan, gunakan docker stop, diikuti dengan ID atau nama kontainer. Kali ini, kita akan menggunakan nama yang diberikan Docker kepada kontainer, yaitu quizzical_mcnulty:

      • docker stop quizzical_mcnulty

      Setelah Anda memutuskan bahwa Anda tidak lagi membutuhkan suatu kontainer, hapus kontainer itu dengan perintah docker rm, dengan kembali menggunakan baik ID atau nama kontainer. Gunakan perintah docker ps -a untuk menemukan ID atau nama kontainer untuk kontainer yang terkait dengan citra hello-world dan hapus.

      Anda dapat memulai suatu kontainer baru dan memberinya nama dengan menggunakan switch --name. Anda juga dapat menggunakan switch --rm untuk menciptakan suatu kontainer yang menghapus dirinya sendiri saat dihentikan. Lihat perintah docker run help untuk informasi lebih lanjut tentang opsi ini dan lainnya.

      Kontainer dapat diubah menjadi citra yang Anda dapat gunakan untuk menciptakan kontainer baru. Mari kita lihat cara kerjanya.

      Langkah 7 — Menerapkan Perubahan dalam Kontainer ke Citra Docker

      Saat Anda memulai suatu citra Docker, Anda dapat menciptakan, memodifikasi, dan menghapus berkas seperti yang Anda dapat lakukan dengan mesin virtual. Perubahan yang Anda buat hanya akan berlaku untuk kontainer itu. Anda dapat memulai dan menghentikannya, tetapi setelah Anda menghancurkannya dengan perintah docker rm, perubahan akan hilang selamanya.

      Bagian ini menunjukkan kepada Anda cara menyimpan kondisi suatu kontainer sebagai citra Docker baru.

      Setelah menginstal Node.js di dalam kontainer Ubuntu, Anda kini memiliki suatu kontainer yang berjalan dari suatu citra, tetapi kontainer ini berbeda dari citra yang Anda gunakan sebelumnya untuk menciptakannya. Tetapi Anda mungkin ingin menggunakan kembali kontainer Node.js ini sebagai dasar untuk citra baru nantinya.

      Lalu terapkan perubahan ke instans citra Docker baru dengan menggunakan perintah berikut.

      • docker commit -m "What you did to the image" -a "Author Name" container_id repository/new_image_name

      Switch -m adalah untuk pesan penerapan yang membantu Anda dan orang lain untuk mengetahui perubahan yang Anda buat, sedangkan -a digunakan untuk menentukan penulisnya. container_id adalah hal yang Anda catat sebelumnya dalam tutorial saat Anda memulai sesi Docker interaktif. Kecuali Anda menciptakan repositori tambahan pada Docker Hub, repository itu biasanya merupakan nama pengguna Docker Hub Anda.

      Sebagai contoh, untuk pengguna bernama sammy, dengan ID kontainer d9b100f2f636, perintahnya adalah:

      • docker commit -m "added Node.js" -a "sammy" d9b100f2f636 sammy/ubuntu-nodejs

      Saat Anda melakukan commit pada suatu citra, citra baru itu disimpan secara lokal di komputer Anda. Dalam tutorial ini nantinya Anda akan belajar cara mendorong citra ke suatu registri Docker seperti Docker Hub sehingga orang lain dapat mengaksesnya.

      Membuat daftar citra Docker kembali akan menampilkan citra baru dan lama yang menjadi rujukan bagi yang baru:

      Anda akan melihat keluaran seperti ini:

      Output

      REPOSITORY TAG IMAGE ID CREATED SIZE sammy/ubuntu-nodejs latest 7c1f35226ca6 7 seconds ago 179MB ...

      Pada contoh ini, ubuntu-nodejs adalah citra baru, yang diturunkan dari citra ubuntu yang sudah ada sebelumnya dari Docker Hub. Perbedaan ukuran mencerminkan perubahan yang dibuat. Dan dalam contoh ini, perubahannya adalah bahwa NodeJS telah diinstal. Jadi, lain kali Anda perlu menjalankan suatu kontainer yang menggunakan Ubuntu dengan NodeJS yang telah diinstal sebelumnya, Anda dapat langsung menggunakan citra baru ini.

      Anda juga dapat membangun citra dari suatu Dockerfile, yang memungkinkan Anda mengotomatiskan instalasi perangkat lunak dalam suatu citra baru. Namun, hal itu berada di luar cakupan tutorial ini.

      Sekarang, mari kita berbagi citra baru dengan orang lain sehingga mereka dapat menciptakan kontainer dari citra itu.

      Langkah 8 — Mendorong Citra Docker ke Repositori Docker

      Langkah logis berikutnya setelah menciptakan citra baru dari citra yang sudah ada adalah membagikannya kepada beberapa teman yang Anda pilih, seluruh dunia di Docker Hub, atau registri Docker lain yang dapat Anda akses. Untuk mendorong suatu citra ke Docker Hub atau registri Docker lain, Anda harus memiliki akun di sana.

      Bagian ini menunjukkan kepada Anda cara mendorong suatu citra Docker ke Docker Hub. Untuk mempelajari cara membuat registri Docker pribadi Anda sendiri, bacalah How To Set Up a Private Docker Registry on Ubuntu 14.04.

      Langkah pertama untuk mendorong citra Anda adalah dengan melakukan log masuk ke Docker Hub.

      • docker login -u docker-registry-username

      Anda akan diminta melakukan autentikasi menggunakan kata sandi Docker Hub Anda. Jika Anda memberikan kata sandi yang benar, autentikasi pasti berhasil.

      Catatan: Jika nama pengguna registri Docker Anda berbeda dari nama pengguna lokal yang Anda gunakan untuk menciptakan citra, Anda harus menandai citra Anda dengan nama pengguna registri. Untuk contoh yang diberikan pada langkah terakhir, Anda perlu mengetik:

      • docker tag sammy/ubuntu-nodejs docker-registry-username/ubuntu-nodejs

      Lalu, Anda dapat mendorong citra Anda sendiri menggunakan:

      • docker push docker-registry-username/docker-image-name

      Untuk mendorong citra ubuntu-nodejs ke repositori sammy, perintahnya adalah:

      • docker push sammy/ubuntu-nodejs

      Proses ini mungkin membutuhkan waktu beberapa saat untuk mengunggah citra hingga selesai, tetapi saat selesai, keluaran akan terlihat seperti ini:

      Output

      The push refers to a repository [docker.io/sammy/ubuntu-nodejs] e3fbbfb44187: Pushed 5f70bf18a086: Pushed a3b5c80a4eba: Pushed 7f18b442972b: Pushed 3ce512daaf78: Pushed 7aae4540b42d: Pushed ...

      Setelah mendorong citra ke registri, citra akan terdaftar pada dasbor akun Anda, seperti yang ditampilkan dalam gambar di bawah ini.

      Daftar citra Docker baru pada Docker Hub

      Jika upaya mendorong menghasilkan kesalahan seperti ini, ada kemungkinan Anda belum log masuk:

      Output

      The push refers to a repository [docker.io/sammy/ubuntu-nodejs] e3fbbfb44187: Preparing 5f70bf18a086: Preparing a3b5c80a4eba: Preparing 7f18b442972b: Preparing 3ce512daaf78: Preparing 7aae4540b42d: Waiting unauthorized: authentication required

      Lakukan log masuk dengan login docker dan ulangi upaya dorong. Lalu pastikan bahwa citra itu ada di halaman repositori Docker Hub.

      Anda sekarang dapat menggunakan docker pull sammy/ubuntu-nodejs untuk menarik citra itu ke mesin baru dan menggunakannya untuk menjalankan suatu kontainer baru.

      Kesimpulan

      Dalam tutorial ini, Anda telah menginstal Docker, bekerja dengan citra dan kontainer, dan mendorong citra yang telah dimodifikasi ke Docker Hub. Sekarang, setelah Anda tahu dasar-dasarnya, jelajahi tutorial Docker yang lain yang ada di dalam DigitalOcean Community.



      Source link