개발도구

Docker

소개

가상 머신처럼 독립된 실행환경을 만들어주는 도구. 마치 운영체제에 운영체제를 설치하는 것처럼 실행 된다. 하지만 운영체제는 실제로 설치되지 않기 때문에 설치 용량이 적고 빠르다. 

홈페이지

https://docker.com/

사용법

http://pyrasis.com/Docker/Docker-HOWTO

댓글

댓글 본문
  1. Sansol Park
    Docker에 관한 질문에 대해 답변드리겠습니다.

    ### 1. **Ubuntu + 여러 패키지 환경 구축**

    **질문 요약**: `ubuntu-zsh-emacs-python-pytorch` 환경을 구축하고자 할 때, 각각의 이미지를 따로 띄우는 게 좋을지, 아니면 하나의 베이스 이미지에서 필요한 패키지를 모두 설치하는 것이 좋을지에 대한 질문.

    **답변**: 일반적으로 하나의 컨테이너에 필요한 모든 패키지를 설치하는 것이 더 효율적입니다. 각각의 이미지를 따로 띄우고 연계하는 것도 가능하지만, 관리와 실행이 복잡해질 수 있습니다.

    - **추천 방법**: `ubuntu` 이미지를 베이스로 사용하는 Dockerfile을 작성하여 `zsh`, `emacs`, `python`, `pytorch` 등을 모두 설치하세요. Dockerfile을 사용하면 이 환경을 재현할 수 있어 여러 환경에서 동일한 개발 환경을 유지할 수 있습니다.

    예시 Dockerfile:
    ```Dockerfile
    FROM ubuntu:latest
    RUN apt-get update && apt-get install -y zsh emacs python3 pip
    RUN pip install torch # PyTorch 설치
    # 추가로 필요한 설정이나 패키지 설치
    CMD ["/bin/zsh"]
    ```

    - **각각의 이미지를 사용하여 연계하는 방법**: Docker Compose를 사용하면 여러 컨테이너를 함께 실행하고 연결할 수 있습니다. 그러나 단순한 개발 환경 구축을 위해서는 하나의 컨테이너에 필요한 모든 패키지를 설치하는 것이 더 나을 수 있습니다.


    이 답변들이 도움이 되길 바랍니다! Docker에 대해 더 궁금한 점이 있다면 언제든지 질문해 주세요.
    대화보기
    • Sansol Park
      ### 2. **이미 생성한 컨테이너에 새로운 옵션 추가**

      **질문 요약**: 이미 생성된 컨테이너에 대해 `docker run`에서 줬던 옵션을 나중에 추가할 수 있는지에 대한 질문.

      **답변**: 이미 생성된 컨테이너에 새로운 옵션을 추가하는 것은 불가능합니다. `docker start`는 단순히 중지된 컨테이너를 재시작하는 명령이며, 새로운 옵션을 추가로 전달할 수 없습니다.

      - **해결 방법**:
      1. **새로운 컨테이너 생성**: 새로운 옵션을 사용하려면 기존의 컨테이너를 삭제하고 새로 생성해야 합니다. `docker commit` 명령을 사용해 컨테이너를 이미지로 저장하고, 그 이미지로 새로운 컨테이너를 생성하면서 옵션을 추가할 수 있습니다.

      ```bash
      docker commit [container_id] new_image_name
      docker run -v /src/dir:/dst/dir -it new_image_name /bin/bash
      ```

      2. **데이터 유지**: 만약 컨테이너 내 데이터를 유지하려면, 기존 컨테이너에서 데이터를 볼륨으로 마운트하거나 백업한 후, 새로운 컨테이너에서 해당 데이터를 다시 마운트하거나 복구하는 방법을 사용할 수 있습니다.


      이 답변들이 도움이 되길 바랍니다! Docker에 대해 더 궁금한 점이 있다면 언제든지 질문해 주세요.
      대화보기
      • Sansol Park
        **Docker 컨테이너에 IP 할당 방법**

        **질문 요약**: Docker 컨테이너에 특정 IP를 할당하는 방법에 대한 질문.

        **답변**: Docker 컨테이너에 특정 IP를 할당하려면 사용자 정의 네트워크를 생성하여 컨테이너에 고정 IP를 할당할 수 있습니다.

        - **방법 1: 사용자 정의 브리지 네트워크 사용**
        1. 사용자 정의 네트워크를 생성합니다.
        ```bash
        docker network create --subnet=192.168.1.0/24 my_custom_network
        ```

        2. 컨테이너를 실행할 때 고정 IP를 할당합니다.
        ```bash
        docker run --net my_custom_network --ip 192.168.1.100 -it ubuntu /bin/bash
        ```

        이 방법을 사용하면 컨테이너에 고정된 IP를 할당할 수 있습니다.

        - **방법 2: Docker Compose 사용**
        Docker Compose 파일에서 네트워크 설정을 통해 고정 IP를 할당할 수도 있습니다. `docker-compose.yml` 파일을 사용하여 네트워크와 고정 IP를 설정할 수 있습니다.

        ```yaml
        version: '3'
        services:
        my_service:
        image: ubuntu
        networks:
        my_network:
        ipv4_address: 192.168.1.100

        networks:
        my_network:
        driver: bridge
        ipam:
        config:
        - subnet: 192.168.1.0/24
        ```

        이 답변들이 도움이 되길 바랍니다! Docker에 대해 더 궁금한 점이 있다면 언제든지 질문해 주세요.
        대화보기
        • 엠제이
          안녕하세요. 말로만 듣던 docker를 이제서야 공부하기 시작했습니다. 알기 쉽게 설명해 주셔서 고맙습니다.
          아직 세부적인 사용법을 잘 몰라서 엉뚱한 질문일 수 있는데요,
          만약 ubuntu-zsh-emacs-python-pytorch 환경을 구축하고자 한다면, 각각의 이미지를 pull 해서,
          각각을 띄워놓고 연계(가 가능하기는 한건가요?)해서 쓰는 것이 좋을까요?
          아니면 ubuntu를 pull한 후에 각각의 패키지를 그 위에서 인스톨 하는 것이 좋을까요?
          조언을 부탁 드립니다.
        • Alan Turing
          09/10
        • onsway@naver.com
          감사합니다!
        • 감사합니다
        • dlakffhs
          혹시 생성한 컨테이너에 docker run에서 줬던 옵션을 동일하게 줄 수 있나요?

          예를 들어, docker run -it ubuntu:16.04 /bin/bash 로 컨테이너를 실행하고, 나중에 이 컨테이너에 v 옵션을 통해 호스트에 마운트를 하고 싶은데, docker start -v /src/dir:/dst/dir [container] 와 같은 명령어는 지원하지 않더라고요.

          이렇게 이미 생성한 컨테이너에 명령어로 새로운 옵션을 추가로 줄 수 있는 방법이 있는지 궁금합니다.
        • Thomas
          윈도우에 ui툴 사용한버전 부탁해용
        • Bank in
          좋은 내용 감사합니다.
        • ricosuave
          도커에 관하여 개론적 내용들을 빨리 확인할 수 있었습니다.
          예전에 프로젝트 하면서 도커로 래핑된 오픈소스를 봤었는데
          학습할 시간이 없어 활용하지 못하고 패스했었는데
          여기서 만나니 반갑네요.
          내용이 좋은데 뭔가 영상이 인기가 덜한 것 같아 아쉽네요 ㅠ
        • mircom2
          docker 컨터이너에 IP 할당 방법좀 알려주세요.ㅜ.ㅜ
        • 이현진
          감사합니다.
        • pyrasis
          다음 슬라이드도 보시면 도움이 될겁니다.
          http://www.slideshare.net......477
        graphittie 자세히 보기