1. 도커란?
Docker는 애플리케이션을 신속하게 구축, 테스트 및 배포할 수 있는 소프트웨어 플랫폼입니다. Docker는 소프트웨어를 컨테이너라는 표준화된 유닛으로 패키징하며, 이 컨테이너에는 라이브러리, 시스템 도구, 코드, 런타임 등 소프트웨어를 실행하는 데 필요한 모든 것이 포함되어 있습니다.
• 컨테이너 기반의 오픈소스 가상화 플랫폼
2. 도커의 장점
3. 도커 이미지란?
도커에서 서비스 운영에 필요한 서버 프로그램, 소스코드 및 라이브러리, 컴파일된 실행 파일을 묶는 형태를 Docker Image라한다. 다시 말해, 특정 프로세스를 실행하기 위한(즉, 컨테이너 생성(실행)에 필요한) 모든 파일과 설정값(환경)을 지닌 것으로, 더 이상의 의존성 파일을 컴파일하거나 이것저것 설치할 필요 없는 상태의 파일을 의미한다. 예를 들어 Ubuntu이미지는 Ubuntu를 실행하기 위한 모든 파일을 가지고 있으며, Oracle 이미지는 Oracle을 실행하는데 필요한 파일과 실행명령어, port 정보 등을 모두 가지고 있다.
4. 도커 파일 (Dockerfile)
기존의 특정 이미지를 통해 컨테이너를 생성한 이후, 컨테이너에서 추가적인 설정이 필요한 경우
(추가 패키지 설치, 환경변수 설정, 포트 설정 등)
컨테이너를 생성할 때 마다 이러한 추가설정하는 것이 번거로움.
기존 이미지에 추가적으로 필요한 설정을 포함한 이미지를 만들고 싶음.
예) tensorflow이미지로 컨테이너를 만들었는데 Mecab이라는 패키지 등이 필요해 설치함
이 후, 이러한 컨테이너를 또 생성하고 싶은데 추가설정사항도 같이 포함된 이미지가 있으면 편할 것 같다.
-> 이 때, 사용하는 것이 도커파일(Dockerfile)
5. 도커 이미지 관련 명령어
# docker pull python:3.7.9 (파이썬 3.7.9버전이 포함된 이미지 다운)
3. rmi: 이미지 삭제
# docker rmi [이미지 id] (이미지 삭제)
5. Commit: 컨테이너로부터 이미지 생성
# docker commit [컨테이너이름] [생성할이미지이름]
6. 도커 컨테이너 관련 명령어
# docker ps (현재 동작중인 컨테이너 목록)
# docker ps –a (-a 옵션: 동작중이지 않은 컨테이너 포함 모든 컨테이너 목록)
# docker rm [컨테이너id 또는 name] (컨테이너 삭제)
# docker rm helloworld
# docker start [컨테이너id 또는 name] (컨테이너 시작)
# docker restart [컨테이너id 또는 name] (컨테이너 재시작)
# docker stop [컨테이너id 또는 name] (컨테이너 정지)
# docker start helloworld
4. run: 컨테이너 생성 및 접속
# docker run [options] [이미지] [커맨드] (이미지로부터 컨테이너를 생성후 커맨드를 실행)
-d 옵션: 백그라운드 모드로 실행
-p 옵션: 포트포워딩
-v 옵션: 호스트 디렉토리, 혹은 도커 Volume과 컨테이너의 디렉토리 연결(마운트)
-e 옵션: 환경변수 설정
--name 옵션: 컨테이너 이름 설정
-it 옵션: 컨테이너의 표준입력과 로컬의 키보드 입력 연결(터미널 입력을 위한 옵션)
# docker run -v /root/data:/data -it --name helloworld python:3.7.9 /bin/bash
: python3.7.9 이미지로부터 터미널 입력이 가능하고(-it 옵션), 호스트의 /root/data디렉토리에 마운트된 /data라는 디렉토리를 가지고 있으며(-v 옵션), 이름이 helloworld(--name 옵션)인 컨테이너를 생성 후 bash로 접속(/bin/bash 커맨드)
5. attach: 컨테이너 접속
# docker attach [컨테이너 id 또는 name]
6. exec: 컨테이너 내부 명령어 실행
# docker exec [options] [컨테이너] [명령어] [명령어 매개변수]
# docker exec –it helloworld python
# docker exec helloworld python helloworld.py
# docker exec helloworld apt-get update
7. 쉘에서 빠져나오기
8. cp: 호스트와 컨테이너간의 파일/디렉토리 복사
# docker cp [컨테이너이름]:[컨테이너내경로] [호스트경로] (컨테이너->호스트)
# docker cp [호스트경로] [컨테이너이름]:[컨테이너내경로] (호스트->컨테이너)
'Tools > Docker' 카테고리의 다른 글
[Docker] Docker에서 Jupyter Notebook 사용 (0) | 2022.12.23 |
---|---|
[Docker] Error response from daemon 해결 (1) | 2022.09.30 |
댓글