SERVICES/Docker
docker options
axelrod입니다
2024. 12. 2. 18:46
1. -i, -t, -d 옵션
-i (interactive)
- 설명: 컨테이너의 표준 입력(STDIN)을 유지합니다.
- 사용 상황: 컨테이너 내에서 상호작용이 필요한 경우에 사용합니다. 예를 들어, 컨테이너 내부에서 쉘을 실행하거나, 실행 중인 프로세스와 상호작용해야 할 때 사용합니다.
- 예시:
이 명령어는 Ubuntu 컨테이너를 실행하고, 표준 입력을 유지하여 사용자가 명령어를 입력할 수 있게 합니다.docker run -i ubuntu /bin/bash
-t (tty)
- 설명: 가상 터미널(TTY)을 할당합니다.
- 사용 상황: -i 옵션과 함께 사용하여 터미널 환경을 제공합니다. 이는 사용자가 컨테이너와 상호작용할 때 더 나은 사용자 경험을 제공합니다.
- 예시:
이 명령어는 Ubuntu 컨테이너를 실행하고, 사용자가 컨테이너 내에서 터미널을 사용할 수 있게 합니다.docker run -it ubuntu /bin/bash
-d (detach)
- 설명: 컨테이너를 백그라운드에서 실행합니다.
- 사용 상황: 컨테이너를 백그라운드에서 실행하고 싶을 때 사용합니다. 이는 서버 애플리케이션을 실행할 때 유용합니다. 예를 들어, 웹 서버나 데이터베이스 서버를 백그라운드에서 실행하고 싶을 때 사용합니다.
- 예시:
이 명령어는 Nginx 웹 서버를 백그라운드에서 실행합니다.docker run -d nginx
조합 사용 (-itd)
- 설명: 위의 옵션들을 조합하여 컨테이너를 실행합니다.
- 사용 상황: 컨테이너를 백그라운드에서 실행하면서, 필요시 상호작용이 가능하게 하고 싶을 때 사용합니다.
- 예시:
이 명령어는 Ubuntu 컨테이너를 백그라운드에서 실행하고, 상호작용이 필요할 때 터미널을 통해 접속할 수 있게 합니다.docker run -itd ubuntu /bin/bash
2. -p 옵션
-p (publish)
- 설명: 호스트와 컨테이너 간의 포트를 매핑합니다.
- 사용 상황: 호스트 시스템에서 컨테이너 내부의 네트워크 서비스에 접근할 수 있게 하고 싶을 때 사용합니다. 예를 들어, 웹 서버나 데이터베이스 서버를 외부에서 접근할 수 있도록 설정할 때 사용합니다.
- 예시:
이 명령어는 Nginx 웹 서버를 백그라운드에서 실행하고, 호스트의 8080 포트를 컨테이너의 80 포트에 매핑합니다.docker run -d -p 8080:80 nginx
3. --name 옵션
--name
- 설명: 컨테이너에 이름을 지정합니다.
- 사용 상황: 컨테이너에 접근하거나 관리할 때 더 쉽게 식별할 수 있도록 이름을 지정할 때 사용합니다.
- 예시:
이 명령어는 Nginx 웹 서버를 백그라운드에서 실행하고, 컨테이너 이름을 mynginx로 지정합니다.docker run -d --name mynginx nginx
4. -v 옵션
-v (volume)
- 설명: 호스트와 컨테이너 간의 디렉토리를 공유합니다.
- 사용 상황: 호스트의 데이터를 컨테이너와 공유하거나, 컨테이너의 데이터를 호스트에 저장하고 싶을 때 사용합니다.
- 예시:
이 명령어는 Nginx 웹 서버를 백그라운드에서 실행하고, 호스트의 /host/data 디렉터리를 컨테이너의 /container/data 디렉터리에 매핑합니다.docker run -d -v /host/data:/container/data nginx
5. --rm 옵션
--rm
- 설명: 컨테이너가 종료되면 자동으로 삭제합니다.
- 사용 상황: 일회성 작업을 위해 컨테이너를 실행할 때 사용합니다. 컨테이너가 종료된 후 자동으로 삭제되므로, 불필요한 컨테이너가 남지 않습니다.
- 예시:
이 명령어는 Ubuntu 컨테이너를 실행하여 "Hello, world!"를 출력하고, 작업이 완료되면 컨테이너를 자동으로 삭제합니다.docker run --rm ubuntu /bin/echo "Hello, world!"
물론입니다. Docker 컨테이너를 실행할 때 자주 사용되는 옵션들에 대해 더 많은 정보를 제공하겠습니다.
6. --env 옵션
--env (또는 -e)
- 설명: 컨테이너 내에서 환경 변수를 설정합니다.
- 사용 상황: 컨테이너에서 실행되는 애플리케이션에 필요한 환경 변수를 설정할 때 사용합니다.
- 예시:
이 명령어는 MySQL 컨테이너를 실행하고, MYSQL_ROOT_PASSWORD 환경 변수를 root로 설정합니다.docker run -d -e MYSQL_ROOT_PASSWORD=root mysql
7. --volume 옵션
--volume (또는 -v)
- 설명: 호스트와 컨테이너 간의 디렉토리를 공유합니다.
- 사용 상황: 호스트의 데이터를 컨테이너와 공유하거나, 컨테이너의 데이터를 호스트에 저장하고 싶을 때 사용합니다.
- 예시:
이 명령어는 Nginx 웹 서버를 백그라운드에서 실행하고, 호스트의 /host/data 디렉터리를 컨테이너의 /container/data 디렉터리에 매핑합니다.docker run -d -v /host/data:/container/data nginx
8. --network 옵션
--network
- 설명: 컨테이너가 연결될 네트워크를 지정합니다.
- 사용 상황: 여러 컨테이너가 동일한 네트워크 내에서 통신하도록 설정할 때 사용합니다.
- 예시:
이 명령어는 Nginx 컨테이너를 실행하고, mynetwork 네트워크에 연결합니다.docker run -d --network mynetwork nginx
9. --restart 옵션
--restart
- 설명: 컨테이너가 중지되었을 때 자동으로 재시작하도록 설정합니다.
- 사용 상황: 중요한 애플리케이션이 항상 실행되도록 보장하고 싶을 때 사용합니다.
- 예시:
이 명령어는 Nginx 컨테이너를 실행하고, 컨테이너가 중지되었을 때 재시작합니다. 수동으로 중지한 경우에는 재시작하지 않습니다.docker run -d --restart unless-stopped nginx
10. --link 옵션
--link
- 설명: 다른 컨테이너와 연결을 설정합니다.
- 사용 상황: 한 컨테이너가 다른 컨테이너에 접근할 수 있도록 설정할 때 사용합니다. 주로 구버전의 Docker에서 사용되었으며, 현재는 --network를 사용하는 것이 권장됩니다.
- 예시:
이 명령어는 Nginx 컨테이너를 실행하고, db라는 이름의 컨테이너와 연결을 설정하여 db 호스트명을 통해 접근할 수 있도록 합니다.docker run -d --name web --link db:db nginx
11. --cpus 옵션
--cpus
- 설명: 컨테이너가 사용할 CPU 수를 제한합니다.
- 사용 상황: 특정 컨테이너가 사용할 수 있는 CPU 자원을 제한하고 싶을 때 사용합니다.
- 예시:
이 명령어는 Nginx 컨테이너를 실행하고, 컨테이너가 최대 1.5개의 CPU를 사용할 수 있도록 제한합니다.docker run -d --cpus="1.5" nginx
12. --memory 옵션
--memory (또는 -m)
- 설명: 컨테이너가 사용할 메모리 양을 제한합니다.
- 사용 상황: 특정 컨테이너가 사용할 수 있는 메모리 자원을 제한하고 싶을 때 사용합니다.
- 예시:
이 명령어는 Nginx 컨테이너를 실행하고, 컨테이너가 최대 512MB의 메모리를 사용할 수 있도록 제한합니다.docker run -d -m 512m nginx
13. --detach-keys 옵션
--detach-keys
- 설명: 컨테이너를 분리하는 데 사용할 키 시퀀스를 지정합니다.
- 사용 상황: 컨테이너를 분리하는 키 조합을 사용자 정의하고 싶을 때 사용합니다.
- 예시:
이 명령어는 Ubuntu 컨테이너를 실행하고, Ctrl+x 키 조합을 사용하여 컨테이너를 분리할 수 있도록 설정합니다.docker run -it --detach-keys="ctrl-x" ubuntu /bin/bash
14. --user 옵션
--user (또는 -u)
- 설명: 컨테이너 내에서 사용할 사용자 ID를 지정합니다.
- 사용 상황: 특정 사용자 권한으로 컨테이너를 실행하고 싶을 때 사용합니다.
- 예시:
이 명령어는 Ubuntu 컨테이너를 사용자 ID 1000과 그룹 ID 1000으로 실행합니다.docker run -d -u 1000:1000 ubuntu
이와 같은 다양한 Docker 옵션들을 이해하고 적절하게 사용하는 것이 중요합니다. 각 옵션은 특정 상황에서 유용하게 사용할 수 있으며, 이를 통해 Docker 컨테이너를 보다 효율적으로 관리하고 활용할 수 있습니다.