도커(docker) 명령어 정리

이 글은 Dockerfile, docker-compose 말고 그냥 간단한 docker 명령어에 대해서 정리해놓은 글이다.

이미지 받기

이미지는 pull 명령어를 이용해서 받을 수 있다.
예시 : docker pull ubuntu:18.04

받은 이미지로 컨테이너 생성

컨테이너 생성 : docker run <옵션> <이미지 이름> <실행할 파일>
run 명령어는 생성할 컨테이너의 이미지가 이미 존재할 때 사용한다.
예시 : docker run -it -d -p 6001:80 –-name abcd ubuntu /bin/bash
(포트는 여러개 지정 가능하다. -p 6001:80 6002:22)

run 명령어 옵션

-i, -t : 실행된 Bash 쉘에 입력 및 출력을 할 수 있다.  
–name : 컨테이너의 이름을 지정할 수 있다. (해당 옵션을 생략하면 랜덤한 이름으로 자동 지정됩니다.)  
-d : 컨테이너를 백그라운드로 실행시키는 옵션이다. 컨테이너 접속 후 해제하여도 컨테이너가 종료되지 않게 한다.  
-p : 포트 포워딩 옵션이다. 호스트 포트와 컨테이너 포트를 연결 한다. (여러개의 포트를 지정 가능)

그 외 다양한 명령어 정리

실행중인 컨테이너 출력 : docker ps
모든 컨테이너 출력 : docker ps -a
컨테이너 실행 : docker start <컨테이너 이름>
컨테이너 정지 : docker stop <컨테이너 이름>
컨테이너 삭제 : docker rm <컨테이너 이름>
컨테이너 접속(attach) : docker attach <컨테이너 이름>
컨테이너 접속(exec) : docker exec -it <컨테이너 이름> /bin/bash
컨테이너를 안끄고 컨테이너 쉘에서 나가기 : Ctrl + p + q

기존 컨테이너를 복사하는 방법 : 도커 이미지가 margaret이라고 가정하면

1. docker commit margaret  
2. docker images 로 생성된 이미지 ID를 확인하고 (4d6f9b59ea5d로 가정)  
3. docker tag 4d6f9b59ea5d <바꿀 이미지 이름>  
4. docker run -it -d -p 6001:80 –name margaret_copy <바꾼 이미지 이름> /bin/bash

이렇게 기존에 있던 컨테이너를 이미지를 만들 수 있다. (보통 이미지 자체보단 Dockerfile로 많이 배포함)
그리고 위 명령어에서 <컨테이너 이름> 대신 컨테이너 id를 넣어도 된다.

자주 쓰는 꿀 명령어

컨테이너 한방에 stop하기 : docker stop $(docker ps -q)
컨테이너 한방에 rm하기 : docker rm $(docker ps -a -q)
이미지 한방에 날리기 : docker rmi $(docker images -q)

여기서 -q는 컨테이너, 이미지의 id를 출력해주는 옵션이다.

이미 셋팅된 컨테이너 받기 with Docker hub

도커는 사용자들끼리 여러 커스텀 컨테이너 이미지를 공유하는 커뮤니티가 있다.
예를 들면, 내가 아파치하고 PHP7.4가 이미 셋팅 컨테이너가 필요하다고 한다면 docker pull php:7.4-apache 이렇게.
직접 아파치와 PHP7.4를 설치할 필요없이 이미 셋팅된 컨테이너를 받아서 사용할 수 있다.

docker hub : https://hub.docker.com

위 사이트에 들어가서 자기가 원하는 컨테이너를 (apache2, php, flask 등)을 검색해서 다운받아 사용하면 된다.