[docker] 컨테이너 By starseat 2023-01-16 12:43:09 server/oss Post Tags # 컨테이너 ## 생애 주기 - 생성 (create) > 실행 (start) > 정지 (stop) > 폐기 (rm) - 도커는 **쓰고 버리는 방식**으로 사용 - 컨테이너 폐기 전에 컨테이너를 정지 시켜야 함! (동작중인 컨테이너 삭제 불가) ## docker run - 컨테이너를 생성하고 실행 - `docker container run` - `docker run`: create, start, pull 명령어들을 합친 명령어 - docker create (docker container create): 컨테이너 생성 - docker start (docker container start): 컨테이너 실행 - docker pull (docker container pull): 이미지 내려받기 - 커맨드 사용 예 - run: 커맨드 - 이미지: 대상 ```text docker run (옵션) 이미지 (인자) ``` - 주요 옵션 | 옵션 (생략형) | 옵션 (pull) | 내용 | | -- | -- | -- | | -name {컨테이너 이름} | | 컨테이너 이름 지정 | | -p {호스트 port}:{컨테이너 port} | --publish | 포트번호 지정 | | -v {호스트 disk}:{컨테이너 directory} | --volume | 볼륨을 마운트 | | --net={네트워크 명} | | 컨테이너를 네트워크에 연결 | | -e {환경 변수 명}={값} | --env | 환경 변수 설정 | | -d | --detach | 백그라운드로 실행 | | -i | --interactive | 컨테이너에 터미널을 연결 | | -t | --tty | 특수 키를 사용 가능하도록 함 | | -help | | 안내 메시지 출력 | ## docker stop - 컨테이너 정지 - `docker container stop` - 커맨드 사용 예 ```text docker stop {컨테이너 이름} ``` ## docker rm - 컨테이너 삭제 - `docker container rm` - 커맨드 사용 예 ```text docker rm {컨테이너 이름} ``` ## docker ps - 컨테이너의 목록 및 정보 출력 - `docker container ls` - 커맨드 사용 예 ```text docker ps (옵션) ``` - `-a` 옵션을 추가하면 현재 존재하는 컨테이너 뿐만 아니라 정지 상태의 컨테이너를 포합한 모든 컨테이너를 출력함. - `docker ps` 시의 title 설명 | title | 내용 | | -- | -- | | CONTAINER ID | 컨테이너 식별자본래는 64글자지만 앞 12글자만 출력 | | IMAGE | 컨테이너를 만들 때 사용한 이미지 명 | | COMMAND | 컨테이너 실행 시에 실행하도록 설정된 프로그램의 이름(크게 신경 쓰지 않아도 됨.) | | CREATED | 컨테이너 생성 후 경과된 시간 | | STATUS | 컨테이너의 현재 상태 `Up`: 실행 중, `Exited`: 종료 상태 | | PORTS | 컨테이너에 할당된 포트 번호.`호스트 포트 번호` -> `컨테이너 포트 번호`동일한 포트 번호일 경우 하나만 출력 | | NAMES | 컨테이너 이름 | ## 사용 예 | 이미지 | 컨테이너 | 주로 사용되는 옵션 | | -- | -- | -- | | httpd | Apache | -d (백그라운드 실행), -p (포트번호 지정) | | nginx | Nginx | -d (백그라운드 실행), -p (포트번호 지정) | | mysql | MySQL | -d , -e MYSQL_ROOT_PASSWORD=rootpass | | mariadb | MariaDB | -d , -e MYSQL_ROOT_PASSWORD=rootpass | | postgres | PostgresSQL | -d , -e MYSQL_ROOT_PASSWORD=rootpass | ```text > docker run --name nginx000ex1 -d -p 8081:80 nginx > docker run --name mysql000ex1 -dit -e MYSQL_ROOT_PASSWORD=rootpass mysql ``` - `-dit`: 백그라운드 실행 및 컨테이너 내부 파일 시스템 조작 가능 - `mysql`: MySQL 이미지명. 버전을 지정하지 않았으므로 최신 버전 (lastest) 사용 ## 컨테이너 이미지 ### 이미지 확인 - `docker image ls` 사용 - 이미지 정보 확인 - 이미지 삭제 시 이미지 이름이나 이미지 ID 를 알아야 함. - 이미지 title 정보 | title | 내용 | | -- | -- | | REPOSITORY | 이미지 명 | | TAG | 버전 정보 같은 태그 정보. 이미지를 내려받을 때 따로 지정하지 않으면 최신 버전(lastest) 사용 | | IMAGE ID | 이미지 식별자, 본래는 64글자지만 앞 12글자만 출력 | | CREATED | 이미지 생성 후 경과된 시간 | | SIZE | 이미지 전체 용량 | ### 이미지 삭제 - `docker rm` 은 **이미지가 아닌 컨테이너가 삭제** 되므로 유의할 것! - `docker image rm` 사용 ```text // 이미지 삭제 > docker image rm {이미지 이름} // 이미지 여러 개 삭제 > docker image rm {이미지 이름 1} {이미지 이름 2} {이미지 이름 3} ... ``` # 출처 - [그림과 실습으로 배우는 도커 & 쿠버네티스](https://wikibook.co.kr/dkkb/) Previous Post [docker] 도커 명령어 Next Post [docker] 도커 네트워크