SlideShare uma empresa Scribd logo
1 de 15
Baixar para ler offline
1 st time - องอาจ วิสาลพัธน์
1st time
O n g a r t V I s a r n p a t
1 st time - องอาจ วิสาลพัธน์
Ongart Visarnpat (pAt)
#มันก็จะเป็ดๆหน่อย
Digital Media | Flash Animator | E-Learning | Web Designer | Social Media |
Project Manager | Front End Developer | Joomla | Ubuntu Linux
System Administrator, Webmaster @ EGAT
Digital Project Manager @ Wunderman (Y&R)
Digital Media Designer @ GeneEd (inVentiv learning solutions)
1 st time - องอาจ วิสาลพัธน์
L A M P !
Machine > OS > Library > Application > Configuration > Users > Monitor
1 2 3 4 5 6 7
1 st time - องอาจ วิสาลพัธน์
because it is ..
efficien(la)zy & cool !
Why ?
1 st time - องอาจ วิสาลพัธน์
Machine > OS > Library > Application > Configuration > Users > Monitor
1 2 3 4 5 6 7
efficiency เหนื่อยครั้งเดียว
consistency Dev ยังไง Prod. ยังงั้น
as-a-code Github, hub.docker
1 st time - องอาจ วิสาลพัธน์
ออกหา..ปลาวาฬ
+ Docker Channel
youtube.com/user/dockerrun
+ Docker Tutorial
youtube.com/playlist?list=PLkA60AVN3hh_6cA
z8TUGtkYbJSL2bdZ4h
1 st time - องอาจ วิสาลพัธน์
Image source : https://www.accenture.com/
Physical Virtual Machines
Sharing Physical
Manage by Hypervisor
Containers
Sharing OS
Manage by Docker-engine
Little bit about Architecture
1 st time - องอาจ วิสาลพัธน์
Little bit about Platform
WINDOWS 7 ?
Option 1 : Linux VM บน VirtualBox + Docker
Option 2 : Docker Toolbox (ถ้ายังมีให้โหลดอยู่นะ)
1 st time - องอาจ วิสาลพัธน์
Little bit about Command
docker run
docker start
docker stop
docker exec
docker logs
docker ps
docker images
docker rm
docker rmi
docker version
docker info
docker pull
docker commit
docker save
docker load
docker push
$ docker run --name garage_db -d 
-v /garage/db/mysql/:/var/lib/mysql/ 
-p 3306:3306 
--env MYSQL_ROOT_PASSWORD=p@ssW0rd 
--env MYSQL_USER=docker 
--env MYSQL_PASSWORD=docker 
--env MYSQL_DATABASE=db_dock 
mysql:5.7
$ docker run --name garage_web -tid 
--link garage_db:db 
-v /garage/htdocs/:/var/www/html/ 
-v /garage/log/:/var/log/apache2/ 
-v /garage/conf/:/etc/apache2/sites-available/ 
-v /garage/conf/ssl/:/etc/ssl/ 
-p 80:80 
-p 443:443 
egat-php7:latest
$ docker run --name garage_pma -d 
--link garage_db:db 
-p 8080:80 
phpmyadmin/phpmyadmin
ตัวอย่างคาสั่งและ parameter
$ docker run
-- name ตั้งชื่อ container
--link เชื่อมต่ออีก container
-d detached mode ทางานในแบบ background
-it เริ่มต้น service ข้างใน container แล้วคงไว้
-v map volume ระหว่าง container กับ host
-p map port ระหว่าง container กับ host
-- env ตั่งค่า environment ขึ้นอยู่กับแต่ละ service
1 st time - องอาจ วิสาลพัธน์
Little bit about Coding
version: "2"
services:
php:
build: ./build/php7
volumes:
- /garage/htdocs:/var/www/html
- /garage/log:/var/log/apache2
- /home/ongart/lamp/conf:/etc/apache2/
- /home/ongart/ssl:/etc/ssl
links:
- mysql
ports:
- 80:80
- 443:443
mysql:
image: mysql:5.7
container_name: mysql
volumes:
- ./build/mysql:/docker-entrypoint-
- /garage/db/mysql:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=password
FROM php:7.0-apache
MAINTAINER Ongart V.
RUN apt-get install libldap2-dev -y && 
rm -rf /var/lib/apt/lists/* && 
docker-php-ext-configure ldap --with-
libdir=lib/x86_64-linux-gnu/ && 
docker-php-ext-install ldap
RUN docker-php-ext-install mysqli pdo pdo_mysql
mbstring opcache soap zip xsl xml xmlrpc ctype
RUN curl -sS https://getcomposer.org/installer | php -- -
-install-dir=/usr/local/bin --filename=composer RUN rm -
r /var/lib/apt/lists/*
EXPOSE 80
LAMP stack -Sample บางส่วนPHP7.0 - Sample บางส่วน
Code สร้าง docker image
1 ไฟล์ 1 service
Code สร้าง service stack
1 ไฟล์สร้าง stack หลาย service
1 st time - องอาจ วิสาลพัธน์
Document Dir Layout
/garage/
./htdocs
./db
./mysql
./log
./conf
./ssl
./sqldump
Machine > OS > Deploy
1 2 3
Machine > OS > Library > Application > Configuration > Users > Monitor
1 2 3 4 5 6 7
------> DocumentRoot
---> Binary Database
-----------> logs
----------> *.conf
-----> Cert
------> *.sql
Little bit about Playing Around
1 st time - องอาจ วิสาลพัธน์
(option 1) Docker Compose (How it should be)
#!/bin/bash
# author: ongart v.
mkdir /garage
mkdir /garage/log
mkdir /garage/htdocs
mkdir /garage/db
mkdir /garage/db/mysql
mkdir /garage/conf
mkdir /garage/ssl
docker-compose -f 
/root/lamp-compose.yml 
up –d --build
Shell script location :
/root/lamp-deploy.sh
Compose file location :
/root/lamp-compose.yml
Document Dir Layout
/garage/
./htdocs
./db
./mysql
./log
./conf
./ssl
./sqldump
Dockerfile location :
/root/build/php7/Dockerfile
1 st time - องอาจ วิสาลพัธน์
docker run --name matrix_db -d 
-v /garage/db/mysql/:/var/lib/mysql/ 
-p 3306:3306 
--env MYSQL_ROOT_PASSWORD=p@ssW0rd 
--env MYSQL_USER=docker 
--env MYSQL_PASSWORD=docker 
--env MYSQL_DATABASE=db_dock 
mariadb:10.1
docker run --name matrix_web -tid 
--link matrix_db:db 
-v /etc/apache2/sites-available/:/etc/conf/ 
-v /garage/htdocs/:/var/www/html/ 
-v /garage/log/:/var/log/apache2/ 
-v /garage/ssl/:/etc/ssl/ 
-p 80:80 
-p 443:443 
egat-php7
docker run --name matrix_pma -d 
--link matrix_db:db 
-p 8080:80 
phpmyadmin/phpmyadmin
(option 2) Shell Script with Docker Command Only
#!/bin/bash
# author: ongart v.
mkdir /garage
mkdir /garage/log
mkdir /garage/htdocs
mkdir /garage/db
mkdir /garage/db/mysql
mkdir /garage/conf
mkdir /garage/conf/ssl
wget http://intranet/_docker/ 
build/php7/Dockerfile
docker build –t egat-php7 .
Shell script location :
/root/lamp-deploy.sh
Document Dir Layout
/garage/
./htdocs
./db
./mysql
./log
./conf
./ssl
./sqldump
# wget http://intranet/ 
_docker/sh/ 
deploy-lamp.sh
# chmod 700 deploy-lamp.sh
# ./deploy-lamp.sh
1 st time - องอาจ วิสาลพัธน์
docker run --name matrix_db -d 
-v /garage/db/mysql/:/var/lib/mysql/ 
-p 3306:3306 
--env MYSQL_ROOT_PASSWORD=p@ssW0rd 
--env MYSQL_USER=docker 
--env MYSQL_PASSWORD=docker 
--env MYSQL_DATABASE=db_dock 
mysql:5.7
docker run --name matrix_web -tid 
--link matrix_db:db 
-v /etc/apache2/sites-available/:/etc/conf/ 
-v /garage/htdocs/:/var/www/html/ 
-v /garage/log/:/var/log/apache2/ 
-v /garage/ssl/:/etc/ssl/ 
-p 80:80 
-p 443:443 
egat-php7:latest
docker run --name matrix_pma -d 
--link matrix_db:db 
-p 8080:80 
phpmyadmin/phpmyadmin:latest
(option 3) with load custom docker image
#!/bin/bash
# author: ongart v.
mkdir /garage
mkdir /garage/log
mkdir /garage/htdocs
mkdir /garage/htdocs/docker
mkdir /garage/db
mkdir /garage/db/mysql
mkdir /garage/conf
mkdir /garage/conf/ssl
chown docker:docker –R 
/garage/htdocs/docker
usermod –d 
/garage/htdoc/docker 
docker
wget http://intranet/_docker/ 
dock-img-php7.tar
docker load -i dock-img-php5.tar
wget http://intranet/_docker/ 
dock-img-db.tar
docker load -i dock-img-db.tar
wget http://intranet/_docker/ 
dock-img-pma.tar
docker load -i dock-img-pma.tar
Shell script location :
/root/lamp-deploy.sh
Document Dir Layout
/garage/
./htdocs
./db
./mysql
./log
./conf
./ssl
./sqldump
1 st time - องอาจ วิสาลพัธน์
T h a n k y o u ..

Mais conteúdo relacionado

Semelhante a Docker 1st time (18)

Proxy fc4 web
Proxy fc4 webProxy fc4 web
Proxy fc4 web
 
Linux diskless
Linux disklessLinux diskless
Linux diskless
 
Linux diskless
Linux disklessLinux diskless
Linux diskless
 
Ch15 elastic hosts-svradmin
Ch15 elastic hosts-svradminCh15 elastic hosts-svradmin
Ch15 elastic hosts-svradmin
 
Ch10 web servers
Ch10 web serversCh10 web servers
Ch10 web servers
 
Basic linux
Basic linuxBasic linux
Basic linux
 
Basic Linux
Basic LinuxBasic Linux
Basic Linux
 
Proposal
ProposalProposal
Proposal
 
Kafka for developer
Kafka for developerKafka for developer
Kafka for developer
 
Multi threaded programming in c and c++ 2021-09-03
Multi threaded programming in c and c++ 2021-09-03Multi threaded programming in c and c++ 2021-09-03
Multi threaded programming in c and c++ 2021-09-03
 
Ch05 name-services
Ch05 name-servicesCh05 name-services
Ch05 name-services
 
Ch06 bind9
Ch06 bind9Ch06 bind9
Ch06 bind9
 
Pligg - Installation
Pligg - InstallationPligg - Installation
Pligg - Installation
 
Python Programming for Lecturer_RUS_Nonthaburi 17may2019
Python Programming for Lecturer_RUS_Nonthaburi 17may2019Python Programming for Lecturer_RUS_Nonthaburi 17may2019
Python Programming for Lecturer_RUS_Nonthaburi 17may2019
 
IT Skills for Teacher path 2
IT Skills for Teacher path 2IT Skills for Teacher path 2
IT Skills for Teacher path 2
 
Joomla CMS
Joomla CMSJoomla CMS
Joomla CMS
 
คู่มือการติดตั้ง Cent os
คู่มือการติดตั้ง  Cent osคู่มือการติดตั้ง  Cent os
คู่มือการติดตั้ง Cent os
 
Exploiting WebApp Race Condition Vulnerability 101
Exploiting WebApp Race Condition Vulnerability 101Exploiting WebApp Race Condition Vulnerability 101
Exploiting WebApp Race Condition Vulnerability 101
 

Docker 1st time

  • 1. 1 st time - องอาจ วิสาลพัธน์ 1st time O n g a r t V I s a r n p a t
  • 2. 1 st time - องอาจ วิสาลพัธน์ Ongart Visarnpat (pAt) #มันก็จะเป็ดๆหน่อย Digital Media | Flash Animator | E-Learning | Web Designer | Social Media | Project Manager | Front End Developer | Joomla | Ubuntu Linux System Administrator, Webmaster @ EGAT Digital Project Manager @ Wunderman (Y&R) Digital Media Designer @ GeneEd (inVentiv learning solutions)
  • 3. 1 st time - องอาจ วิสาลพัธน์ L A M P ! Machine > OS > Library > Application > Configuration > Users > Monitor 1 2 3 4 5 6 7
  • 4. 1 st time - องอาจ วิสาลพัธน์ because it is .. efficien(la)zy & cool ! Why ?
  • 5. 1 st time - องอาจ วิสาลพัธน์ Machine > OS > Library > Application > Configuration > Users > Monitor 1 2 3 4 5 6 7 efficiency เหนื่อยครั้งเดียว consistency Dev ยังไง Prod. ยังงั้น as-a-code Github, hub.docker
  • 6. 1 st time - องอาจ วิสาลพัธน์ ออกหา..ปลาวาฬ + Docker Channel youtube.com/user/dockerrun + Docker Tutorial youtube.com/playlist?list=PLkA60AVN3hh_6cA z8TUGtkYbJSL2bdZ4h
  • 7. 1 st time - องอาจ วิสาลพัธน์ Image source : https://www.accenture.com/ Physical Virtual Machines Sharing Physical Manage by Hypervisor Containers Sharing OS Manage by Docker-engine Little bit about Architecture
  • 8. 1 st time - องอาจ วิสาลพัธน์ Little bit about Platform WINDOWS 7 ? Option 1 : Linux VM บน VirtualBox + Docker Option 2 : Docker Toolbox (ถ้ายังมีให้โหลดอยู่นะ)
  • 9. 1 st time - องอาจ วิสาลพัธน์ Little bit about Command docker run docker start docker stop docker exec docker logs docker ps docker images docker rm docker rmi docker version docker info docker pull docker commit docker save docker load docker push $ docker run --name garage_db -d -v /garage/db/mysql/:/var/lib/mysql/ -p 3306:3306 --env MYSQL_ROOT_PASSWORD=p@ssW0rd --env MYSQL_USER=docker --env MYSQL_PASSWORD=docker --env MYSQL_DATABASE=db_dock mysql:5.7 $ docker run --name garage_web -tid --link garage_db:db -v /garage/htdocs/:/var/www/html/ -v /garage/log/:/var/log/apache2/ -v /garage/conf/:/etc/apache2/sites-available/ -v /garage/conf/ssl/:/etc/ssl/ -p 80:80 -p 443:443 egat-php7:latest $ docker run --name garage_pma -d --link garage_db:db -p 8080:80 phpmyadmin/phpmyadmin ตัวอย่างคาสั่งและ parameter $ docker run -- name ตั้งชื่อ container --link เชื่อมต่ออีก container -d detached mode ทางานในแบบ background -it เริ่มต้น service ข้างใน container แล้วคงไว้ -v map volume ระหว่าง container กับ host -p map port ระหว่าง container กับ host -- env ตั่งค่า environment ขึ้นอยู่กับแต่ละ service
  • 10. 1 st time - องอาจ วิสาลพัธน์ Little bit about Coding version: "2" services: php: build: ./build/php7 volumes: - /garage/htdocs:/var/www/html - /garage/log:/var/log/apache2 - /home/ongart/lamp/conf:/etc/apache2/ - /home/ongart/ssl:/etc/ssl links: - mysql ports: - 80:80 - 443:443 mysql: image: mysql:5.7 container_name: mysql volumes: - ./build/mysql:/docker-entrypoint- - /garage/db/mysql:/var/lib/mysql environment: - MYSQL_ROOT_PASSWORD=password FROM php:7.0-apache MAINTAINER Ongart V. RUN apt-get install libldap2-dev -y && rm -rf /var/lib/apt/lists/* && docker-php-ext-configure ldap --with- libdir=lib/x86_64-linux-gnu/ && docker-php-ext-install ldap RUN docker-php-ext-install mysqli pdo pdo_mysql mbstring opcache soap zip xsl xml xmlrpc ctype RUN curl -sS https://getcomposer.org/installer | php -- - -install-dir=/usr/local/bin --filename=composer RUN rm - r /var/lib/apt/lists/* EXPOSE 80 LAMP stack -Sample บางส่วนPHP7.0 - Sample บางส่วน Code สร้าง docker image 1 ไฟล์ 1 service Code สร้าง service stack 1 ไฟล์สร้าง stack หลาย service
  • 11. 1 st time - องอาจ วิสาลพัธน์ Document Dir Layout /garage/ ./htdocs ./db ./mysql ./log ./conf ./ssl ./sqldump Machine > OS > Deploy 1 2 3 Machine > OS > Library > Application > Configuration > Users > Monitor 1 2 3 4 5 6 7 ------> DocumentRoot ---> Binary Database -----------> logs ----------> *.conf -----> Cert ------> *.sql Little bit about Playing Around
  • 12. 1 st time - องอาจ วิสาลพัธน์ (option 1) Docker Compose (How it should be) #!/bin/bash # author: ongart v. mkdir /garage mkdir /garage/log mkdir /garage/htdocs mkdir /garage/db mkdir /garage/db/mysql mkdir /garage/conf mkdir /garage/ssl docker-compose -f /root/lamp-compose.yml up –d --build Shell script location : /root/lamp-deploy.sh Compose file location : /root/lamp-compose.yml Document Dir Layout /garage/ ./htdocs ./db ./mysql ./log ./conf ./ssl ./sqldump Dockerfile location : /root/build/php7/Dockerfile
  • 13. 1 st time - องอาจ วิสาลพัธน์ docker run --name matrix_db -d -v /garage/db/mysql/:/var/lib/mysql/ -p 3306:3306 --env MYSQL_ROOT_PASSWORD=p@ssW0rd --env MYSQL_USER=docker --env MYSQL_PASSWORD=docker --env MYSQL_DATABASE=db_dock mariadb:10.1 docker run --name matrix_web -tid --link matrix_db:db -v /etc/apache2/sites-available/:/etc/conf/ -v /garage/htdocs/:/var/www/html/ -v /garage/log/:/var/log/apache2/ -v /garage/ssl/:/etc/ssl/ -p 80:80 -p 443:443 egat-php7 docker run --name matrix_pma -d --link matrix_db:db -p 8080:80 phpmyadmin/phpmyadmin (option 2) Shell Script with Docker Command Only #!/bin/bash # author: ongart v. mkdir /garage mkdir /garage/log mkdir /garage/htdocs mkdir /garage/db mkdir /garage/db/mysql mkdir /garage/conf mkdir /garage/conf/ssl wget http://intranet/_docker/ build/php7/Dockerfile docker build –t egat-php7 . Shell script location : /root/lamp-deploy.sh Document Dir Layout /garage/ ./htdocs ./db ./mysql ./log ./conf ./ssl ./sqldump # wget http://intranet/ _docker/sh/ deploy-lamp.sh # chmod 700 deploy-lamp.sh # ./deploy-lamp.sh
  • 14. 1 st time - องอาจ วิสาลพัธน์ docker run --name matrix_db -d -v /garage/db/mysql/:/var/lib/mysql/ -p 3306:3306 --env MYSQL_ROOT_PASSWORD=p@ssW0rd --env MYSQL_USER=docker --env MYSQL_PASSWORD=docker --env MYSQL_DATABASE=db_dock mysql:5.7 docker run --name matrix_web -tid --link matrix_db:db -v /etc/apache2/sites-available/:/etc/conf/ -v /garage/htdocs/:/var/www/html/ -v /garage/log/:/var/log/apache2/ -v /garage/ssl/:/etc/ssl/ -p 80:80 -p 443:443 egat-php7:latest docker run --name matrix_pma -d --link matrix_db:db -p 8080:80 phpmyadmin/phpmyadmin:latest (option 3) with load custom docker image #!/bin/bash # author: ongart v. mkdir /garage mkdir /garage/log mkdir /garage/htdocs mkdir /garage/htdocs/docker mkdir /garage/db mkdir /garage/db/mysql mkdir /garage/conf mkdir /garage/conf/ssl chown docker:docker –R /garage/htdocs/docker usermod –d /garage/htdoc/docker docker wget http://intranet/_docker/ dock-img-php7.tar docker load -i dock-img-php5.tar wget http://intranet/_docker/ dock-img-db.tar docker load -i dock-img-db.tar wget http://intranet/_docker/ dock-img-pma.tar docker load -i dock-img-pma.tar Shell script location : /root/lamp-deploy.sh Document Dir Layout /garage/ ./htdocs ./db ./mysql ./log ./conf ./ssl ./sqldump
  • 15. 1 st time - องอาจ วิสาลพัธน์ T h a n k y o u ..