이번 포스트에는 docker 기본 명령어 정리하겠습니다.
도커 환경 설치에 대해 모르신다면 아래의 링크를 참조
https://spidyweb.tistory.com/277
도커 이미지, 컨테이너 개념에 대해 모르신다면 아래의 링크를 참조
https://spidyweb.tistory.com/278
1. docker 기본 명령어
docker는 OS의 자원을 사용하기 때문에 기본적으로 Root사용자에서 명령어를 사용해야합니다. OR 명령어 앞에 sudo(super user do)를 붙여 사용해야 합니다.
sudo를 붙이기 싫으시면 아래의 링크를 참조해주세요.
https://spidyweb.tistory.com/277?category=790761
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명령어사용
'DevOps > Docker' 카테고리의 다른 글
[Docker] docker 이미지 저장(commit), docker hub에 이미지 올리기, docker hub에서 이미지 받아오기 (0) | 2021.09.14 |
---|---|
[Docker] docker MySQL, postgreSQL 실행해보기 (0) | 2021.08.26 |
[Docker] docker 이미지(image), 레이어(layer), 컨테이너(container) (0) | 2021.08.23 |
[Docker] Docker란? ubuntu 18.04 에서 도커 설치하기, centos-7 에서 도커 설치하기 (0) | 2021.08.23 |
가상화 기술이란? 컨테이너란?/도커(docker) vs VMware /컨테이너(container),하이퍼바이저(hypervisor) (0) | 2020.07.07 |
댓글