Docker 명령어 모음 공식 문서
https://docs.docker.com/engine/reference/commandline/exec/
1. Docker란?
- Linux의 응용 프로그램들을 프로세스 격리 기술들을 사용해 컨테이너로 실행 및 관리하는 오픈 소스 프로젝트
※ Container(컨테이너) : 일종의 소프트웨어를 소프트웨어의 실행에 필요한 모든 것들과 함께 감싸는 시스템이다. 이 안에는 코드, 런타임, 시스템 도구, 시스템 라이브러리 등 서버에 설치되는 무엇이든 포함될 수 있다.
- 가상 머신의 역할을 넘어, 실행 중인 환경에 관계 없이 언제나 동일하게 실행될 것을 보증하는 애플리케이션 컨테이너를 관리하는 도구
2. Docker 설치
- 아래에 링크한 Docker 공식 docs에서 Docker를 설치할 수 있다. 자신의 운영체제에 맞게 설치를 진행하자.
(필자의 실습 환경은 Window이다.)
https://docs.docker.com/get-docker/
- 만약 WSL 2 설치에 실패했다는 메시지가 나왔다면, 아래 링크의 절차대로 수행하면 잘 동작할 것이다.
해결 : https://blog.nachal.com/1691
- Docker를 처음 시작했다면 아직 아무 컨테이너도 존재하지 않을 것이다.
- 명령 프롬포트 또는 Windows Powershell(관리자 권한으로 실행하는 것을 권장함)에서 아래 명령어를 입력해보자.
- 잘 생성 되었다.
3. 용어 이해
- Docker hub를 "스토어"라고 보면, Image는 "스토어"에서 다운받는 "프로그램"의 개념이라고 생각하면 된다.
- Image를 "프로그램"이라고 보면, Container은 "프로그램"을 실행하는 "프로세스"의 개념이라고 생각하면 된다. 즉, Image는 여러 개의 Container들을 가질 수 있다.
- Pull : Docker hub에서 Image를 다운받는 것
- Run : Image에서 Container을 실행시키는 것
- Docker Host : Container가 설치된 운영체제
4. Image
- 먼저, https://hub.docker.com/ 에서 Explore에 들어간다.
- 필자는 Apache가 포함되어 있는 httpd 컨테이너를 선택했다.
- 컨테이너를 선택하면 Image를 pull할 수 있는 명령어를 알려주기 때문에, 쉽게 원하는 Image를 다운받을 수 있다.
- 메뉴 아이콘을 클릭하면 Image를 관리할 수 있는 항목들이 나온다.
5. Container
1) docker desktop 사용
- 여러분이 설치한 Image에 커서를 놀리면 우측에 [RUN] 버튼이 생긴다. 이 버튼을 클릭한다.
- Image의 Container을 생성하는 단계다.
- Ports의 Local Host는 외부에 열어둘 포트 번호를 의미하는데, 자세한 내용은 잠시 후에 설명할 것이다.
- 잘 추가 되었다.
- 컨테이너를 누르면 로그, 상세 정보, 통계 정보를 확인할 수 있고, 아이콘을 통해 중지, 재시작, 삭제를 진행할 수도 있다.
2) CLI 사용
자세한 명령어는 https://docs.docker.com/engine/reference/commandline/exec/ 를 참조할 것.
- Container 생성
docker run --name [컨테이너 이름] [Image 이름]
※ -d 옵션 : 컨테이너를 background에서 실행하고, 컨테이너 ID를 출력
※ -p 옵션 : 포트 포워딩 설정
- 컨테이너 목록 조회
docker ps
※ -a 옵션 : 모든 상태의 컨테이너 목록을 조회
- 컨테이너 시작
docker start [컨테이너 이름]
- 컨테이너 중지
docker stop [컨테이너 이름]
- 로그 확인
docker logs [컨테이너 이름]
※ -f 옵션 : 실시간 로그 출력
- 컨테이너 삭제
docker rm [컨테이너 이름]
※ 기본적으로 실행중인 컨테이너는 지울 수 없음
※ --force 옵션 : 컨테이너가 실행중이더라도 강제로 삭제
- 이미지 삭제
docker rmi [Image 이름]
6. Docker Host
- 외부에서 컨테이너에 접근하기 위해서는 먼저 컨테이너가 설치된 Docker Host 서버에 접근해야 한다. 그리고, 우리들은 미리 Host의 포트와 컨테이너의 포트를 연결해놓아야 한다.
※ 이 경우에도 포트 포워딩이라는 용어를 사용한다.
- 처음에 우리가 입력했던 명령어에서 "-p 80:80" 부분의 의미가 Host 서버의 80번 포트(앞)를 컨테이너의 80번 포트(뒤)와 연결하겠다는 뜻이 되는 것이다.
즉, 아래의 설정을 명령어로 나타내면 다음과 같다.
docker run --name httpdCon1 -p 8080:80 httpd
- 컨테이너의 Apache 서버에 접속을 시도해보면, 잘 접속 되는 것을 확인할 수 있다.
- localhost:8080으로 접속한 웹 페이지에 대한 문서는 httpd 컨테이너의 어디에 저장되어 있는 걸까? 컨테이너의 CLI로 접속하여 확인해보자.
- pwd 명령어는 현재 디렉토리의 위치를 표시한다. 기본 위치는 /usr/local/apache2 임을 알 수 있다.
- 만약, 명령 프롬포트를 사용한다면, 아래 명령어가 위의 동작과 동일할 것이다.
docker exec -it [컨테이너 이름] /bin/sh pwd
※ /bin/sh : shell의 절대경로
※ -it 옵션 : 연결을 계속 유지
- ls 명령어는 현재 디렉토리에 있는 파일들과 하위 디렉토리들의 목록을 표시한다.
- apache는 기본적으로 htdocs라는 디렉토리를 가지며, htdocs 디렉토리는 apache가 웹 문서를 찾는 최상위 디렉토리이다. index.html 파일은 /usr/local/apache2/htdocs/index.html 경로로 존재하는 것을 확인할 수 있다.
- 참고로, 기본적으로 index 파일은 파일명을 생략해도 되는 것으로 약속되어 있다.
7. 파일 시스템 연결
- Docker 컨테이너의 /usr/local/apache2/htdocs 디렉토리와 내 컴퓨터(호스트)의 파일 시스템과 동기화하고 싶다면 다음 명령어를 사용하면 된다.
docker run -p 8080:80 -v [로컬 호스트 파일 시스템 경로]:/usr/local/apache2/htdocs/ httpd
※ APM_Setup의 경우 : C:\APM_Setup\htdocs
'Docker' 카테고리의 다른 글
[Docker] Dockerfile / docker-compose.yml 파일 (0) | 2021.12.31 |
---|
댓글