Skip to content

Instantly share code, notes, and snippets.

@samsulmaarif
Last active December 12, 2019 10:34
Show Gist options
  • Save samsulmaarif/fc7e9fbce9208451d9089f0988630cee to your computer and use it in GitHub Desktop.
Save samsulmaarif/fc7e9fbce9208451d9089f0988630cee to your computer and use it in GitHub Desktop.
LAB Docker Class Malang, Sabtu-Minggu, 23-24 Maret 2019 @ DOT Malang
### Requirement ###
- buat akun di hub.docker.com
- What & Why Docker ?
- presentasi dengan salindia atau
- pinehead press
- Container Concept
- Linux Namespaces (s.id/pinehead)
SSID : DOT Hotspot
user : guest
password : guest
http://10.30.30.35:8000/notes.txt
bit.ly/dockerclassday1
hub.docker.com
## Perkenalan
- nama
- asal kota
- pekerjaan
- motivasi
s.id/pinehead
alamat email : mail@samsul.web.id
1- Ahmad Aji Santoso
2- Aurellesia Warsito
3- Supriyono
4- Anggara Mahendra Putra
5- abd. jahiduddin
6- Darian Rizaludin
7- Azzam Fathi
8- Al Wildan
9- Titus Tri
10- Wildan Kafie
11- Muhammad Maftuch
terminal :
cat ~/.ssh/id_rsa.pub
putty + puttygen
ssh-keygen -t rsa
##### LAB1 chroot #####
###ganti hostname [username]-node0 [username]-node1
#### akses ke LAB
[nama]-node0
[nama]-node1
hostnamectl set-hostname [nama]-node0
nano /etc/hosts
127.0.0.1 [nama]-node0
ping -c3 google.com
ping -c3 192.168.28.7
## buat direktori
mkdir -p /var/jail/{dev,etc,lib,lib64,usr,bin}
mkdir -p /var/jail/usr/bin
chown root.root /var/jail
## buat /dev/null dengan perintah
mknod -m 666 /var/jail/dev/null c 1 3
cd /var/jail/etc
cp /etc/ld.so.cache .
cp /etc/ld.so.conf .
cp /etc/nsswitch.conf .
cp /etc/hosts .
cd /var/jail/bin
cp /bin/ls .
cp /bin/bash .
ldd /bin/ls
cd /sbin
wget -O l2chroot http://www.cyberciti.biz/files/lighttpd/l2chroot.txt
chmod +x l2chroot
nano l2chroot
# ubah BASE="/webroot" ke BASE="/var/jail"
l2chroot /bin/ls
l2chroot /bin/bash
chroot /var/jail
ls
pwd
cp
## exit dengan mengetikkan exit
exit
cd /var/jail
ls
cd bin
ls
which pwd
cp /bin/pwd .
which curl
cp /usr/bin/curl .
ldd /bin/pwd
ldd /usr/bin/curl
l2chroot /bin/pwd
l2chroot /usr/bin/curl
chroot /var/jail
### LAB2 Dockerfile ###
sudo -i
apt -y install docker.io
systemctl status docker
docker version
docker info
docker run hello-world
docker image ls
docker container ls -a
https://hub.docker.com
docker run docker/whalesay cowsay namaanda
docker image ls
docker container ls -a
mkdir /latihan1
cd /latihan1
vim Dockerfile
FROM docker/whalesay:latest
MAINTAINER Samsul Maarif <samsul@dot-indonesia.com>
RUN apt -y update && apt install -y fortunes
CMD /usr/games/fortune -a | cowsay
docker build -t [username]/docker-whale .
docker image ls
docker run [username]/docker-whale
docker login
docker push samsulmaarif/docker-whale
docker pull [username]/[nama-image]
docker rmi [nama-image]
## tambahkan tag
docker build -t [username]/docker-whale:v1 .
docker push samsulmaarif/docker-whale:v1
##### LAB3 Docker Compose #####
curl -L https://github.com/docker/compose/releases/download/1.24.0-rc3/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version
mkdir -p /latihan3/compose
cd /latihan3/compose
https://s.id/lab3-docker-class
for t in $(docker ps -q); do docker rm $t; done
docker-compose up
buka browser http://[ip-public]:5000
docker image ls
docker-compose ps
docker inspect [ontainer id]
docker-compose down
vim docker-compose.yml
tambahkan di bawah ports
volumes:
- .:/code
docker-compose up -d
vim app.py
edit pesan
return 'Hello from [Nama Anda]! I have been seen {} times.\n'.format(count)
docker-compose up -d
docker-compose run web env
docker-compose stop
docker-compose down --volumes
### Docker Volume
docker volume create my-vol
docker volume ls
docker volume inspect my-vol
docker run -d --name=nginxtest -p 7890:80 -v my-vol:/usr/share/nginx/html nginx:latest
docker inspect nginxtest | grep -i ipaddress
curl http://172.17.XXX.XXX
echo "This is from my-vol source directory." > index.html
mv index.html /var/lib/docker/volumes/my-vol/_data
curl http://172.17.XXX.XXX
docker run -d --name=nginxtest-rovol -p 7891:80 -v my-vol:/usr/share/nginx/html:ro nginx:latest
##### DAY 2 ######
bit.ly/dockerclassday2
### Docker Volume Driver
# buat ssh key di node0 dengan user root
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub
copy -> paste ke node1 user root juga
nano ~/.ssh/authorized_keys
# pastikan user root dapat ssh dari node0 ke node1 user root dengan ip private
ssh -l root 192.168.28.Y
# SSH ke node1. Buat folder /share dan exit kembali
ssh -l root 192.168.28.Y
mkdir /share
chmod 777 /share
exit
# Instal plugin sshfs
docker plugin install --grant-all-permissions vieux/sshfs
docker plugin ls
docker plugin disable [PLUDIN ID]
docker plugin set vieux/sshfs sshkey.source=/root/.ssh/
docker plugin enable [PLUDIN ID]
docker plugin ls
# Membuat volume dengan driver sshfs
docker volume create --driver vieux/sshfs -o sshcmd=root@192.168.28.Y:/share -o allow_other sshvolume
# Uji jalankan container dengan volume
docker run -d --name=nginxtest-ssh -p 8090:80 -v sshvolume:/usr/share/nginx/html nginx:latest
# SSH ke node1.
ssh -l root 192.168.28.Y
sh -c "echo 'Hello, I am [username]' > /share/index.html"
cat /share/index.html
exit
# Eksekusi di node0
docker ps
curl http://[ip-publik]:8090
##### LAB 4 Docker Machine #####
##requirement VirtualBox (eksekusi jika menggunakan Ubuntu 16.04)
apt update
apt install dkms python -y
wget https://download.virtualbox.org/virtualbox/6.0.4/VirtualBox-6.0.4-128413-Linux_amd64.run
chmod +x VirtualBox-6.0.4-128413-Linux_amd64.run
./VirtualBox-6.0.4-128413-Linux_amd64.run
wget https://download.virtualbox.org/virtualbox/6.0.4/Oracle_VM_VirtualBox_Extension_Pack-6.0.4.vbox-extpack
vboxmanage extpack install Oracle_VM_VirtualBox_Extension_Pack-6.0.4.vbox-extpack
vboxmanage natnetwork add --netname nat1 --enable --dhcp on --network 10.X.X.0/24
vboxconfig
###Install Docker Machine
base=https://github.com/docker/machine/releases/download/v0.16.0 &&
curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/tmp/docker-machine &&
sudo install /tmp/docker-machine /usr/local/bin/docker-machine
docker-machine create --driver virtualbox [name]
docker-machine ls
docker-machine env [name]
eval "$(docker-machine env [name])"
docker-machine stop [name]
docker-machine rm [name]
## privision banyak VM Docker ready
for x in {0..2}; do docker-machine create class-$x; done
###CLOUD
##DO
docker-machine create --driver digitalocean --digitalocean-access-token [token-digital-ocean] docker-sandbox
##AWS
docker-machine create --driver amazonec2 --amazonec2-access-key AKI******* --amazonec2-secret-key 8T93C******* aws-sandbox
##GCP
https://cloud.google.com/compute/docs/projects
gcloud auth login
https://console.cloud.google.com/apis/credentials/serviceaccountkey
export GOOGLE_APPLICATION_CREDENTIALS=$HOME/gce-credentials.json
docker-machine create --driver google --google-project PROJECT_ID vm01
docker-machine create --driver google \
--google-project PROJECT_ID \
--google-zone us-central1-a \
--google-machine-type f1-micro \
vm02
gcloud compute images list --uri
gcloud compute images list
https://docs.docker.com/machine/drivers/
##### LAB 5 Docker Swarm #####
ip addr
docker swarm init --advertise-addr [node_private_ip_address]
### eksekusi di worker (node1)
apt install docker.io
docker swarm join --token [your_swarm_token] [manager_node_ip_address]:2377
exit
##kembali ke manager
docker node ls
docker node --help
docker node inspect self --pretty
docker node inspect [hostname-worker] --pretty
###promote demote
docker node promote [name-node]
docker node demote [name-node-leader]
###portainer
curl -L https://downloads.portainer.io/portainer-agent-stack.yml -o portainer-agent-stack.yml
docker stack deploy --compose-file=portainer-agent-stack.yml portainer
docker stack ls
docker stack services portainer
akses http://[ip_manager]:9000
setup user & password
###running service
docker service create -p 8090:80 --name webserver nginx
docker service ls
docker service ps webserver
##scaling
docker service scale webserver=10
docker service ps webserver
###deploy moodle di docker swarm
mkdir moodle && cd moodle
curl -L https://gist.github.com/samsulmaarif/c7f933dcbb8e5387f82b65eb45702fec/raw/4d59c37d5b3b2e518d5aa4bf69998800beefedea/moodle-docker-compose.yml -o moodle-docker-compose.yml
docker stack deploy --compose-file=moodle-docker-compose.yml moodle
http://blog.adnansiddiqi.me/create-your-first-php-mysql-application-in-docker/
Lowongan di CloudKilat :
- SysAdmin
- Go/Flutter Developer
- IT Pre Sales
apply to hrd@isi.co.id
mail@samsul.web.id
Lowongan di DOT Indonesia:
- UI Designer
- Backend Engineer
- Senior Project Manager
- Intermediate/Senior Frontend
- Chatbot Engineer
Apply your CV to : hrd@dot.co.id
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment