## CLI 형식 ```powershell docker container [하위 명령] [옵션] ``` ## 주요 하위 명령 |하위 커맨드|내용|상위 커맨드 생략|주요 옵션| |-|-|-|-| |`start`|컨테이너 실행|O|-i| |`stop`|컨테이너 정지|O| | |`create`|도커 이미지로 컨테이너 생성|O|--name -e -p -v| |`run`|`docker image pull` > `docker container create` > `docker container start` 를 하나로 합한 것|O|--name -e -p -v -d -i -t| |`rm`|컨테이너 삭제. 먼저 정지해야 함|O|-f -v| |`exec`|실행 중인 컨테이너 속 프로그램 실행|O|-i -t| |`ps`|컨테이너 목록 출력|O|-a| |`cp`|도커 컨테이너와 도커 호스트 간의 파일 복사|O| | |`commit`|도커 컨테이너를 이미지로 변환|O| | ![[A. Docker CLI 주요 옵션 정리|주요 옵션 형식과 의미]] ## 사용 예시 ### 컨테이너 생명 주기 #### 공식 이미지 httpd 로 컨테이너 생성 후 실행 ``` docker container run --name my-web-server -d -p 7777:80 httpd ``` - 포트는 7777(호스트 포트 번호), 80(컨테이너 포트 번호)가 되며, 웹 사이트 접속은 http://localhost:7777/ 로 할 수 있음 - container 하위 명령어를 쓸 때는 container를 **생략 가능**함 #### ngnix 이미지로 컨테이너 생성 후 실행 ```powershell docker run --name my-nginx -d -p 7070:80 nginx ``` #### mysql 이미지로 컨테이너 생성 후 실행 ``` docker run –-name mysql_db –dit -p 3306:3306 –e MYSQL_ROOT_PASSWORD=[비밀번호] -e MYSQL_DATABASE=[데이터베이스 이름] –e MYSQL_USER=[사용자이름] –e MYSQL_PASSWORD=[패스워드] -e TZ=Asia/Seoul mysql --character-set-server=[문자_인코딩] --collation-server=[정렬_순서] --default-authentication-plugin=[인증방식] ``` - `-dit` : 백그라운드 실행 및 터미널(키보드)를 통해 컨테이너 내부 파일 시스템 조작 - 이 컨테이너가 실행되는 동안에는 MySQL workbench에서 컨테이너의 DB가 뜸 - 볼륨을 자동으로 설정하기 때문에 데이터가 영속적임 #### 컨테이너 목록 조회 ```powershell docker container ps -a ``` #### 컨테이너 정지 ```powershell docker container stop my-web-server ``` ##### 모든 컨테이너 정지 ``` docker container stop $(docker ps -a -q) ``` #### 컨테이너 삭제 ```powershell docker container rm my-web-server ``` - 이미지는 삭제되지 않고 남아있음. 이미지는 따로 삭제해야 함. ##### 모든 컨테이너 삭제 ``` docker container rm $(docker ps -a -q) ``` ### 기타 #### 컨테이너와 호스트 간 파일 복사 ```powershell docker container cp [복사되는 파일] [저장되는 위치] ``` ```powershell docker container cp C:/iotest/index.html my-web-server:/usr/local/apache2/htdocs/ ``` ```powershell docker container cp my-web-server:/usr/local/apache2/htdocs/index.html C:/iotest/ ``` #### 컨테이너 안 Shell 실행 ```powershell docker container exec -it my-web-server bash ``` - `-it` : 컨테이너 내부 파일 시스템 조작 ##### 결과 ```shell root@0ac7c4ebb9bb:/usr/local/apache2# whoami root root@0ac7c4ebb9bb:/usr/local/apache2# pwd /usr/local/apache2 root@0ac7c4ebb9bb:/usr/local/apache2# ls bin build cgi-bin conf error htdocs icons include logs modules root@0ac7c4ebb9bb:/usr/local/apache2# cd htdocs root@0ac7c4ebb9bb:/usr/local/apache2/htdocs# ls index.html ```