본문 바로가기
DevOps/Docker

[Docker] docker 기본 명령어 정리 (image, container)

by 스파이디웹 2021. 8. 23.
728x90

이번 포스트에는 docker 기본 명령어 정리하겠습니다.

 

도커 환경 설치에 대해 모르신다면 아래의 링크를 참조

https://spidyweb.tistory.com/277

 

[Linux] Docker란? ubuntu 18.04 에서 도커 설치하기, centos-7 에서 도커 설치하기

이번 포스트에는 docker에 대해 설명하고, ubuntu와 centos에 설치해보도록 하겠습니다. 1. Docker란 Docker는 응용 프로그램들을 소프트웨어 컨테이너 안에 배치시키는 일을 자동화하는 오픈 소스 프로

spidyweb.tistory.com

도커 이미지, 컨테이너 개념에 대해 모르신다면 아래의 링크를 참조

https://spidyweb.tistory.com/278

 

[Linux] docker 이미지(image), 레이어(layer), 컨테이너(container)

이번 포스트에는 docker의 이미지, 레이어, 컨테이너 개념을 알아보고 정리해보겠습니다. 1. 이미지(image) -도커에서 서비스 운영에 필요한 서버 프로그램, 소스코드 및 라이브러리, 컴파일된 실행

spidyweb.tistory.com

 

1. docker 기본 명령어

docker는 OS의 자원을 사용하기 때문에 기본적으로 Root사용자에서 명령어를 사용해야합니다. OR 명령어 앞에 sudo(super user do)를 붙여 사용해야 합니다.

 

sudo를 붙이기 싫으시면 아래의 링크를 참조해주세요.

https://spidyweb.tistory.com/277?category=790761 

 

[Linux] Docker란? ubuntu 18.04 에서 도커 설치하기, centos-7 에서 도커 설치하기

이번 포스트에는 docker에 대해 설명하고, ubuntu와 centos에 설치해보도록 하겠습니다. 1. Docker란 Docker는 응용 프로그램들을 소프트웨어 컨테이너 안에 배치시키는 일을 자동화하는 오픈 소스 프로

spidyweb.tistory.com

 

1-1) 이미지 관련

-이미지 목록 보기

sudo docker images

-이미지 검색

sudo docker search [이미지 이름]

-이미지 받기

sudo docker pull [이미지 이름]:[버전]

(latest를 쓰면 최신 버전으로 받아진다. 아무것도 안써도 default로 최신버전으로 받아진다.)

-이미지 삭제

sudo docker rmi [이미지 id]

(컨테이너를 삭제하기 전에 이미지를 삭제 할때, -f 옵션은 컨테이너까지 강제 삭제하게된다.)

sudo docker rmi -f [이미지 id]

1-2) 컨테이너 관련

-컨테이너 목록 보기

sudo docker ps

(옵션 -a: 모든 컨테이너 목록을 출력)

 

-컨테이너 생성 및 실행

sudo docker run [options] image[:Tag|@DIGEST] [COMMAND] [ARG...]

 

실행 옵션

-a : attach 컨테이너에 표준 입력(stdin), 표준 출력(stdout), 표준 에러(stderr)를 연결합니다.

-d : detached mode 흔히 말하는 백그라운드 모드

-dns : 컨테이너에서 사용할 DNS 서버를 설정합니다. ex) -dns="8.8.8.8"

-p : 호스트와 컨테이너의 포트를 연결 (포트 포워딩)

-v : 호스트와 컨테이너의 디렉토리를 연결 (마운트)

-e : 컨테이너 내에서 사용할 환경변수 설정 ex)  -e MYSQL_ROOT_PASSWORD=examplepassword

--name : 컨테이너 이름 설정

-i : 상호 입출력

(컨테이너에 연결되어 있지 않더라도 표준 입력을 유지)

(컨테이너의 표준 입력과 로컬 컴퓨터의 키보드 입력을 연결)

-t : tty를 활성화하여 bash 쉘을 사용

-expose : 컨테이너의 포트를 호스트와 연결만 하고 외부에는 노출x ex) -expose="3306"

-h : 컨테이너의 호스트 이름을 설정

-m : 메모리 한계를 설정 <숫자><단위>형식이며, 단위는 b,k,m,g 사용 ex) -m ="1g"

--rm : 프로세스 종료시 컨테이너 자동 제거

--link : 컨테이너 연결 [컨테이너 명: 별칭]

-컨테이너 생성만

docker create [options] [--name 컨테이너명] [이미지명]

 

-컨테이너 시작만

docker start [컨테이너명 or ID]

-컨테이너 재시작

docker restart [컨테이너명 or ID]

-컨테이너 실행(접근)만

docker attach [컨테이너명 or ID]

(컨테이너가 시작된 상태여야 접근 가능)

-컨테이너 정지

sudo docker stop [컨테이너 id 또는 name]

(현재 시작되어 있는 컨테이너 정지시키기)

(bash shell에서 exit 또는 ctrl+d로도 정지가능)

(ctrl+p, ctrl+q는 컨테이너를 정지하지 않고 빠져나옴)

 

-컨테이너 삭제

sudo docker rm [컨테이너 id 또는 name]

(컨테이너가 실행중이면 종료하고 삭제)

-모든 컨테이너 삭제

sudo docker container prune

 

*docker exec는 무엇이고 어떨 때 사용하나요?

  • docker 컨테이너는 시스템 관점에서 보면 하나의 프로세스
  • 각각의 컨테이너는 호스트 시스템과는 별개의 파일 시스템, 네트워크, 권한 등 다른 환경을 가지고 있다.
  • 특정한 컨테이너가 실행되는 환경에서 또 다른 프로세스를 실행할 수 있도록 해주는 명령어가 바로 docker exec
  • 특정 컨테이너 환경에서 명령어를 실행하거나 내부환경에 대해서 알아보거나 디버깅
  • 특정 컨테이너가 중지되진 않고 실행되고 있는 상태에서 접근(attach)를 통해 bash로 가지 않고도 특정 컨테이너 안의 명령어를 실행하는 개념

ex) docker에 접근 하지 않고, ls명령어사용

 

728x90

댓글