티스토리 뷰

카테고리 없음

도커

akon47 2022. 4. 24. 01:01
반응형

도커

실행과 이미지 만들기

도커 이미지

컨테이너를 실행하기 위해 필요한 요소.

이미지의 이름 형태: __ __[저장소 이름]/[이미지 이름]:[태그]

[저장소 이름]: __ __이미지가 저장된 장소 (명시하지 않으면 도커 허브 공식 이미지)

[이미지 이름]: __ __이미지가 어떤 이미지인지 나타내는 이름

[태그]: __ __이미지의 버전관리. (생략시 도커 엔진이 자동으로 latest 로 인식)

(도커 허브의 저장소 이름: docker.io/library)

도커 허브로부터 이미지 검색과 가져오기

검색창에 ubuntu를 입력해보자

이런식으로 도커허브에서 원하는 이미지들을 검색할 수 있다.

docker의 search 명령어로도 검색이 가능

도커 이미지 받기

docker pull [이미지 이름]:[태그]

[태그] 생략 시 자동으로 latest 버전을 가져옴

이미지 목록 보기

docker images ” 라는 명령어로 현재 받아진 이미지들의 목록을 볼 수 있다.

이미지 삭제하기

docker rmi [이미지 id] ” 라는 명령어로 이미지 삭제가 가능하다.

(이 때, -f 옵션을 붙이면 해당 이미지를 사용하는 컨테이너도 강제로 삭제가 가능하다, 해당 옵션을 붙이지 않으면 해당 이미지를 사용중인 컨테이너가 현재 존재한다면 이미지의 삭제가 불가능하다)

이미지 실행하기 (컨테이너 생성 및 시작)

docker run [options] image[:[TAG] [COMMAND] [ARG…]

옵션 설명
-d detached mode 흔히 말하는 백그라운드 모드
-p 호스트와 컨테이너의 포트를 연결 (포워딩)
-v 호스트와 컨테이너의 디렉토리를 연결 (마운트)
-e 컨테이너 내에서 사용할 환경변수 설정
--name 컨테이너 이름 설정
-it -i와 -t를 동시에 사용한 것으로 터미널 입력을 위한 옵션 (컨테이너의 표준 입력과 로컬 컴퓨터의 키보드 입력을 연결)
--rm 프로세스 종료시 컨테이너 자동 제거
--link 컨테이너 연결 [컨테이너 명:별칭]

컨테이너 정지는 -it 명령어를 이용하여 쉘에 연결 된 경우에는 exit 를 입력하거나 Ctrl + D 입력 시 정지.

또는 Ctrl + P, Ctrl + Q 를 차례로 입력하면 정지하지 않고 컨테이너에서 빠져나옴.

컨테이너 목록 보기

docker ps [-a]

-a 옵션 사용 시 실행중이 아닌 모든 컨테이너도 출력

컨테이너 명령어들

docker start [컨테이너 id 또는 name] ” 중지되어 있는 컨테이너를 다시 실행할 수 있다.

docker stop [컨테이너 id 또는 name] ” 실행되어 있는 컨테이너를 종료할 수 있다.

docker restart [컨테이너 id 또는 name] ” 실행되어 있는 컨테이너를 다시 시작할 수 있다.

docker rm [컨테이너 id 또는 name] ” 컨테이너의 삭제가 가능하다.

docker attach [컨테이너 id 또는 name] ” 시작되어 있는 컨테이너에 연결 (터미널 상에서 입출력 주고받기)

도커 이미지 만들기

docker commit [options] [ 컨테이너 id 또는 name] [이미지 이름:TAG]

많이 사용하는 옵션

[-a]: 작성자 (예: “kim hwan <akon47@naver.com>”)

[-m]: 커밋 메시지 (주석)

컨테이너의 변경 사항을 이미지 파일로 생성하는 명령어

아까 만들어본 study 이미지 실행 후 nginx 설치해보기.

apt-get update

apt-get install -y nginx

위 두 가지 명령어를 실행하여 nginx 설치 후 아래 그림과 같이 docker diff 명령어를 이용하면 부모 이미지와 여기서 파생된 컨테이너간의 파일 시스템 간의 변경사항을 확인할 수 있다.

commit 명령어를 이용하여 컨테이너를 이미지화 시킬 수 있다.

docker images 명령어를 이용하여 만들어진 이미지 확인해보기

만들어진 이미지를 바탕으로 새로운 컨테이너 실행하기.

-p 명령어를 이용하여 도커의 80번 포트를 호스트의 8888번 포트로 포워딩한다.

Dockerfile을 이용한 도커 이미지 만들기

주요 명령: FROM, RUN, ENV, COPY, ENTRYPOINT

FROM: 이미지를 생성할 때 사용할 베이스 이미지

RUN: 이미지를 생성할 때 실행할 코드

WORKDIR: 작업 디렉토리 지정. (이 명령 지정 후 그 이후 명령어는 해당 디렉토리를 기준으로 작동(

COPY: 파일이나 폴더를 이미지에 복사. (호스트 -> 이미지)

ENV: 이미지에서 사용할 환경 변수 값 지정

ENTRYPOINT: 컨테이너를 구동할 때 실행할 명령어 지정

주요 명령: FROM, RUN, ENV, COPY, ENTRYPOINT

FROM: 이미지를 생성할 때 사용할 베이스 이미지

RUN: 이미지를 생성할 때 실행할 코드

WORKDIR: 작업 디렉토리 지정. (이 명령 지정 후 그 이후 명령어는 해당 디렉토리를 기준으로 작동(

COPY: 파일이나 폴더를 이미지에 복사. (호스트 -> 이미지)

ENV: 이미지에서 사용할 환경 변수 값 지정

CMD: 컨테이너를 구동할 때 실행할 명령어 지정 (도커 빌드시에는 실행되지 않고, 여러개의 CMD 가 존재할 경우 가장 마지막 명령어만 실행)

EXPOSE: 공개 하고자 하는 포트를 지정

docker build --tag study:0.1 . 명령어를 이용하여 Dockerfile 빌드.

다음 순서로 진행이 됨.

Step 1/6 : FROM ubuntu:18.04

Step 2/6 : RUN apt-get update

Step 3/6 : RUN apt-get install -y nginx

Step 4/6 : WORKDIR /etc/nginx

Step 5/6 : CMD ["nginx", "-g", "daemon off;"]

Step 6/6 : EXPOSE 80

만들어진 이미지를 명령어로 확인

만들어진 이미지를 실행해보기

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함