Docker adalah mesin sumber terbuka yang dapat diperluas yang didukung oleh Linux Containers yang mengotomatiskan penerapan aplikasi sebagai wadah portabel, ringan, dan mandiri. Untuk tujuan tutorial ini, kami akan menganggap Anda telah mengikuti langkah-langkah yang diuraikan dalam Menyiapkan dan Mengamankan Instans Komputasi, bahwa sistem Anda mutakhir, dan bahwa Anda telah masuk ke Linode sebagai root melalui SSH.
Instalasi
Untuk tujuan panduan ini, kami akan menunjukkan kepada Anda cara menginstal Docker di Ubuntu 12.04 dan CentOS 6.4. Docker menyediakan repositori untuk masing-masing distribusi ini, yang memudahkan penginstalan.
Ubuntu 12.04 64bit
Di sini kita akan menambahkan repositori yang dikelola Docker untuk Ubuntu dan menginstal perangkat lunak.
-
Docker tersedia sebagai paket di repositori Ubuntu Docker, tetapi hanya untuk 64bit. Pertama, Anda perlu menambahkan kunci repositori Docker menggunakan
apt-key
:sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
-
Tambahkan repositori Docker ke sumber apt Anda:
echo "deb http://get.docker.io/ubuntu docker main" | sudo tee /etc/apt/sources.list.d/docker.list
-
Jalankan yang berikut ini untuk apt-get update dan instal
lxc-docker
:sudo apt-get update sudo apt-get install lxc-docker
-
Untuk memverifikasi bahwa instalasi telah berhasil diselesaikan, luncurkan contoh wadah Ubuntu. Perintah ini akan secara otomatis mengambil gambar yang hilang, menjalankan wadah, dan menyediakan sesi bash interaktif:
sudo docker run -i -t ubuntu /bin/bash
Outputnya akan menyerupai:
# docker run -i -t ubuntu /bin/bash Unable to find image 'ubuntu' (tag: latest) locally Pulling repository ubuntu 8dbd9e392a96: Download complete b750fe79269d: Download complete 27cf78414709: Download complete [email protected]:/#
-
Untuk keluar dari container, ketik
exit
.
CentOS 6 64bit
Docker tersedia di repositori EPEL sebagai docker-io
paket hanya untuk 64bit.
-
Untuk menambahkan repositori EPEL, instal paket rilis terbaru epel.
-
Untuk menginstal Docker, jalankan perintah berikut:
sudo yum -y install docker-io
-
Untuk memulai daemon Docker, aktifkan
service
:sudo service docker start
-
Jika Anda ingin daemon Docker dimulai saat boot, jalankan perintah berikut:
sudo chkconfig docker on
-
Untuk memverifikasi bahwa penginstalan telah berhasil diselesaikan, luncurkan contoh container Fedora. Perintah ini akan secara otomatis mengambil gambar yang hilang, menjalankan wadah, dan menyediakan sesi bash interaktif:
sudo docker run -i -t fedora /bin/bash
-
Untuk keluar dari container, ketik
exit
.
Apa yang Dapat Saya Lakukan dengan Docker?
Docker memungkinkan pengguna untuk mengemas aplikasi dan konfigurasi mereka ke dalam gambar yang ringan untuk diterapkan sebagai wadah portabel.
Halo Dunia
Untuk menjalankan container Docker yang mencetak “hello world”, jalankan perintah berikut:
docker run ubuntu /bin/echo hello world
Seharusnya mengembalikan hello world
.
Ini memberitahu Docker untuk melakukan beberapa hal:
- Jika gambar (Ubuntu) belum ada secara lokal, unduh dari Indeks Docker.
- Buat wadah baru dengan gambar dasar Ubuntu dengan sistem file baca-tulis dan antarmuka jaringan.
- Alokasikan alamat IP ke penampung; siapkan NAT untuk meneruskan lalu lintas ke dan dari penampung.
- Jalankan perintah
/bin/echo hello world
, dan cetak hasilnya. - Setelah menyelesaikan proses utama, container akan keluar.
Menulis Dockerfile untuk Nginx
Saat membangun gambar, Docker mengikuti instruksi yang diatur dalam file bernama Dockerfile
. Perhatikan bahwa file harus diberi nama Dockerfile
dan semua file atau folder yang diperlukan oleh Dockerfile harus berada di bawah direktori yang sama dengan Dockerfile
sendiri.
Menjalankan program seperti echo
dalam wadah Docker cukup sederhana. Namun, untuk program yang bertindak sebagai server, seperti Nginx, Anda perlu memastikan bahwa program tersebut dikonfigurasi untuk tidak melakukan daemonisasi sendiri.
Ini adalah contoh Dockerfile untuk Nginx:
FROM ubuntu:12.04
MAINTAINER Jon Chen "[email protected]"
RUN echo "deb http://archive.ubuntu.com/ubuntu precise main universe" > /etc/apt/sources.list
RUN apt-get update
RUN apt-get install -y nginx
RUN echo "\ndaemon off;" >> /etc/nginx/nginx.conf
VOLUME /etc/nginx/sites-enabled
VOLUME /var/log/nginx
EXPOSE 80
CMD ["nginx"]
Sintaks Dockerfile terlihat seperti ini:
# Comment
INSTRUCTION arguments
Docker menjalankan instruksi Dockerfile dari atas ke bawah secara berurutan. Instruksi pertama harus menjadi FROM
, yang menentukan gambar dasar tempat Anda ingin membuat gambar baru:
FROM ubuntu:12.04
Ini menetapkan gambar resmi Ubuntu 12.04 sebagai gambar dasar. Anda juga ingin menggunakan instruksi MAINTAINER untuk menentukan pembuat gambar:
MAINTAINER Jon Chen "[email protected]"
Selanjutnya, tombol RUN
instruksi akan mengeksekusi perintah pada gambar, dan mengkomit hasilnya. Setiap komit disimpan dan digunakan untuk instruksi berikutnya. Misalnya, RUN
. ini baris menggantikan isi /etc/apt/sources.list
dalam gambar dengan deb http://archive.ubuntu.com/ubuntu precise main universe
:
RUN echo "deb http://archive.ubuntu.com/ubuntu precise main universe" > /etc/apt/sources.list
Hal penting yang harus diingat untuk program seperti Nginx adalah memastikan bahwa program tidak berjalan sebagai daemon. Perilaku default Nginx sebagai daemon adalah memotong proses pekerja, lalu keluar dari proses master. Karena Docker hanya mengawasi PID untuk proses asli, wadah akan berhenti sebelum waktunya alih-alih berjalan terus-menerus. Untuk menonaktifkan daemonisasi, tambahkan arahan konfigurasi thedaemon off ke /etc/nginx/nginx.conf
:
RUN echo "\ndaemon off;" >> /etc/nginx/nginx.conf
Untuk mengekspos port di dalam container ke luar container, gunakan instruksi EXPOSE:
EXPOSE 80
Instruksi CMD mendefinisikan perintah default untuk dijalankan saat container dimulai. Dalam contoh kami, kami ingin menjalankan Nginx:
CMD ["nginx"]
Secara default, container Docker tidak memiliki penyimpanan persisten. Untuk berbagi data antar container, gunakan fitur VOLUME:
VOLUME /etc/nginx/sites-enabled
VOLUME /var/log/nginx
Untuk memasang direktori dari host ke wadah, Anda perlu menentukan direktori host, direktori wadah yang sesuai, dan izin direktori di baris perintah saat Anda menjalankan wadah:
-v=[]: Create a bind mount with: [host-dir]:[container-dir]:[rw|ro].
If "host-dir" is missing, then docker creates a new volume.
Untuk membangun gambar ini, jalankan perintah berikut di direktori yang sama dengan file Docker. Anda juga dapat menentukan repositori dan tag untuk gambar Anda dengan -t repo/tag
:
docker build -t bsdlp/nginx .
Jalankan perintah berikut untuk menambahkan /etc/nginx/sites-enabled
dan /var/log/nginx
sebagai volume dari host ke container, jalankan container sebagai daemon, dan ekspos port 80 dari container sebagai port 80 di host:
docker run -d -p 80:80 -v /etc/nginx/sites-enabled:/etc/nginx/sites-enabled -v /var/log/nginx:/var/log/nginx bsdlp/nginx
Informasi Lebih Lanjut
Anda mungkin ingin berkonsultasi dengan sumber daya berikut untuk informasi tambahan tentang topik ini. Meskipun ini disediakan dengan harapan dapat bermanfaat, harap perhatikan bahwa kami tidak dapat menjamin keakuratan atau ketepatan waktu materi yang dihosting secara eksternal.
- Panduan Memulai Docker
- Docker di GitHub
- Indeks Gambar Docker Resmi