본문 바로가기
Docker

Docker run 명령어 정리

by Rogan_Kim 2023. 3. 1.
728x90

run - 컨테이너 실행

docker run [option] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG... ]

'[]'는 선택적 인수를 뜻한다.

 

아래는 [option]에 들어갈 수 있는 것들이다.

옵션 설명
-d detached mode(백그라운드 모드)
-p 호스트와 컨테이너 포트를 연결
-v 호스트와 컨테이너의 디렉토리를 연결
-e 컨테이너 내에서 사용할 환경변수 설정
-it -i와 -t를 동시에 사용한 것으로 실행하고 터미널 입력을 위한 옵션
--name 컨테이너 이름 설정
--rm 프로세스 종료시 컨테이너 자동 제거
--network 네트워크 연결

 

 

 

직접 써보고 명령어 차이 알아보기 

docker run ubuntu:20.04

run 명령어를 사용하면 사용할 이미지가 저장되어 있는지 확인하고 없으면 pull(다운로드) 한 후 컨테이너를 생성하고 시작합니다.

하지만 위의 명령어만 입력했을 때, 컨테이너는 바로 종료될 것입니다.

컨테이너는 프로세스이기에 실행 중인 프로세스가 없으면 컨테이너가 종료됩니다.

 

바로 종료되지 않기 하기 위해서 터미널 입력을 위한 옵션을 사용해 보겠습니다.

docker run -it ubuntu:20.04 /bin/sh

위처럼 명령어를 입력하게 되면 터미널로 접속됩니다.

나갈 때는 'exit'를 입력하면 됩니다.

 

또한 여기서 나가면 컨테이너는 남아있습니다. 

직접 지워야 하는 번거로움이 생기기에 --rm 명령어를 사용할 수 있습니다.

docker run --rm -it ubuntu:20.04 /bin/sh

 

이처럼 옵션은 여러 개를 넣어서 사용할 수 있습니다.

 

 

마지막으로 자주보이는 docker로 mysql 실행 명령어

docker run -d -p 3307:3307 --name mysqldocker -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql

 

여기서 쓰인 옵션을 살펴보겠습니다.

 

-d -> 백그라운드로 실행했습니다. 

-p -> port를 3307로 열었는데, 저는 로컬에 3306 port로 mysql을 쓰고 있어서 3307로 열었습니다.

--name -> 이미 mysql이 있어서 mysqldocker로 이름을 지정해 주었습니다.

-e -> 환경변수를 넣어 준 것인데 컨테이너로 접속할 때 ' Access denied for user 'root'@'localhost' (using password: YES)' 이런 에러를 보기 싫어서 처음에 패스워드 없이 접속할 수 있게 풀어 주었습니다.

 

마지막으로 mysql image를 사용하였다. 뒤에 [:TAG|@DIGEST]를 사용하지 않으면 대부분 latest(최신)를 따라갑니다.

 

위의 명어로 성공적으로 실행되면 아래와 같은 컨테이너 id를 받을 것입니다.

1fb3c24d18148becaf437202b22d4ca92d5009bd11231cas0c1ae366fc88862e9e29d2a

 

그러면 이제 exec 명령어로 db에 접속할 수  있다.

docker exec -it mysqldocker mysql

 

여기서 확실히 짚고 넘어가야 할 것은

exec은 실행 중인 도커 컨테이너에 접속할 때 쓰는 명령어다 터미널로 접속하기 위해서는 -it 옵션을 추가적으로 입력해 줘야 합니다.

 

 

 

Run 이외의 명령어들

 

docker ps

실행중인 컨테이너 목록을 확인하는 명령어 입니다.

 

CONTAINER ID, IMAGE, COMMAND, CREATED, STATUS, PORTS, NAMES 같은 정보를 확인 할 수 잇습니다.

 

docker ps -a

-a 옵션을 붙이면 중지된 컨테이너도 확인할 수 있습니다.

 

docker stop [OPTIONS] CONTAINER [CONTAINER...]

실행중인 컨테이너를 중지하는 명령어 입니다.

한칸씩 띄어쓰기로 여러개도 한번에 중지 할 수 있습니다. (Docker Desktop이 더 편함)

 

docker rm [OPTIONS] CONTAINER [CONTAINER...]

종료된 컨테이너를 완전히 제거하는 명령어입니다.

 

docker logs [OPTIONS] CONTAINER

컨테이너가 정상적으로 동작하는지 확인할 수 있는 로그를 확인하는 명령어입니다.

 

docker images [OPTIONS] [REPOSITORY[:TAG]]

도커가 다운로드한 이미지 목록을 보는 명령어 입니다.

 

docker pull [OPTIONS] NAME[:TAG|@DIGEST]

docker pull ubuntu:18.04

이미지를 다운로드하는 명령어 입니다.

 

docker rmi [OPTIONS] IMAGE [IMAGE...]

이미지를 삭제하는 방법입니다.

docker images로 리스트를 보고, image id나 repository를 넣으면 됩니다.

그리고 컨테이너가 실행중인 이미지는 삭제가 되지 않습니다.

 

docker network create [OPTIONS] NETWORK

docker network create app-network

도커 컨테이너끼리 이름으로 통신할 수 있는 가상 네트워크를 만드는 명령어 입니다.

 

docker network connect [OPTIONS] NETWORK CONTAINER

docker network connect app-network mysqldocker

그리고 네트워크 컨테이너를 추가하는 명령어 입니다.

mysqldocker를 네트워크에 추가하는 예시입니다.

728x90

'Docker' 카테고리의 다른 글

mysql docker-compose-up 해보기  (0) 2023.03.02

댓글