á¡á¬ážáá¯á¶ážáááºá¹ááá¬áá«! áá°á·á¡ááœááº
á¡á
Docker ááẠáááŸáááá¯ááºáá±á¬ disk space 5 gigabytes á¡á¬ážáá¯á¶ážááᯠáááºážááá¯ááºáá¯á¶áá»á¬ážááŸáá·áº ááœááºááááºáá¬áá»á¬ážááŸáá·áºá¡áá° Digital Ocean ááœáẠ$24 ááŒáá·áºááŸá¬ážáááºážáá¬ážáá±á¬ Digital Ocean ááœáẠáá»áœááºá¯ááºááŸá¬ážáá¬ážáá±á¬á
ááºááᯠááá·áºááŸááºážáá±ážáá¯ááºáá±á
áẠááá¯ážááœá¬áá±á¬á
ááºáááºáá¬ááá±áááºážááœáẠá
áááºáá²á·áááºá á¡áá±á·á¡áá±á«á·ááŸá¬ á€áá¯ááºáá¯á¶áá»á¬ážááŸáá·áº ááœááºááááºáá¬áá»á¬ážá¡á¬ážáá¯á¶ážááẠáá¬áá®ááŒá
áºááŒá®ážá á
á¬ááŒáá·áºááá¯áẠááá¯á·ááá¯áẠáá°áá±á¬ááºáá
áºáá¯á áá¬ážááŸááºážá¡áá
áºááœááºááá¯ááºáž áá»áœááºá¯ááºáá¡ááºááºáá®áá±ážááŸááºážáá
áœááºážáá±á¬ááºáááºááᯠá
ááºážáááºáááºáᬠááá¯á¡ááºáá«áááºá shell scripts áá»á¬ážááá¯áá±ážááŒá®áž á¡ááŸáá¯ááºááŸááºážááẠcron á¡áá»áááºááá¬ážááá¯áááºáá®ážááẠááŒáá¯ážá
á¬ážáá²á·áá±á¬áºáááºážá áááºážááẠááá°áá®áá²á·áá«- áá»áœááºá¯ááºááá¬áá¬ááá
áºáá±áá¬ááœááºááᯠá
á¬ážáá¯á¶ážááŒá®áž áá¬áᬠ(á¡áá±á¬ááºážáá¯á¶áž) ááœá²áá±á¬ááºážáá»ááá·áºá¡áá»áááºááá¯ááºáž áááºážááẠáááœá²áááœá±áá¯ááºáá¯á¶ážááœá¬ážáá«áááºá áá
áºáá»áááºáá»áááºááœááºá ááœááºááááºáá¬áá
áºáá¯ááœáẠJenkins ááá¯áááºááá¯á·áá¯ááºáá±á¬ááºááááºááŸáá·áº áááºážááá¯á·áá±ážááá¯á·áá¬ážáá±á¬ docker daemon socket ááŸáá
áºááá·áº áááºáá±á¬ááºááá·áºááá¯ááºááá¯ááºážáá»á¬ážááᯠáááºáá®ážááá¯ááºáá¯á¶ááŸáá·áº áá»ááºááá¯ááºáá¯á¶á¡ááŒá±á¬ááºáž áá±á¬ááºážáá«ážáá
áºáá¯ááºááᯠáá»áœááºá¯ááºááœá±á·áá²á·ááááºá á¡áá¯ááºáá®áá¬ááᯠáá»áœááºáá±á¬áº ááá±á¬áá»áá«áááºá áá«áá±ááá·áº Docker áá²ááŸá¬ Docker ááᯠááá¯ááºááá¯áẠRun ááŒá®áž á
ááºážáááºááŒáá·áºááá¯á· áá¯á¶ážááŒááºááá¯ááºáááºá ááá¯á¡áá»áááºááœááºá Docker áá¯á¶áá»á¬ážááᯠáá±á«ááºážáá¯ááºáá¯ááºááŒá®áž á¡ááŒá¬ážááœááºááááºáá¬á¡ááœááºáž á
ááºážáááºáááºá¡ááœáẠááá¯á¡ááºáá±á¬ á¡ááá®áá±ážááŸááºážá¡á¬ážáá¯á¶ážá¡ááœáẠááœááºááááºáá¬áá»á¬ážááᯠáááºáá®ážááẠáá¯á¶ážá áá¯áá¹áááá»áá±á¬ ááŒá±ááŸááºážáá»ááºáá
áºáá¯áᯠáá»áœááºá¯ááºáááºáááẠ(áááºážááᯠá¡ááá·áºááŒáŸáá·áºáááºááá·áº ááœááºááááºáá¬áᯠááá¯ááŒáá«á
áá¯á·)á á¡áá¯ááºáá®áá¬ááŸá¬ -rm á¡áá¶ááŒáá·áº á
ááºáááºááœááºááááºáá¬áá
áºáá¯ááᯠá
áááºáááºááŒá
áºááŒá®áž áááºážááẠááœááºááááºáá¬áá
áºáá¯áá¯á¶ážááŸáá·áº áááºážáá¡ááŒá±á¬ááºážá¡áá¬á¡á¬ážáá¯á¶ážááᯠá¡ááá¯á¡áá»á±á¬áẠáá»ááºáá
áºáááºááŒá
áºáááºá áá»áœááºáá±á¬áº Docker ááá¯ááºááá¯ááºá Docker áá¯á¶áá²á· ááœá±ážáá²á·ááẠ(
áá±á·áá»áá·áºáááºá Cones
áá»áœááºá¯ááºááẠááá¯á¡ááºááá·áºáá¯á¶á á¶á¡ááá¯ááºáž ááœááºááááºáá¬ááᯠá¡áá¯ááºáá¯ááºá á±ááẠá áááºáá°ážáá¬ážááŒá®áž á ááºážáááºááŸá¯áá»á¬áž áááºáááºááŒá¯áá¯ááºáá²á·áᬠáá°ážáá®ážáá»á¬ážá áœá¬ááᯠááŒá áºáá±á«áºá á±áá²á·áááºá áá»áœááºá¯ááºááá¯ááºááá¯áẠááŸáááºá ááºááŒááºážá ááááºááŸá¬ á¡á±á¬ááºáá« algorithm ááŒá áºááẠá
-
áá»áœááºá¯ááºááá¯á·ááẠá¡ááŒááºá¡ááŸááºáá¯á¶á·ááŒááºááŸá¯áá¯ááºááœáẠDocker ááœááºááááºáá¬ááᯠá áááºáááºá
docker run --privileged -it docker:18.09.6
ááœááºááááºáá¬ááá¬ážááŸááºážááᯠá¡á¬áá¯á¶á áá¯ááºáá«á áá¬ááẠááá¯á·ááá¯áẠáááºááá¯á· ááŸááºážááŒá®áž áááºá DinD ááẠááœáŸá±ááá¯á¶áá®ážá¡ááŒá áºááá¯á· ááŒá±á¬ááºážáá²ááœá¬ážáááºá ááááºáá±á¬á·á áá¬ážááŸááºážá¡áá áºááœááºáá²á·á¡áá« áááŒá¬ááááá¯áááᯠáá»ááºááœá¬ážáááºáá«áááºá
á¡ááœá¶áá²ááᯠáá»ááºáá»ááºážáááºááááºá -
áááºááá·áºááœááºááááºáá¬áá»á¬áž áááºáááºáá±ááẠááᯠáá»áœááºá¯ááºááá¯á· ááŸá¬ááœá±ááẠááŒáá¯ážá á¬ážáá±áá«ááẠ(á¡ááŒá± - áááŸááá«)á ááá¯á·áá±á¬áº áááºááá¯á·áááºááŒá áºá á± á¡áááá·áºááᯠáá¯ááºáá±á¬ááºááŒáá«á áá¯á·á
docker ps
ááẠá¡áááºážááẠá¡á¶á·ááŒááœá¬ážáááá·áºáááºá ááá¯á·áá±á¬áº Docker daemon áááºááẠááááºáááºáá±á¬á·ááŒá±á¬ááºáž ááœá±á·ááá«áááºá
error during connect: Get http://docker:2375/v1.40/containers/json: dial tcp: lookup docker on 192.168.65.1:53: no such host
-
ááá¯ááºááá¯ááºáá¯ááºááŒáá·áºáá¡á±á¬ááºá
dockerd &
áá±á¬ááºááẠáááŸá áºááŒáá¯á·ááœáẠá¡á¶á·ááŒá áá¬
failed to start daemon: Error initializing network controller: error obtaining controller instance: failed to create NAT chain DOCKER: Iptables not found
-
iptables ááŸáá·áº bash áááºáá±á·áá»áºáá»á¬ážááᯠááá·áºááœááºážáá« (á¡áá¬á¡á¬ážáá¯á¶ážááẠsh ááẠbash ááœáẠá¡áá¯ááºáá¯ááºááááºááŸá¬ ááá¯áá¬áá¬áááº)á
apk add --no-cache iptables bash
-
Bash ááᯠá ááá¯ááºáá¡á±á¬ááºá áá±á¬ááºáá¯á¶ážáá±á¬á· áá«ááá¯ááºážááᯠá¡ááœá¶ááᯠááŒááºáá±á¬ááºáá±áá«ááŒá®á
-
Docker ááᯠááŒááºá ááŒáá·áºáá¡á±á¬ááºá
dockerd &
ááŸááºáá»á¬ážáá±á¬ ááŸááºáááºážá á¬ááœááºááᯠáá»áœááºá¯ááºááá¯á· ááŒááºááá·áºáááº-
INFO[2019-11-25T19:51:19.448080400Z] Daemon has completed initialization INFO[2019-11-25T19:51:19.474439300Z] API listen on /var/run/docker.sock
-
Enter ááŸáááºáá«á áá«ááá¯á· áá»á±á¬ááá¯ážááŒá®ážááŒá®á
ááá¯á¡áá»áááºááŸá á áá»áœááºá¯ááºááá¯á·á Docker ááœááºááááºáá¬á¡ááœááºáž á¡ááŒá¬ážááœááºááááºáá¬áá»á¬ážááᯠááœáá·áºáááºááŒáá¯ážá á¬ážááá¯ááºáá±á¬áºáááºáž áá»áœááºá¯ááºááá¯á·á Docker ááœááºááááºáá¬á¡ááœááºáž á¡ááŒá¬áž Docker ááœááºááááºáá¬ááᯠááœáá·áºááá¯áá«á ááá¯á·ááá¯áẠáá áºáá¯áá¯ááŸá¬ážááœááºážááœá¬ážááŒá®áž ááœááºááááºáá¬áá»ááºááœá¬ážáá«á áááºááá¯á·áá¯ááºáá±á¬ááºáááºáááºážá á¡á¬ážáá¯á¶ážááŒááºá áá«á
ááá¯ááºááá¯áẠDinD ááœááºááááºáá¬ááŸáá·áº á ááºážáááºááŸá¯á¡áá áºáá»á¬áž
á¡áááºáá«á¡ááá·áºáá»á¬ážááᯠáááºáá«áááºáá« áááºáá«áááºáá«ááá¯ááºá
á±áááºá áá»áœááºá¯ááºááẠááá¯ááºááá¯áẠDinD ááœááºááááºáá¬ááᯠáááºáá®ážáá²á·áááº-
á¡áá¯ááºáá¯ááºáá±á¬ DinD ááŒá±ááŸááºážáá»ááºááẠáá»áœááºá¯ááºá¡á¬áž Docker á¡ááœááºážááá¯á· Docker ááᯠááŒááºááŸáá·áºáᬠá
áœáá·áºá
á¬ážá
ááºážáááºááŸá¯áá»á¬áž ááŒá¯áá¯ááºááá¯ááºá
á±áá«áááºá
ááᯠMySQL ááŸáá·áº Nodejs ááá¯á¡áá¯á¶ážááŒá¯ááŒááºáž (á¡á±á¬ááºááŒááºáá±á¬) á
ááºážáááºáá»ááºáá
áºáá¯ááᯠáá±á¬áºááŒáá«áááºá
á
áááºáááŸááºááá¯ááºáá¯á¶ážáá±á¬ áá°ááẠá€áá±áá¬á áááºááá¯á·ááŸááá²á·áááºááᯠááŒááºááá¯ááºáááºá
start ááŒáá«á áá¯á·:
-
áá»áœááºá¯ááºááá¯á·ááẠá¡ááŒááºá¡ááŸááºáá¯á¶á·ááŒááºááŸá¯áá¯ááºááœáẠDinD ááá¯ááœáá·áºáááºá DinD á á€áá¬ážááŸááºážááœááºá áá»áœááºá¯ááºááá¯á·ááẠáá»áœááºá¯ááºááá¯á·á ááá±ážááœááºááááºáá¬áá»á¬áž á¡áá¯á¶ážááŒá¯ááá¯ááºááá·áº ááááºáááºážáá»á¬ážá¡á¬ážáá¯á¶ážááᯠááá¯ááºááá¯ááºááŒá±áá¯á¶ááœá²ááẠááá¯á¡ááºáá«ááẠ(áá»áœááºá¯ááºááẠáááºážááᯠáá¯ááºáá±á¬ááºáá±ááŒá®ážááŒá áºáááº)
docker run --privileged -it -p 80:8080 -p 3306:3306 alekslitvinenk/dind
áá»áœááºá¯ááºááá¯á·ááẠááá±ážááœááºááááºáá¬áá»á¬ážááᯠáá»ááºáá»ááºážá áááºááá¯ááºááá·áºáá±áá¬á០bash ááá¯á· áá±á¬ááºáá«áááºá
-
MySQL ááá¯ááœáá·áºáá«-
docker run --name mysql -e MYSQL_ROOT_PASSWORD=strongpassword -d -p 3306:3306 mysql
-
áá±áá¬áá±á·á áºááá¯á· áá»áœááºá¯ááºááá¯á·ááẠáááºážááᯠááŒááºááœááºážá áá»áááºáááºáá¬ážááá²á·ááá¯á· áá»áœááºá¯ááºááá¯á·ááẠáá±áá¬áá±á·á áºááá¯á· áá»áááºáááºáááºá á¡á¬ážáá¯á¶ážá¡áááºááŒá±áá«á á±á
-
áá¯áááááœááºááááºáá¬ááᯠá áááºáá«á
docker run -d --rm -p 8080:8080 alekslitvinenk/hello-world-nodejs-server
port mapping ááẠá¡ááá¡áá»ááŒá áºáááºááᯠáááááŒá¯áá«á 8080:8080áá»áœááºá¯ááºááá¯á·ááẠport 80 ááᯠhost á០parent container ááá¯á· port 8080 ááá¯á· ááŒá±áá¯á¶ááœá²áá¬ážááŒá®ážááŒá áºáááºá
-
áá»áœááºá¯ááºááá¯á·ááẠááá±á¬ááºáá¬ááŸá localhost ááá¯á·ááœá¬ážáááºá áá¬áá¬ááẠâHello World!â áá¯áá¯á¶á·ááŒááºááŒá±á¬ááºážáá±áá»á¬áá«á á±á
áá»áœááºá¯ááºáááá á¹á ááœááºá nested Docker containers ááŸáá·áºá ááºážáááºááŸá¯áááºá¡áá±á¬áºáá±ážá¡ááŒá¯ááá±á¬ááŒá áºáá¬ááŒá®ážááá±á¬áá»ááºááá¯áááºáááºáááºáá±á¬ááºááŒá®ážá¡ááá·áºááŒáŸáá·áºáááºáááºá¡ááœááºá¡áá¯á¶ážááŒá¯áá«áááºá áá«á Kubernetes áá²á· Jenkins X ááẠá¡áá»á¬ážááŒá®áž ááá¯áá±á«á·áá«ážáá²á· ááŒá±ááŸááºážáá»ááºááá¯á· áá»áœááºáá±á¬áºáááºáá«áááºá áá«áá±ááá·áº áá«á áá»áœááºáá±á¬á·áºáá²á· áá¯áá¹ááá¡ááŒááºáá«á
áá®áá±á·áá±á¬ááºážáá«ážá¡ááœáẠáá®áá±á¬ááºáá²áááºáá«áááºá áá±á¬ááºáá±á¬ááºážáá«ážááœáẠDocker ááœáẠDocker ááœáẠáááºáá«ááá²áá²áááºáááºááŒááºážááŸáá·áº nested containers áá»á¬ážá¡ááœááºáž áááºááŸáá¯ááºážáá±á¬ mounting directory áá»á¬ážááŸáá·áº áá±á¬ááºáááºá¡áá±ážá áááºá ááºážáááºááŸá¯áá»á¬ážááᯠáá»áœááºá¯ááºáá±á¬áºááŒáá«áááºá
PS á€ááá±á¬áá»ááºááẠá¡áá¯á¶ážáááºáááºáᯠáááºááœá±á·ááŸááá«á GitHub ááœáẠááŒááºáá áºááœáá·áºáá±ážá áááºážááᯠáááºážááœá²ááŒá®áž ááá·áºáá°áááºáá»ááºážáá»á¬ážááᯠááŒá±á¬ááŒáá«á
áááºážááŒááºááẠá áá®áá®ááᯠ2 áá¯ááᯠá¡á¬áá¯á¶á áá¯ááºááŒá®áž á¡ááŸá¬ážáá»á¬ážááᯠááŒááºáááºáá¬ážáááºá
source: www.habr.com