42Seoul/Docker

    17. docker 메뉴얼 파해치기 networking(수정필요)

    드디어 네트워크다 네트워크 드라이버로는 1. bridge 2. host 3. overlay 4. ipvlan 5. macvlan 6. none 7. network plugins 이렇게 있다고 한다 일단 메뉴얼에 순서대로 글을 읽어보자 - 컨테이너 네트워킹 docker 에 포트를 만들어 이어주는 것 --publish or -p 이제 좀더 상세하게 명령어를 보자 -p 8080:80 -p 192.168.1.100:8080:80 -p 8080:80/udp -p 8080:80/tcp -p 8080:80/udp 이렇게 4가지 모양이 있는데 1. 첫번째는 우리가 흔히보는 방법 로컬의 8080 포트를 도커의 80포트로 이어준다 2. 두번째는 ip 주소를 추가하여 특정 ip 주소의 포트만을 이어주는 모습이다 3. 이방식..

    16. docker 메뉴얼 파해치기 스토리지 드라이버

    정확히 이해하진 못하였다 이글을 잘 정리하신 별준님이 있으시다 https://junstar92.tistory.com/170 [Docker] 12. 스토리지 드라이버(storage driver) Contents 스토리지 드라이버의 원리 스토리지 드라이버 사용하기 AUFS 드라이버 Devicemapper OverlayFS Btrfs ZFS 1. 스토리지 드라이버의 원리 이미지는 읽기 전용 파일로 사용되며, 컨테이너는 이 이미지 junstar92.tistory.com 내가 이해한 바로는 저장하는 방식을 어떻게 하는냐를 말하는거 같다. 예를들어 데이터를 저장할때 이미있는 데이터에 쓰기를 할경우와 이미 있는 상황에서 수정해야하는 사항을 기록하는식 Cow 방식 - 지금 시점을 기록하기 위하여 원본파일을 가져온다 그..

    15. docker 메뉴얼 파해치기 tmpfs mounts

    뭔가 이해를 많이하고 나니 빨라졋다 1. tmpfs 뭔가 간단하게 사용할수 있게 만든듯? 2. --mount 옵션중 tmpfs-size 와 tmpfs-mode 가 생겻다 예는 ==== --mount ==== docker run -d \ -it \ --name tmptest \ --tmpfs /app \ nginx:latest ==== --tmpfs ==== docker run -d \ -it \ --name tmptest \ --mount type=tmpfs,destination=/app \ nginx:latest 음.. 뭐 다른거는 없는듯 하나 이걸하려면 tmpf 를 만들어 줘야한다는 것!! volumes 에서 따라 mount를 만들어보길 바란다 음.. 예는 docker compose가 없네? 전에꺼 ..

    14. docker 메뉴얼 파해치기 Bind mounts

    전에 설명햇듯 이건 공유해 주는 느낌이라고 생각하면 된다. 1. volume -v 옵션과 --volume 으로 사용가능하다 이건 volume가서 보면 좀더 이해쉬움 2. mount 옵션이 추가됫다 bind-propagation = 바인드 전파를 정한다는데 옵션이 shared, slave, parivavte 등등 다양하다 뭔가 읽기 허용범위? 그리고 타입을 정하는? 거같다 ==== -v ==== docker run -d \ -it \ --name devtest \ -v "$(pwd)"/target:/app \ nginx:latest ==== --mount ==== docker run -d \ -it \ --name devtest \ --mount type=bind,source="$(pwd)"/target,..

    13. docker 메뉴얼 파해치기 Volumes

    Volume 전장에 말했듯이 저장 디스크라고 생각하면 된다. 실행하는 이미지와 별개로 저장이 되기 때문에 데이터가 따로 공유도 되고 사라지지 않는다. 그리고 도커의 내부에서 돌기때문에 바인드 마운트(bind mounts)보다 빠른 성능을 제공한다고 한다 그냥 이거 하나더 있는거 다 윈도우로 따지면 요런식 이제 사용법을 배워보자 1. volume docker run -d \ --name devtest \

    12. docker 메뉴얼 파해치기 Storage

    storage 저장 기능에 대하여 말하는거 같다 일단 단어 부터 보자 tmpfs 라는게 눈에 띤다. 예전에 aws 쓸때 메모리가 부족하여 가상의 메모리를 만들었던 기억이 있다 이녀석은 크기를 정하여 파일을 하나 만든다. 그리고 컴퓨터의 램처럼 사용가능하게 해주는 파일 시스템이라고 생각하면 좋다 마운트 유형으로 4개를 보여주는거 같다 volumes : 볼륨은 독립된 저장 디스크라고 생각하면 편하다 저장되어 이미지나 시스템이 바뀌어도 그 정보를 가지고 있는 형식을 유지한다 Bind mounts : 바인드 마운트는 공유하는 폴더? 라고 생각하면 좋다 폴더를 공유하는 식으로? 현제 로컬에 있는 폴더(그외도 될거같긴함 컨테이너끼리?같이?)와 컨테이너 안에있는 폴더를 이어줌으로 데이터가 서로 상호작용할 수 있도록 ..

    [42 Seoul] 1. Inception Debian 으로 docker 설치하기

    일단 가이드가 있으니 그걸 따라가보자 가이드에 Debian 11을 준비하라고 써져있으니 vm에서 debian 11 버전을 설치해주자 https://www.debian.org/download 음 새로운 버전의 vmbox는 알아서 설치되는듯? 일단 답답한 크기부터 수정하고 이제 가이드를 따라가보자 일단 kvm을 활성화 되어있어야한다는데  지금 활성화 되있지않다. 근데 괜찮은듯? ... 원래는 저게 0이 아닌 수로 활성화 되어야 한다고 하던데... 일단 언어가 개판이다 언어부터 설치하자 su sudo apt-get update sudo apt-get install -y fcitx-lib* sudo apt-get install -y fcitx-hangul fonts-nanum 그리고 다시시작 chrome 을 ..

    11. docker 가이드 파해치기 [Get started] part 9

    part 9)Image-building best practices 좋은 예시? 라는 거같은데 일단 전에 만든 dockerfile을 수정해야되는거같다 # syntax=docker/dockerfile:1 FROM node:18-alpine WORKDIR /app COPY package.json yarn.lock ./ RUN yarn install --production COPY . . CMD ["node", "src/index.js"] COPY package.json 과 yarn.lock ./ 이렇게 생긴거같은데 reference 를 뒤져보니 COPY package yarn.lock 을 ./ 폴더에 저장해주는거 같다 음.. 따로 설명은 없지만 여러가지를 한번에 복사가 가능하고 마즈막에만 경로를 지정해주면 되..

    10. docker 가이드 파해치기 [Get started] part 8

    part 8) use docker compose 이제 드디어 도커 컴포즈다 이녀석은 한번에 많은 컨테이너들을 실행할수 있게끔 만들어주는 애라 꼭 필요하다 일단 도커 실행중인 애들을 다 없에주자 docker ps -a 이제 docker compose 를 써보자 docker compose 버전체크 이걸로 잘 실행되는지 알 수 있다 docker compose version 버전 안뜨고 에러뜨면 인터넷에 서 찾기 고고 docker run -dp 3000:3000 \ -w /app -v "$(pwd):/app" \ --network todo-app \ -e MYSQL_HOST=mysql \ -e MYSQL_USER=root \ -e MYSQL_PASSWORD=secret \ -e MYSQL_DB=todos \ n..

    9. docker 가이드 파해치기 [Get started] part 7

    part 7) Multi container apps 이젠 여러게의 컨테이너를 사용하는 방법이다 docker network create todo-app todo-app 이라는 network를 만들어준다 docker run -d \ --network todo-app --network-alias mysql \ -v todo-mysql-data:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=secret \ -e MYSQL_DATABASE=todos \ mysql:8.0 이제 봐야할거는 https://hub.docker.com/_/mysql/ 이거다 왜냐하면 이미 정해놓은 변수들과 룰이있어서 확인한다음 그거에 맞게 써야한다 일단 --network : 이녀석은 네트워크를 이어주는애같다 --..