docker 10

[Docker] 14. Dockerfile 환경 및 네트워크 설정

Dockerfile안에서 애용할 수 있는 환경변수나 컨테이너 안에서의 작업 디렉토리를 지정할 수 있음. 환경변수 설정(ENV 명령) Dockerfile안에서 환경변수를 지정하고 싶을 때는 ENV 명령을 사용함. 명령은 아래 두가지 서식 중 하나로 사용 1. key value 형으로 지정하는 경우 ENV [key] [value] 단일 환경변수에 하나의 값을 설정함. 첫번째 공백 앞을 key로 설정하면 그 이후는 모두 문자열로서 취급함. 공백이나 따옴표와 같은 문자를 포함한 것도 문자로 취급함 ENV myName “yu” ENV yourName kyung min 이 경우 명령 별로 Docker 이미지를 만든다. 2. key=value 형으로 지정하는 경우 ENV [key]=[value] 한번에 여러 개의 값..

[Docker] 13. Dockerfile 명령 및 데몬 실행 (3)

시스템 콜 시그널의 설정(STOPSIGNAL) 컨테이너를 종료할 때 송신하는 시그널을 설정하려면 STOPSIGNAL 명령을 사용함. 구문은 아래와 같음 STOPSIGNAL [시그널] STOPSIGNAL명령에는 시그널 번호(9 등) 또는 시그널 명(SIGKILL 등)을 지정할 수 있음 컨테이너의 헬스 체크 명령(HEALTHCHECK) 컨테이너 안의 프로세스가 정상적으로 작동하고 있는 지를 체크하고 싶을 때는 HEALTHCHECK 명령을 사용함 HEALTHCHECK [옵션] CMD 실행할 명령 지정가능한 옵션 --interval=n : 헬스체크 간격(default: 30s) --timeout=n : 헬스체크 타임아웃(default: 30s) --retries=N : 타임 아웃 횟수(default: 3) HE..

[Docker] 12. Dockerfile 명령 및 데몬 실행 (2)

빌드 완료 후에 실행되는 명령(ONBUILD) ONBUILD 명령은 그 다음 빌드에서 실행할 명령을 이미지 안에 지정하기 위한 명령임 예를 들어 Dockerfile에 ONBUILD 명령을 사용하여 어떤 명령을 실행하도록 설정하여 이미지를 작성하고, 그 이미지를 다른 Dockerfile에서 베이스 이미지로 설정하여 빌드했을 때 ONBUILD 명령에서 지정한 명령을 실행시킬 수 있음 위와 같은 순서로 명령어가 사용됨 ONBUILD 명령을 통해 명령의 실행 타이밍을 늦출 수 있음 ONBUILD 명령의 구문은 다음과 같음 ONBUILD [실행하고 싶은 명령] ONBUID 명령은 자신의 Dockerfile로 부터 생성한 이미지를 베이스 이미지로 한 다른 Dockerfile을 빌드할 때 실행하고 싶은 명령을 기술함..

[Docker] 10. Dockerfile을 사용한 구성 관리

Dockerfile 이란? 이전에는 명령을 이용한Docker 이미지 작성을 했다면, Dockerfile을 이용하는 방법은 베이스가 되는 Docker 이미지를 바탕으로 Docker 컨테이너를 생성하고, 생성한 Docker 컨테이너 안에서 OS의 설정이나 미들웨어의 설치, 파라미터의 수정들을 수동으로 수행하고 만들어진 컨테이너에서 서버를 구축한 상태를 바탕으로 Docker 이미지를 생성함. 이를 위해서는 아래와 같은 정보를 인프라 설계서나 파라미터 시트 등에 별도로 남겨두어야 함 -베이스가 될 Docker이미지 -Docker 컨테이너 안에서 수행한 조작 명령 -환경변수 등의 설정 -Docker 컨테이너 안에서 작동시켜 둘 데몬 생성 Dockerfile은 이처럼 Docker 상에서 작동시킬 컨테이너의 구성 정..

[Docker] 6. Docker Container Run

컨테이너 생성 및 시작 : Docker 컨테이너의 생성 및 시 구문은 다음과 같음 docker container run [옵션] 이미지명[:태그명] [인수] 주요 옵션 --attach, -a: 표준 입력, 출력, 오류 출력에 어태치함 --cidfile: 컨테이너 아이디를 파일로 출력함 --detach, -d: 컨테이너를 생성하고 백그라운드에서 실행함 --interactive, -i: 컨테이너의 표준 입력을 연다. --tty, -t: 단말기 디바이스를 사용함 백그라운드 컨테이너 생성 및 시작 : Docker를 사용하는 경우 대부분 컨테이너에 서버 기능을 가지게 해서 실행하는 경우이다. Docker 컨테이너를 백그라운드에서 실행하기위한 구문은 아래와 같음 docker container run [실행 옵션] ..

