kenu
47k
2018-07-24 08:07:25 작성 2019-01-24 14:00:57 수정됨
11
4200

Docker 시작하기


내용은 계속 추가할 것입니다. https://okdevtv.com/mib/docker

Docker

  • http://docker.io
  • Build, Ship, Run
  • 개발자와 시스템어드민을 위한 분산 애플리케이션용 오픈 플랫폼

Install

  • Docker.dmg 엔진 다운받아 복사 후 실행

Basic keywords

docker ps
docker info
docker images
docker version
  • Docker Toolbox 다운로드
  • https://www.docker.com/products/docker-toolbox
  • docker quick start terminal 실행
  • docker run hello-world
    • docker : 시스템에 있는 docker 사용
    • run : 서브명령, 컨테이너 실행
    • hello-world : 컨테이너에 실을 이미지 이름
  • 컨테이너는 아무것도 꾸미지 않은 버전의 리눅스 운영체제
  • 고래가라사대
    • docker hub 이미지 정보
      • 포함한 소프트웨어 종류와 사용법
    • 우분투 OS
  • docker run -d -p 80:80 --name webserver nginx
  • stop
    ➜  ~ docker ps
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                         NAMES
    92d58318f84e        nginx               "nginx -g 'daemon off"   27 hours ago        Up 27 hours         0.0.0.0:80->80/tcp, 443/tcp   webserver
    0235bd537f03        nginx               "nginx -g 'daemon off"   27 hours ago        Up 27 hours         80/tcp, 443/tcp               boring_hypatia
    ➜  ~ docker stop nginx
    Error response from daemon: No such container: nginx
    ➜  ~ docker stop 92d58318f84e
    92d58318f84e
    

이미지 불러오기

  • docker pull imagename

이미지 만들기

# Use an official Python runtime as a parent image
FROM python:2.7-slim

# Set the working directory to /app
WORKDIR /app

# Copy the current directory contents into the container at /app
ADD . /app

# Install any needed packages specified in requirements.txt
RUN pip install --trusted-host pypi.python.org -r requirements.txt

# Make port 80 available to the world outside this container
EXPOSE 80

# Define environment variable
ENV NAME World

# Run app.py when the container launches
CMD ["python", "app.py"]
  • requirements.txt
Flask
Redis
  • app.py
from flask import Flask
from redis import Redis, RedisError
import os
import socket

# Connect to Redis
redis = Redis(host="redis", db=0, socket_connect_timeout=2, socket_timeout=2)

app = Flask(__name__)

@app.route("/")
def hello():
    try:
        visits = redis.incr("counter")
    except RedisError:
        visits = "<i>cannot connect to Redis, counter disabled</i>"

    html = "<h3>Hello {name}!</h3>" \
           "<b>Hostname:</b> {hostname}<br/>" \
           "<b>Visits:</b> {visits}"
    return html.format(name=os.getenv("NAME", "world"), hostname=socket.gethostname(), visits=visits)

if __name__ == "__main__":
    app.run(host='0.0.0.0', port=80)
  • docker build -t friendlyhello .
  • docker run -p 4000:80 friendlyhello
  • curl localhost:4000
  • docker tag friendlyhello kenu/get-started:part2

이미지 업로드

  • docker login
  • docker push kenu/get-started:part2

원격 이미지 로컬에서 실행

  • docker run -p 4000:80 kenu/get-started:part2
  • curl localhost:4000

네트워크

참고

docker ps
docker images
docker images ubuntu
docker run -i -t ubuntu:12.10 /bin/bash

ps faxw
ls
rm -rf /var /usr /lib
ls /var
exit

ssh dockerdev
sudo -s
docker ps
docker diff 7b882b11bc8e
docker commit 7b882b11bc8e shykes/broken-ubuntu
docker run -i -t shykes/broken-ubuntu /bin/bash

docker push shykes/broken-ubuntu
https://index.docker.io

ref


    3
    6
    • 댓글 11

    • 열공모드
      1k
      2018-07-24 08:08:21

      잘 보고 갑니다. 

      0
    • kenu
      47k
      2018-07-24 11:57:01

      오늘 밤 9시 관련해서 방송합니다.

      https://www.youtube.com/kenuheo/live


      0
    • ilcake
      1k
      2018-07-24 11:57:04

      감사합니다. !!  

      0
    • 제타건담
      6k
      2018-07-24 15:35:04

      docker 를 개인 개발환경에 적용해서 사용하는 개발자 입장에서 말씀드리면..

      docker 배워두시면 정말 좋다고 생각합니다..

      저는 Windows 10에 docker for windows 설치해서 사용중인데요..

      서버 프로그램들(ex : Wildfly, Tomcat, Oracle 등)을 제가 개인적으로 만든 docker image 들을 docker에서 사용하며 연동해서 개발하고 있습니다..

      이것도 깊게 들어가면 끝이 없는 공부지만..기본적인 것은 금방 할 수 있구요..

      Linux 운영환경을 만들어서 테스트 하기에도 가볍고 좋습니다..

      1
    • kenu
      47k
      2018-07-24 21:30:06

      https://www.infoq.com/presentations/synolia-docker-adoption?utm_source=infoq&utm_medium=videos_homepage&utm_campaign=videos_row2

      0
    • kenu
      47k
      2018-07-24 21:50:11


      0
    • kenu
      47k
      2018-07-25 12:08:08

      0원 전자책, 모두의 Docker

      http://www.realhanbit.co.kr/books/226

      3
    • kjs
      44
      2018-08-03 13:46:22

      도커 공부중이였는데 감사합니다

      0
    • kenu
      47k
      2018-08-03 13:56:56

      http://pyrasis.com/book/DockerForTheReallyImpatient/Chapter01

      1
    • videogirl0024
      225
      2018-08-03 19:04:01

      작년 말 부터 docker 로 local 환경 및 개발서버 구축해서

      jdk 버전별, php 버전별, db 별 이미지 만들어 dockerhub 에 올리고 docker-compose 를 이용해 팀에 배포하고 아주 잘 사용하다 최근 팀 Local 환경에서 Docker 를 뺐습니다. 


      초반에는 아주 잘 사용했고 편했는데  저 포함 특정 팀원들의 local 환경에서  수시로 BSoD 가 발생하더군요. 윈도우도 밀어보고  구글 찾아서 해결방법 다 적용해봐도 초반에는 괜찮다가 일정 시간이 지나면 BSoD가 발생....결국 Local 환경은 포기했습니다. 


      너무너무 편했는데 아쉽더라구요. 

      혹시 위와 같은 문제 해결하신 분 계신가요 ?

      Linux 에서는 아주아주 잘 돌아가는데 window 특정 컴터들에서만 발생하네요. 

      Hyper-V 쪽 문제라고는 하는데 방법은 없고...local 환경을 linux 로 가자니...힘들고..ㅠㅠ







      0
    • j2doll
      707
      2019-01-24 13:40:50

      docker push 하기 전에 docker login 과정을 추가 요청

      0
    • 로그인을 하시면 댓글을 등록할 수 있습니다.