도커 기본 사용법
도커의 라이프 사이클은 아래 그림과 같다.
도커 레지스트리라고 하는 저장소에는 사용자가 사용할 수 있도록 데이터베이스를 통해 이미지를 제공해주고 있다. 도커를 사용하기 위해선 기본적으로 레지스트리에 제공되어 있는 이미지를 가져오고, 해당 이미지를 이용해 컨테이너를 실행해야 한다.
간단한 HTTP 애플리케이션을 구현하면서 도커의 사용법을 확인해 보자. 가장 먼저 할 일은 적절한 이미지를 찾는 것이다. search라는 명령어로 내가 원하는 이미지가 이미 레지스트리에 존재하는지 확인이 가능하다.
# Docker Hub에서 Nginx 이미지 검색
sudo docker search nginx
도커 레지스트리로부터 이미지를 다운로드하기 위해서는 pull 명령어를 사용하면 된다. 다운로드한 이미지는 images 명령어로 확인할 수 있다.
# nginx:1.18 이미지를 Docker Hub에서 로컬 머신으로 다운로드
sudo docker pull nginx:1.18
#모든 Docker 이미지를 표시
sudo docker images
다음 명령어를 실행하여 Nginx 웹 서버 컨테이너를 생성할 수 있다.
# 도커 컨테이너 실행
sudo docker run --name=web01 -itd -p 8080:80 nginx:1.18
여기서 명령어의 의미는 다음과 같다
- run : 이미지를 실행
- --name=web01: 컨테이너 이름을 web01로 설정
- -i : 컨테이너에 대한 인터페이스를 유지
- -t : 컨테이너에 터미널을 실행
- -d : 컨테이너를 백그라운드에서 실행
- -p 8080:80 : 컨테이너의 80 포트를 호스트 시스템의 8080 포트에 매핑
- nginx:1.18 : 이미지 nginx 1.18를 사용
ps 명령어를 통해 실행 중인 모든 컨테이너를 표시할 수 있다.
# 실행중인 컨테이너 표시
sudo docker ps
컨테이너가 정상적으로 실행되었다면 칼리 리눅스에서 localhost:8008으로 접속하여 nginx 웹서버가 실행된 것을 확인할 수 있다.
exec 명령어로 bash 쉘에서 web01 컨테이너 내부의 파일 및 디렉토리에 액세스하고 명령어를 실행할 수 있다. 다시 나오기 위해서는 exit 명령어를 사용하면 된다.
# web01 컨테이너에서 bash 쉘 실행
sudo docker exec -it web01 bash
stop 명령어를 사용하면 동작하고 있는 도커 컨테이너를 중단할 수 있다. 중단된 컨테이너는 ps -a 명령어로 확인할 수 있다. 중단된 컨테이너를 다시 실행하고 싶으면 start를 이용하면 되지만 여기선 다시 실행하지 않을 것이다.
# web01 컨테이너 종료
sudo docker stop web01
# 모든 컨테이너 표시
sudo docker ps -a
중단된 컨테이너는 rm 명령어로, 이미지는 rmi 명령어로 삭제할 수 있다. 이미지를 삭제할 때는 해당 이미지를 사용하는 컨테이너가 없어야 하며, 이미지의 이름과 태그를 모두 지정해야 한다.
# web01 컨테이너 제거
sudo docker rm web01
# nginx:1.18 이미지 제거
sudo docker rmi nginx:1.18