[Docker] 5. Docker Container Life Cycle

Life Cycle Container의 Life Cycle은 보통 생성, 시작, 정지, 삭제 4개의 상태로 이루어짐 컨테이너 조작 명령 생성(docker container create) : 이미지로부터 컨테이너 생성. Docker 이미지의 실체는 Docker에서 서버 기능을 작동시키기 위해 필요한 디렉터리 및 파일들이다. 구체적으로 Linux의 작동에 필요한 /etc나 /bin과 같은 디렉토리 및 파일들이다. docker container create 명령을 실행하면 이미지에 포함될 Linux의 디렉토리와 파일들의 스냅샷을 취함. 이 명령은 컨테이너를 만들 뿐 시작하지는 않는다. 생성 및 시작(docker container run) : 이미지로부터 컨테이너를 생성하고, 컨테이너 상에서 임의의 프로세스를 ..

[Docker] 4. Docker 명령

Docker Hub Docker Hub는 GitHub과 같은 소스코드 관리 툴과 연계하여 코드를 빌드하는 기능이나 실행 가능한 애플리케이션의 이미지를 관리하는 기능을 갖춘 Docker의 공식 레포지터리 서비스. Docker 이미지 다운로드 docker image pull [옵션] 이미지명[:태그명] 태그명을 생략하면 최신판(latest) 을 다운로드함 -a 옵션을 넣으면 모든 태그를 다운로드함. 이 경우 태그명을 적을 수 없음\이미지 명이 아닌 URL로도 이미지를 다운 받을 수 있는데 이경우 프로토콜(https://)은 지우고 입력해야 함 (ex. URL: https://gcr.io.tensorflow/tensorflow -> docker image pull gcr.io.tensorflow/tensorf..

[Docker] 3. Docker 실행

Docker 그룹 추가 보통 Docker를 실행 할 때 가장 많이 겪는 오류 구문이 있다. Got permission denied while trying to connect to the Docker daemon socket 이 오류의 원인은 생각보다 간단하다. Docker는 보통 설치하면 root 권한 아래에서 동작하기 때문에 발생하는 오류인데 docker를 사용자 그룹에 넣어주고 다시 시작하면 해결 됨 방법은 아래와 같음 sudo usermod –aG docker $USER sudo service docker restart 이 명령어이후 로그아웃 후 로그인하면 됨 간단히하면 그냥 재시작 하면 됨 Hello World Docker를 설치하고 제대로 설치되어 있는지를 확인하기 위해 Hello World를 ..

[Docker] 1. Docker의 기능

Docker의 3가지 기능 : Docker 이미지를 만드는 기능(Build), Docker 이미지를 공유하는 기능(Ship), Docker 컨테이너를 작동시키는 기능(Run) 1. Docker 이미지를 만드는 기능(Build) : Docker는 애플리케이션의 실행에 필요한 프로그램 본체, 라이브러리, 미들웨어, OS 설정 등을 하나로 만들어서 Docker 이미지를 만듬. Docker 이미지는 애플리케이션의 실행에 필요한 파일들이 저장된 디렉토리로 Docker 명령을 통해 tar 파일로 추출 가능. Docker 이미지는 Docker 명령을 통해 수동으로 만들 수도 있고, Dockerfile이라는 설정 파일로 만들 수도 있음 지속적인 인티그레이션과 지속적인 딜리버리의 관점에서 보면 Dockerfile을 통한..

[Docker] 0. Docker란?

이번에 네트워크 스터디를 시작하면서 Docker에 대해 공부하게 되었다. 회사에서 Docker 이미지를 구동만 시켜봤지 실제로 만들어 보지 않아서 기초부터 공부해야 할 필요를 느꼈다고나 할까.. 아무튼 지금부터 시작 Docker란? 컨테이너 기반의 오픈소스 가상화 플랫폼으로, 다양한 프로그램, 실행 환경을 컨테이너로 추상화 하고 동일한 인터페이스를 제공하여 프로그램의 배포 및 관리를 단순하게 해줌 컨테이너 컨테이너는 격리된 공간에서 프로세스가 동작하는 기술로 보통 알고 있는 VMWare, Virtual Machine같은 프로그램에서는 주로 OS를 가상화 하였으나 이 경우에는 비교적 사용법이 간단하지만, 느려서 운연 환경에서는 사용하기 힘들다는 단점이 있음. 이러한 문제 때문에 CPU의 가상화 기술(HVM..