Skip to content

Latest commit

ย 

History

History
194 lines (121 loc) ยท 3.75 KB

docker.md

File metadata and controls

194 lines (121 loc) ยท 3.75 KB

docker

์ปจํ…Œ์ด๋„ˆ ๊ฐ€์ƒํ™”๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ์ˆ 


  • ์‹œ์ž‘ํ•˜๊ธฐ

    • image ๋‹ค์šด, ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰
    • docker container run -d -p 80:80 docker/getting-started
  • image ํ™•์ธํ•˜๊ธฐ

    • docker image ls
    • container ํ™•์ธ
      • docker container ls
      • docker ps
        • ์ž‘๋™ ์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ๋งŒ ๋ณด์—ฌ์คŒ
    • docker container ls -a
      • ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ ๋ณด์—ฌ์คŒ

Image

  • image ๋‹ค์šด๋กœ๋“œ
    • docker image pull <image ๋„ค์ž„>

Container

  • container ์‹คํ–‰ํ•˜๊ธฐ

  • docker container start <์ปจํ…Œ์ด๋„ˆ id>

    • container ์ค‘์ง€ํ•˜๊ธฐ

    • docker container stop <์ปจํ…Œ์ด๋„ˆ id>

    • container ์‚ญ์ œ

      • docker container rm <์ปจํ…Œ์ด๋„ˆ id>
  • ์ด๋ฏธ์ง€ ๋‹ค์šด & ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰

    • docker container run <image>

  • Ubuntu ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰
    • ํ„ฐ๋ฏธ๋„์„ ์ƒ์„ฑํ•ด์„œ ์šฐ๋ถ„ํˆฌ ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰
      • docker container run -it ubuntu:16.04 /bin/bash
    • ์ปจํ…Œ์ด๋„ˆ Stop์‹œ, ์ปจํ…Œ์ด๋„ˆ ์‚ญ์ œ ์˜ต์…˜๊นŒ์ง€ ์‹คํ–‰
      • docker container run --rm -it ubuntu:16.04 /bin/bash

  • MySQL ์‹คํ–‰

    • Mysql ์ปจํ…Œ์ด๋„ˆ run
      • docker container run -d -p 3306:3306 -e MYSQL_ALLOW_EMPTY_PASSWORD=true --name mysql mysql:5.7
        • -d = detached mode
        • -p = port forwarding
          • 3306(host) : 3306(container)
        • -e = environment
    • mysql ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰
      • docker container exec -it mysql /bin/bash
    • ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์˜ mysql ์‹คํ–‰
      • mysql -h127.0.0.1 -uroot -p
    • bash ์‰˜ ์‹คํ–‰ + mysql ์‹คํ–‰
      • docker container exec -it mysql /bin/bash -c mysql -h172.0.0.1 -uroot -p

  • ์ผ๊ด„์ ์ธ ์‚ญ์ œ ๋ฐฉ๋ฒ• (image, container, volume ๋“ฑ)
    • docker system prune
    • ์ปจํ…Œ์ด๋„ˆ ์‚ญ์ œ
      • docker container prune
    • ์ด๋ฏธ์ง€ ์‚ญ์ œ
      • docker image prune



volume mount ์ง€์ •

  • Volume mount ์ง€์ •

  • -v [Windows์˜ ๊ฒฝ๋กœ]:[Container์˜ ๊ฒฝ๋กœ]

    • ์˜ˆ) -v C:\Work\my_test:/mydata
    • docker run --volume D:\docker_volume:/var/lib/mysql -d -p 13306:3306 -e MYSQL_ALLOW_EMPTY_PASSWORD=true --name mysql mysql:5.7
  • Volume ํ™•์ธ

    • docker volume ls

docker image ํŒŒ์ผ ์ƒ์„ฑ

  • docker ํŒŒ์ผ ์ƒ์„ฑ

    FROM ubuntu:latest // base ํŒŒ์ผ ์ƒ์„ฑ
    
  • image ํŒŒ์ผ ์ƒ์„ฑ

    • docker image build --tag fromtest:1.0 .
    • = docker build -t <name>:<tag> .

CMD์™€ Entrypoint ์ฐจ์ด

๊ฒฐ๊ณผ ๊ฐ’์€ ๊ฐ™๋‹ค

  • CMD
    • ํŒŒ๋ผ๋ฏธํ„ฐ์— ์˜ํ•ด ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ๋Š” ๊ฐ€๋ณ€ ๋ฐ์ดํ„ฐ
  • Entrypoint
    • ๊ณ ์ •์ ์ธ ๊ฐ’์„ ๋„ฃ๊ณ  ์‹ถ์„ ๋•Œ

  • ํฌํŠธํฌ์›Œ๋”ฉ
    • inbound๋ฅผ ์˜คํ”ˆํ•œ๋‹ค
      • expose 8080
    • ๋‹ค๋ฅธ ์ปจํ…Œ์ด๋„ˆ์—์„œ ์ ‘์† ๋ฐฉ๋ฒ•(๋ฆฌ๋ˆ…์Šค)
      • curl -X GET http;//<์ฃผ์†Œ>
    • ์œˆ๋„์šฐ(ํ˜ธ์ŠคํŠธOS)์—์„œ ์ ‘์† ๋ฐฉ๋ฒ• (ํฌํŠธํฌ์›Œ๋”ฉ)
      • docker run -p 8080:8080 -d mynodejs



docker login

  • login
    • docker login
  • image ์—…๋กœ๋“œ
    • docker image push 1yangsh/mynodejs:1.0

docker network

  • docker network ls

    • ๋„คํŠธ์›Œํฌ ํ™•์ธ
  • docker network create <๋„คํŠธ์›Œํฌ ์ด๋ฆ„>

    • ๋„คํŠธ์›Œํฌ ์ƒ์„ฑ
  • docker network connect <๋„คํŠธ์›Œํฌ ์ด๋ฆ„> <์ปจํ…Œ์ด๋„ˆ id>

    • ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํ•ด๋‹น ๋„คํŠธ์›Œํฌ์— ์—ฐ๊ฒฐ
  • docker network inspect <๋„คํŠธ์›Œํฌ>

    • ๋„คํŠธ์›Œํฌ ์ •๋ณด ํ™•์ธ

์˜ˆ) 
1. ์ปจํ…Œ์ด๋„ˆ 2๊ฐœ ์‹คํ–‰ / ๊ฐ™์€ ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ
	- mysql
	- mynode
2. mynode์—์„œ mysql์„ ping ํ…Œ์ŠคํŠธ
	- docker -it [container_id] /bin/sh
    - ping 172.17.0.2
    - ping mysql
   
  • mysql ์‹คํ–‰
    • docker run -d -p 13306:3306 --network my-network --name mysql_server 1yangsh/mymysql:latest
  • django ์‹คํ–‰
    • docker run -d -p 8000:8000 --network my-network --name mybookmark_app 1yangsh/mydjango:latest