Docker
0. Docker 란?
서영선
2023. 8. 12. 17:48
Docker 란?
다양한 운영체제와 시스템 환경 상에서, 서버 셋업을 위한 작업은 각각 다르고 복잡하다. 도커는 컨테이너 기반의 가상화 플랫폼으로, 컨테이너 상에 서버를 셋업해놓을 수 있다. 따라서 기반 환경이 다르더라도, 언제든 해당 컨테이너를 실행만 하면, 동일한 서버 셋업이 가능하다.
Docker 설치
서버 구축은 결국 리눅스에서 진행하는 것이 일반적이므로, 리눅스 상에서 docker 사용법에 대해 집중해서 익히기로 하자.
Docker 주요 구성 요소
- docker Engine : 도커는 서버/ 클라이언트 구조로 이루어짐, 서버는 docker daemon process 형태로 동작함. (데몬이란, 보통 계속 실행중인 프로그램)
- docker image : docker 컨테이너를 생성하기 위한 명령들을 가진 템플릿, 여러 이미지들을 layer로 쌓아서, 원하는 형태의 이미지를 만드는 것이 일반적이다.
- docker container : docker image가 리눅스 컨테이너 형태로 실행한 상태를 의미함,
Docker image 주요 명령어
1. 다운로드 받을 이미지 검색
docker search ubuntu
docker search --limit=5 ubuntu # 5개만 검색결과 보여줌
2. 이미지 다운로드
docker pull ubuntu # 버전 안붙이면 가장 최신 버전을 다운받음
docker pull ubuntu:22.10
3. 다운로드 받은 이미지 목록 확인
docker images
docker image ls
docker image ls -q # docker image ID 만 표시하기
4. 다운로드 받은 이미지 삭제 하기
docker rmi 이미지ID
docker image rm 이미지ID
Docker Container 관련 주요 명령어
1. 컨테이너 생성
- 각 이미지는 컨테이너로 만들어줘야 실행가능함
- 이미지와 컨테이너는 각각 관리해줘야함
- 컨테이너 생성시, docker 프로그램에서 이름이 자동 부여됨
docker create ubuntu
2. 생성된 컨테이너 확인
docker ps # 실행중인 컨테이너 확인
docker ps -a # 실행중이지 않은 컨테이너까지 포함해서, 전체 컨테이너 확인
docker ps -a -q # 전체 컨테이너의 ID 만 출력
이때, 확인할 수 있는 컨테이너 STATUS에는 Created : 생성 , Up : 실행중 , Pause : 중지 , Existed : 종료가 있다.
3. 컨테이너 삭제
docker rm 컨테이너이름
4. 컨테이너 이름 변경
docker create --name 내가원하는컨테이너이름 이미지이름
docker create --name myubuntu ubuntu
5. 컨테이너 실행
docker start 컨테이너이름
6. docker run 명령
docker run 주요 옵션
1. -i : 컨테이너 입력을 열어놓는 옵션으로 주로 -t 옵션과 많이 사용함
2. -t : 가상 터미널을 할당하는 옵션
3. --name : 컨테이너 이름을 설정하는 옵션
4. -d : 컨테이너를 백그라운드에서 실행하는 옵션
5. --rm : 컨테이너 종료시 컨테이너를 자동으로 삭제하는 옵션
6. -p : 호스트와 컨테이너 포트를 연결하는 옵션
7. -v : 호스트와 컨테이너 디렉토리를 연결하는 옵션
docker run -it ubuntu
docker run -it --name myubuntu ubuntu
docker run -it --rm --name myubuntu2 ubuntu
docker run -it -d --name myubuntu3 ubuntu
7. 실행중인 컨테이너 종료하기
docker stop myubuntu3
✔ 웹서버로 docker run 옵션 테스트해보기
웹서버에는 nginx와 apache, 두 프로그램이 많이 사용됨
- apache 웹 서버 공식 docker 찾기 : apache는 httpd 이름을 사용함
docker search httpd
docker run httpd
docker run -d --name apacheweb httpd
docker run -d -p 9999:80 --name apacheweb2 httpd
🧨 모든 컨테이너/ 이미지 삭제하기
docker stop $(docker ps -a -q) # 모든 컨테이너 중지
docker rm $(docker ps -a -q) # 모든 컨테이너 삭제
docker rmi $(docker images -q)
docker rmi -f $(docker images -q)