[Docker] Docker 명령어
11 May 2024
Docker 기본 명령어 정리
docker search ‘이미지 이름’
- 이미지 검색
- Dockerhub에서 사용 가능한 이미지 검색
docker pull ‘이미지 식별자’
- 이미지 다운로드
- Dockerhub로부터 지정한 이미지 다운로드
-
docker images
- 현재 Host에 존재하는 이미지 리스트 출력
- repository, tag, image id, created, size 등의 정보 출력
- Docker 이미지에는 커널 없이 서비스를 실행하기위한 파일만 존재하므로, size가 작다.
docker run (‘옵션’) ‘이미지 식별자’ (‘명령어’) (‘인자’)
- -d
- 컨테이너가 detached 모드에서 실행됨
- 실행 결과로 컨테이너 ID 출력
- -d 옵션 없이 실행한 후 해당 터미널에서 Ctrl + D를 눌러 빠져나온다면, 즉시 해당 컨테이너는 종료된다.
- 예시
- docker run -d python:3.8-alpine python -m http.server
- -it
- 컨테이너를 종료하지 않은 채로, 터미널의 입력을 계속해서 컨테이너로 전달하기 위해 사용
- 컨테이너의 쉘이나 CLI 도구를 사용할 때 매우 유용
- 예시
- docker run -it python:3.8-alpine /bin/bash
- -name
- 컨테이너에 이름을 부여하기 위한 옵션
- 예시
- docker run -d –name my-server python:3.8-alpine python -m http.server
- docker kill my-server
- -e
- 컨테이너의 환경변수를 설정하기 위한 옵션
- -e 옵션을 사용하면 Dockerfile의 ENV 설정도 수정된다.
- 예시
- docker run -e FOO=bar python:3.8-alpine env
- -p
- Host와 컨테이너 간의 port 바인딩을 위해 사용
- 예시 (Host 80, 컨테이너 8080)
- docker run -d -p 80:8000 python:3.8-alpine python -m http.server
- -v
- 볼륨 설정을 위해 사용
- Host 파일 시스템의 특정 경로를 컨테이너의 파일 시스템 특정 경로와 마운트 해준다.
- 예시
- echo Hi > test.txt
- docker run -v
pwd :/etc python:3.8-alpine cat /etc/test.txt
- Hi
- -w
- Dockerfile의 WORKDIR 설정을 수정하기 위해 사용
- 예시
- docker run -w /etc python:3.8-alpine pwd
- /etc
- —entrypoint
- Dockerfile의 ENTRYPOINT 설정을 수정하기 위해 사용
- 예시
- docker run –entrypoint python python:3.8-alpine –version
- Python 3.8.2
- -rm
- 컨테이너를 일회성으로 실행할 때 사용
- 해당 컨테이너가 종료될 때 컨테이너와 관련된 리소스까지 깨끗이 제거해준다.
- 예시
- docker run –rm -it wernight/funbox nyancat
docker ps
- 실행중인 컨테이너 목록 확인
- -a
- 이전에 종료된 컨테이너들을 포함한 모든 목록 확인
docker start ‘컨테이너 ID’
docker attach ‘컨테이너 ID’
docker stop ‘컨테이너 ID’
docker rm ‘컨테이너 ID’
- 컨테이너 삭제
- 운영체제의 프로세스와 달리 컨테이너가 종료되더라도 다시 실행하면 이전 상태가 유지되므로, 사용하지 않는 컨테이너를 완전히 제거하기 위해서는 rm 명령어를 사용해야 한다.
docker build —tag ‘태그 이름’
- Dockerfile을 만들어 이미지를 생성
- FROM “기본 이미지”
- ADD “이미지에 추가할 파일”
- RUN “실행할 명령어”
- 등등
- 만들어진 Dockerfile이 존재하는 위치에서 명령어 실행
docker commit -p ‘컨테이너 ID’ ‘이름’
docker save -o ‘저장할 파일 이름’.tar ‘이름’
docker login
docker push ‘ID’/’Repository’:’Tag’
docker load < ‘저장한 파일 이름’.tar