Skip to content

jokopurwanto/docker-link

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 

Repository files navigation

Pengenalan Docker Link

Link

Docker mempunyai dua cara untuk menghubungkan antar container yang pertama melalui link dan yang kedua melalui network, pada pembahasan kali ini kita akan membahas mengenai link sedangkan untuk network akan dibuatkan pembahasannya secara terpisah.

Docker link adalah fitur koneksi dari docker yang digunakan untuk menghubungkan antar container. Link merupakan fitur lama yang saat ini mulai ditingalkan semenjak diperkenalkannya fitur network pada docker version 1.9.

LegacyLink

Docker sendiri menyarankan untuk mulai beralih menggunakan network karena ke depan fitur link akan di hapus dari docker, tetapi tidak ada salahnya kita belajar link untuk menambah pemahaman kita mengenai docker.

Jika kalian ingin mengetahui lebih lanjut mengenai link kalian bisa mengunjungi dokumentasinya di sini.

Cara Kerja Link

DockerLink

Ketika kita menggunakan link untuk menghubungkan container satu dengan container lain maka docker akan melakukan dua hal:

  1. Pertama docker akan melakukan set environment variables pada target container berdasarkan parameter --link. Tujuannya untuk mengekspos setiap environment variables yang berasal dari source container sebagai environment variables di target container. Contoh set environment variables dari redis sebagai berikut:

    • REDISDB_PORT=tcp://172.17.0.2:6379

      Docker membuat environment variables alias_PORT, variabel ini berisi URL port yang terekspos dari source container.

    • REDISDB_ENV_REDIS_VERSION=6.0.9

      Docker membuat environment variables alias_ENV_name, variabel ini berisi ver redis yang terekspos dari source container.

  2. Kedua docker akan melakukan update file hosts pada target container. Tujuannya untuk memetakan hostname ke IP address dengan memasukan tiga hostname yaitu original, alias dan hash_id. Contoh format update file hosts (IP_address alias hash_id original) sebagai berikut: 172.17.0.2 redisDB 78c26ae78e09 redis-server

Contoh Skenario Docker Link

SkenarioDockerLink

Pada skenario ini kita akan menggunakan base image redis, dari base image redis kita akan buat dua container. Satu container sebagai redis server dan satu container sebagai redis client. Redis client akan bertugas untuk memasukan data ke redis server sedangkan redis server bertugas untuk menampung data yang di masukan oleh redis client. Untuk koneksi antar container kita gunakan link sebagai penghubung.

Membuat Docker Container

Pertama buat container redis-server dengan menggunakan base image redis:6.0.9.

$ docker run -d --name redis-server redis:6.0.9

redis-server

  • -d digunakan untuk menjalankan container di mode detached (background).
  • --name digunakan untuk memberikan nama container redis-server.
  • redis:6.0.9 merupakan base image yang digunakan untuk membuat container.

Kemudian buat container redis-client dengan menggunakan base image redis:6.0.9.

$ docker run -d --name redis-client --link redis-server:redisDB redis:6.0.9

redis-client

  • -d digunakan untuk menjalankan container di mode detached (background).
  • --name digunakan untuk memberikan nama container redis-client.
  • --link digunakan untuk linking ke redis-server dengan memberikannya alias redisDB.
  • redis:6.0.9 merupakan base image yang digunakan untuk membuat container.

Pastikan semua container dalam kondisi aktif, untuk mengechecknya gunakan perintah berikut:

$ docker ps

docker-ps Semua container dalam status up yang artinya semua dalam kondisi aktif.

Test Linking Pada Redis Client

Masuk ke dalam container redis-client

$ docker exec -it redis-client /bin/bash

docker-exec

  • -it digunakan untuk masuk ke interactive mode.
  • redis-client merupakan nama container yang dijalankan.
  • /bin/bash digunakan untuk membuat bash session pada container redis-client.

Setelah menjalankan perintah tersebut kalian akan masuk dalam bash session dengan tampilan prompt sebagai berikut:

root@eb5c13c92285:/data#

docker-bash

Catatan:

  • Tanda $ menunjukan prompt dari host machine milik kita.
  • Tanda # menunjukan prompt dari container yang kita jalankan (redis-client).

Sesuai dengan cara kerja link, docker akan melakukan dua hal pertama akan melakukan set environment variables dan kedua akan melakukan update pada file hosts.

Periksa Environment Variables

Lakukan pengecekan environment variables pada container (redis-client) dengan menjalankan perintah berikut:

# env

docker-bash-env

Maka akan ditampilkan semua environment variables, terdapat environment variables yang di ekspos dari source container (redis-server) hasil dari proses linking.

Periksa File Hosts

Kemudian lakukan pengecekan file hosts dengan menjalankan perintah berikut:

# cat /etc/hosts

docker-bash-hosts

Maka akan ditampilkan pemetaan tiga hostname (original, alias dan hash_id) ke IP address.

Insert Data ke Container Redis Server

Pertama kita masuk ke redis server, melalui perintah berikut:

# redis-cli -h redisDB

docker-redis-cli

  • -h digunakan untuk merujuk ke hostname.
  • redisDB merupakan hostname yang tuju. Kita bisa menggunakan salah satu hostname karena hasil dari linking menghasilkan tiga hostname (original, alias dan hash_id).

Catatan:

  • Tanda $ menunjukan prompt dari host machine milik kita.
  • Tanda # menunjukan prompt dari container yang kita jalankan (redis-client).
  • Tanda > menunjukan prompt dari redis.

Kemudian lakukan test PING yang akan mendapatkan balasan PONG artinya redis berhasil dipasang dengan benar.

redisDB:6379> PING
PONG

docker-redis-cli-ping

Lakukan operasi menyimpan data dengan key name untuk menyimpan informasi data nama, lalu data tersebut di print untuk ditampilkan.

redisDB:6379> set name "Joko Purwanto"
redisDB:6379> get name 
"Joko Purwanto"

docker-redis-cli-set

Sampai di sini kita telah berhasil menggunakan link untuk menghubungkan source container sebagai redis server dengan target container sebagai redis client.