ComputerScience/Docker 15

[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] 11. Dockerfile 명령 및 데몬 실행 (1)

Docker 이미지를 만들기 위해서 필요한 미들웨어를 설치하고, 사용자 계정이나 디렉토리들을 설정하는 명령을 실행할 필요가 있고, 이미지로부터 컨테이너를 실행했을 때 서버 프로세스등을 데몬으로 작동시킬 필요도 있음 명령실행(RUN 명령) 컨테이너에는 FROM 명령에서 지정한 베이스 이미지에 대해 ‘애플리케이션/미들웨어를 설치 및 설정한다’, ‘환경 구축을 위한 명령을 실행한다’ 등과 같은 명령을 실행할 때는 RUN 명령을 사용함 Dockerfile을 작성할 때 이 RUN 명령을 가장 많이 사용하고 아래와 같은 구문으로 사용함 RUN [실행하고 싶은 명령] RUN 명령에는 두가지 기술법이 존재함 1. SHELL 형식으로 기술 : 명령 지정을 쉘에서 실행하는 형식으로 지정하는 방법. 예를 들어 apt 명령으..

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

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

[Docker] 9. Docker 이미지 생성

Docker 컨테이너는 Docker 이미지를 바탕으로 만들어지는데, 반대로 Docker 컨테이너를 바탕으로 이미지를 만들 수도 있음. 예를 틀어 톱레벨 리포지토리로 부터 공식 이미지를 바탕으로 컨테이너를 만들고, 환경에 맞도록 변경한 뒤 컨테이너로부터 다시 이미지를 만들 수 있음 컨테이너로부터 이미지 작성 : 컨테이너로부터 이미지를 작성하려면 아래와 같은 구문을 사용함 docker container commit [옵션] [이미지명[:태그명]] 주요 옵션 --author, -a: 작성자를 지정함 --message, -m: 메시지를 지정함 --change, -c: 커밋시 Dockerfile 명령을 지정함 --pause, -p: 컨테이너를 일시정지하고 커밋함 컨테이너를 tar 파일로 출력 : Docker에서 ..

[Docker] 8. 가동중 Docker 컨테이너 조작

가동 컨테이너 연결 : 가동 중인 컨테이너에 연결할 때는 docker container attach 명령을 사용 ex) /bin/bash가 실행되고 있는 sample이라는 이름의 컨테이너에 연결 $ docker container attach sample [root@sfkslgjs /]# 이 때 연결한 컨테이너를 종료하려면 Ctrl+C 컨테이너 안에서 움직이는 프로세스(/bin/bash)만 종료하려면 Ctrl+P or Ctrl+Q를 입력함 가동 컨테이너에서 프로세스 실행 : 가동 중인 컨테이너에서 새로운 프로세스를 실행할 때는 아래와 같은 구문을 사용 docker container exec [옵션] [인수] 주요 옵션 --detach, -d: 명령을 백그라운드에서 실행함 --interactive, -i: ..

[Docker] 7. Docker Container Network

Docker Container끼리 통신을 할 때는 Docker Network를 통해 수행함 Network 목록 표시 : docker network의 목록을 확인하려면 아래와 같은 구문을 사용함 docker network ls [옵션] 주요 옵션 -f, --filter=[]: 출력을 필터링함 필터링에서 이용할 수 있는 키 driver: 드라이버 지정 id: 네트워크 id label: 네트워크에 설정된 라벨(label= 또는 label==로 지정함 name: 네트워크 명 scope: 네트워크의 스코프(swarm | global | local) type: 네트워크의 타입(custom: 사용자 정의 | builtin: 정의 완료) --no-trunc: 상세 정보를 출력함 -q, --quiet: 네트워크 ID만 ..

[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) : 이미지로부터 컨테이너를 생성하고, 컨테이너 상에서 임의의 프로세스를 ..