2021/개발

Docker Commands

mjin.park 2021. 1. 6. 23:24

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

docker를 이용하여 이미지를 컨테이너를 생성한다.

Operator exclusive options

이미지 개발자가 아니라 컨테이너를 생성하는 시점에만 줄 수 있는 옵션들

- Detached vs foreground
    - Detached (-d)
    - Foreground
- Container identification
    - Name (--name)
    - PID equivalent
- IPC settings (--ipc)
- Network settings
- Restart policies (--restart)
- Clean up (--rm)
- Runtime constraints on resources
- Runtime privilege and Linux capabilities
  • Foreground에 추가될 수 있는 옵션들

    • -a=[] : Attach to STDIN, STDOUT and/or STDERR
    • -t : Allocate a pseudo-tty
    • --sig-proxy=true : Proxy all received signals to the process (non-TTY mode only)
    • -i : Keep STDIN open even if not attached
  • IPC Modes - 자세히

    Value Description
    "" Use daemon's default
    "none" Own private IPC namespace, with /dev/shm not mounted
    "private" Own private IPC namespace
    "shareable" Own private IPC namespace, with a possibility to share it with other containers
    "container: <name-or-ID>" Join another ("shareable") container's IPC namespace
    "host" Use the host system's IPC namespace
  • Network Settings - 자세히

      --dns=[]           : Set custom dns servers for the container
      --network="bridge" : Connect a container to a network
                           'bridge': create a network stack on the default Docker bridge
                           'none': no networking
                           'container:<name|id>': reuse another container's network stack
                           'host': use the Docker host network stack
                           '<network-name>|<network-id>': connect to a user-defined network
      --network-alias=[] : Add network-scoped alias for the container
      --add-host=""      : Add a line to /etc/hosts (host:IP)
      --mac-address=""   : Sets the container's Ethernet device's MAC address
      --ip=""            : Sets the container's Ethernet device's IPv4 address
      --ip6=""           : Sets the container's Ethernet device's IPv6 address
      --link-local-ip=[] : Sets one or more container's Ethernet device's link local IPv4/IPv6 addresses

    기본값으로 모든 컨테이너들은 네트워크가 켜져있고, 외부와 연결될 수 있다.

    컨테이너의 네트워크를 끄고 싶다면, docker run --network none처럼 --network none 옵션을 추가해주면 된다.

  • 재시작 정책 (--restart) - 자세히

    Policy Result
    no (기본값) 컨테이너가 종료되더라도 재시작하지 않음
    on-failure[:max-retries] 컨테이너의 종료 코드가 0이 아닐 때(= 비정상종료), 재시작한다. max-retries를 지정할 수 있고, 지정하지 않으면 무한대로 설정된다. docker inspect 명령을 이용하여 재시작 횟수, 마지막 재시작 시각 등을 조회할 수 있다.
    always 종료 코드는 무시하고 계속 컨테이너를 재시작한다.
    unless-stopped 컨테이너를 stop되기 전까지 항상 재시작한다. (서버 재부팅 시, 컨테이너를 다시 실행)
  • Clean Up (--rm)

    기본적으로 컨테이너의 파일 시스템은 컨테이너가 종료된 후에도 유지된다.

    하지만 짧은 포그라운드 프로세스를 실행하는 경우에 불필요하다면 --rm옵션을 주면 프로세스 종료 시, 파일 시스템이 제거된다.

  • Security Configuration - 자세히

  • Specify an init process

    --init 옵션을 주면, PID가 1인 init 프로세스로 시작할 수 있다.

  • Runtime constaints on resources - 자세히

    Memory, CPU, I/O 등 자원에 대한 제약사항을 설정하는 부분

  • Runtime privilege and linux Capabilities - 자세히

    Option Description
    --cap-add Add linux capabilities
    --cap-drop Drop linux capabilities
    --privileged Give extended privileges to this container
    --device=[] Allows you to run devices inside the container without the --privilged flag

리눅스의 Capability는 여기를 참고.

References:

  1. https://docs.docker.com/engine/reference/run
  2. http://pyrasis.com/book/DockerForTheReallyImpatient
반응형

'2021 > 개발' 카테고리의 다른 글

Spring Boot - An illegal reflective access operation has occurred  (0) 2021.04.24
JWT(JSON Web Token)  (0) 2021.02.06
인증서 유효성 검증 방법  (0) 2021.01.03
Ubuntu apt-get update 실패  (0) 2021.01.03
CPU 정보 확인하기  (0) 2021.01.03