Last active
December 12, 2019 10:34
-
-
Save samsulmaarif/fc7e9fbce9208451d9089f0988630cee to your computer and use it in GitHub Desktop.
LAB Docker Class Malang, Sabtu-Minggu, 23-24 Maret 2019 @ DOT Malang
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
### 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