Docker 이미지와 컨테이너 관련 명령어
- docker 이미지 검색
docker search [옵션] <이미지이름>
- docker 이미지 다운로드
docker pull [옵션] <이미지이름:태그명>
뒤에 태그명 생략하면 latest 버전으로 자동 다운로드됨
- 컨테이너 이미지 레이어가 들어가는 곳
/var/lib/docker/overlay2
- 저장된 이미지 조회
docker images
또는
docker image ls
- 다운 받은 이미지 상세보기
docker inspect [옵션] <이미지이름:태그명>
# --format 옵션 예제. 출력값 중에 특정 키의 값만 출력
docker inspect --format '{{.NetworkSettings.IPAddress}}' webserver
#172.17.0.2
# alias 사용해 줄여서 사용할 수도
alias cip=docker inspect --format '{{.NetworkSettings.IPAddress}}'
cip webserver
#172.17.0.2
- docker 이미지 실행
docker run --name web -d -p 80:80 nginx
기존에 80 포트를 사용하거나 web이라는 이름의 컨테이너가 있다면 각각 kill이나 stop, rm 한 후 해보자.
- 제대로 실행되었는지 확인
docker ps
# 80번 포트로 접근하면 nginx 페이지 내용을 응답받음
curl localhost:80
- 컨테이너 = 다른 프로그램과 분리된 환경에서 실행
- 컨테이너 이미지 = 컨테이너 실행을 위해 미리 준비해야 함
- 허브 = 컨테이너 이미지가 저장된 창고
- docker 이미지 삭제
docker rmi [옵션] <이미지이름>
컨테이너 명령어
- 실행중인 컨테이너 목록 확인
docker ps [옵션]
- 컨테이너 생성
docker create [옵션] <이미지이름:태그명>
docker create --name webserver nginx:1.14
- 컨테이너 실행
docker start [옵션] <컨테이너이름>
docker start webserver
- 컨테이너 pull -> create -> start 를 한 번에 실행하는 명령어
docker run [옵션] [이미지이름 또는 이미지ID] [실행할 파일]
docker run --name webserver -d nginx:1.14
-d: 컨테이너 백그라운드 실행
-it: 컨테이너를 종료하지 않은체로, 터미널의 입력을 계속해서 컨테이너로 전달하기 위해서 사용
--name: 컨테이너에 이름을 부여하여 식별하고자 할 때 사용
-e: 환경변수를 설정할 때 사용, Dockerfile의 ENV 설정도 덮어써짐
-p: 호스트와 컨테이너 간의 포트 배포/바이드를 위해 사용
-v: 호스트와 컨테이너 간의 볼륨(volumn) 설정
-w: dockerfile의 workdir 설정을 덮어쓰기 위해 사용
--entrypoint: Dockerfile의 ENTRYPOINT 설정을 덮어쓰기 위해서 사용
--rm: 컨테이너를 일회성으로 실행할 때 주로 사용, 컨테이너가 종료될 때 컨테이너와 관련된 리소스(파일 시스템, 볼륨)까지 깨끗이 제거
출처 : https://www.daleseo.com/docker-run/
- 컨테이너 실행 중지
docker stop [옵션] <컨테이너이름>
- 컨테이너 삭제
docker rm [옵션] <컨테이너이름>
실행중인 컨테이너 관리 명령어
- 포그라운드로 실행중인 컨테이너에 연결
docker attach [옵션] <컨테이너이름>
docker attach centos
- 컨테이너에서 동작되는 프로세스 확인
docker top [옵션] <컨테이너이름>
- 동작중인 컨테이너가 생성한 로그 보기
docker logs [옵션] <컨테이너이름>
docker logs -f
- 동작중인 컨테이너에 New 명령어 추가 실행
docker exec [옵션] <컨테이너이름> <명령어>
docker exec -it webserver /bin/bash
출처: 따배도