woonizzooni

Docker Toolbox 설치, 메모리 확장, 디스크 확장, timezone변경 본문

Docker

Docker Toolbox 설치, 메모리 확장, 디스크 확장, timezone변경

woonizzooni 2019. 6. 18. 07:07

Docker Toolbox 기본 설치 과정에서 Docker VM의 

  - 기본 설정 메모리 크기 확장

  - 디스크 확장, 공유 폴더 추가 병행

  - Timezone변경

정도로 진행한다.

 

 

** update :: 교차점 생성, MACHINE_STORAGE_PATH 설정은 

   Kitematic 사용하지 않을 경우에만 하자.

   docker vm ssh접속으로 동작에는 문제 없지만 (= vmware에 linux설치후 그 위에 동작하는 docker)

   host(windowns)에서 docker-machine 명령등에 직접 연결이 안된다.

   ex) 에러 메시지 종류

   Could not determine IP from docker-machine.

   command exit status 255
   Error checking TLS connection: Host is not running

   등...

   windows의 OpenSSH와 docker-toolbox의 인증서 위치나 권한 뭐 그런 것들 때문같은데,

   괜히 시간 낭비하지 말자. 그냥 pc검증 환경일 뿐이니...

"

  

   

 

1. 설치 디렉토리 생성 & 링크 (optonal)

  - D드라이브에 Docker 디렉토리 생성 (D:\Docker) <-- 본인이 희망하는.

  - 혹시 모를 일을 대비해서 /Users/MY_NAME/.docker를 D:\Docker로 교차점 생성

C:\Users\MY_NAME> mklink /J .docker "D:\Docker"
.docker <<===>> D:\Docker에 대한 교차점을 만들었습니다.

2. 환경변수 설정 (& 재시작) (optional)

  - Docker 저장소 위치 변경

3. Docker Toolbox 다운로드 & 설치

  - 다운로드 : https://download.docker.com/win/stable/DockerToolbox.exe

  - 설치 진행 : 진행 과정 중 기본 체크 박스 상태 그대로 진행, 설치 완료 후 재시작 불필요
    https://docs.docker.com/toolbox/toolbox_install_windows/

 

  - 3개의 바로가기 아이콘 생성됨

     1) Oracle VM VirtualBox : "C:\Program Files\Oracle\VirtualBox\VirtualBox.exe" deafult VM이 생성되어 있는 상태

     2) Kitematic (Alpha) : "C:\Program Files\Docker Toolbox\kitematic\Kitematic.exe"

     3) Docker Quickstart Terminal : "C:\Program Files\Git\bin\bash.exe" --login -i "C:\Program Files\Docker Toolbox\start.sh"

 

4. Docker VM 실행 & 상태 확인

  - Docker Quickstart Terminal 바로가기 실행

  - IP 확인 (기본 설정대로 라면 NAT구성으로 192.168.99.100) : 위 그림 IP정보 참고

 

5. Oracle VM VirtualBox : Docker VM이미지 메모리 확장, 공유 폴더 추가

 5-0. VM중지 = 'Docker Quickstart Terminal'에서 아래 명령 실행

       $ docker-machine stop

 5-1. Oracle VM VirtualBox실행 & default 우측 클릭 > 닫기 전원 끄기

 5-2. default > 설정 : 기본메모리를 1024MB에서 4096MB로 변경 (컨테이너의 Out-Of-Memory를 덜 보려면...)

 5-3. 공유폴더 추가

    - D:\Docker\data 디렉토리 생성

    - 이 폴더를 공유 폴더로 추가 & 자동마운트 설정

 5-4. 디스크 추가

    - 저장소 > 새 디스크 만들기 > VMDK 선택 > 동적 할당 > data_disk이름 & 100GB 설정 > 만들기
      (경로 : D:\Docker\machines\default\default\data_disk.vmdk)

    - 'Docker Quickstart Terminal' 에서 docker-machine start

    - Docker쉘 접속 후

      1) fdisk /dev/sdb : 파티셔닝

      2) mkfs.ext4 /dev/sdb1 : ext4 포맷

      3) mount 해보기

docker@default:~$ sudo -i
root@default:~# fdisk -l <----------- 
  ....
  Disk /dev/sdb: 100 GiB, 107374182400 bytes, 209715200 sectors <-----------
  Units: sectors of 1 * 512 = 512 bytes
  Sector size (logical/physical): 512 bytes / 512 bytes
  I/O size (minimum/optimal): 512 bytes / 512 bytes


root@default:~# fdisk /dev/sdb <---------
  ...
  Command (m for help): m <--------
  Command (m for help): g <-------- Linux FileSystem
  Command (m for help): n <-------- 파티션 생성
  Partition type
     p   primary (0 primary, 0 extended, 4 free)
     e   extended (container for logical partitions)
  Select (default p): p <-----------
  Partition number (1-4, default 1): 
  First sector (2048-209715199, default 2048): 
  Last sector, +sectors or +size{K,M,G,T,P} (2048-209715199, default 209715199): 

  Created a new partition 1 of type 'Linux filesystem' and of size 100 GiB.

  Command (m for help): p
  Disk /dev/sdb: 100 GiB, 107374182400 bytes, 209715200 sectors
  Units: sectors of 1 * 512 = 512 bytes
  Sector size (logical/physical): 512 bytes / 512 bytes
  I/O size (minimum/optimal): 512 bytes / 512 bytes
  Disklabel type: gpt
  Disk identifier: 54EDF7CB-5770-47D4-9DF6-0F4CE1F48054

  Device     Start       End   Sectors  Size Type
  /dev/sdb1   2048 209715166 209713119  100G Linux filesystem

  Command (m for help): w <--------------
  The partition table has been altered.
  Calling ioctl() to re-read partition table.
  Syncing disks.

root@default:~# fdisk -l <--------------
  ...
  Device     Start       End   Sectors  Size Type
  /dev/sdb1   2048 209715166 209713119  100G Linux filesystem  <--------------

root@default:~# mkfs.ext4 /dev/sdb1 <--------------
  ...
  Writing superblocks and filesystem accounting information: done   

root@default:~# mkdir -p /mnt/sdb1
root@default:~# mount /dev/sdb1 /mnt/sdb1 <----------- 
root@default:~# df -h
  Filesystem                Size      Used Available Use% Mounted on
  tmpfs                     3.5G    229.6M      3.2G   6% /
  tmpfs                     1.9G         0      1.9G   0% /dev/shm
  /dev/sda1                17.8G     46.5M     16.9G   0% /mnt/sda1
  cgroup                    1.9G         0      1.9G   0% /sys/fs/cgroup
  /c/Users                476.2G    189.5G    286.7G  40% /c/Users
  /data                     3.6T      1.4T      2.2T  39% /data
  /dev/sda1                17.8G     46.5M     16.9G   0% /mnt/sda1/var/lib/docker
  /dev/sdb1                97.9G     59.6M     92.9G   0% /mnt/sdb1 <----------

 

    - 자동 마운트 설정 : 아래 경로에 bootlocal.sh 파일 생성(실행 권한부여) 후 mount명령 추가

      (이 방법외에 다른 방법 찾기 귀찮아서, 혹시 아는 분은 댓글로...)

root@default:~# cd /var/lib/boot2docker
root@default:/var/lib/boot2docker# vi bootlocal.sh 
  #!/bin/sh
  mount /dev/sdb1 /mnt/sdb1
  :wq (저장)
root@default:/var/lib/boot2docker# chmod u+x bootlocal.sh

    - 'Docker Quickstart Terminal' 에서 docker-machine restart

    - docker vm에 쉘 접속 후 확인 : 메모리 크기 등

6. Timezone변경

   - 현재 시간 확인 : PC의 현재 시간과 동일하면 끝, 아래와 같이 아니라면

      docker@default:~$ date 
      Mon Jun 17 21:50:01 UTC 2019  <--- 엉뚱한 시간이 나온다. (9시간 전?)

   - 다음과 같이 진행 후 docker-machine restart

docker@default:~$ sudo -i
root@default:~# cd /var/lib/boot2docker

root@default:/var/lib/boot2docker# tce-fetch.sh tzdata.tcz
root@default:/var/lib/boot2docker# mkdir ext
root@default:/var/lib/boot2docker# mount tzdata.tcz ext -t squashfs -o loop,ro,bs=4096
root@default:/var/lib/boot2docker# cp ext/usr/local/share/zoneinfo/Asia/Seoul ./Asia-Seoul.tz

root@default:/var/lib/boot2docker# umount ext
root@default:/var/lib/boot2docker# rm -rf ext tzdata.tcz

root@default:/var/lib/boot2docker# vi bootlocal.sh
    #!/bin/sh
    mount /dev/sdb1 /mnt/sdb1
    cp /var/lib/boot2docker/Asia-Seoul.tz /etc/localtime
    :wq (저장)
root@default:/var/lib/boot2docker# chmod u+x bootlocal.sh

((((( 재시작 후 접속 )))))

docker@default:~$ date
Tue Jun 18 07:04:21 KST 2019 <-- PC시간과 동일

(참고 : https://github.com/boot2docker/boot2docker/issues/476)

 

 

[기타]

- container 이미지 저장 위치 :

$ docker info
  Containers: 3
  ...
  Docker Root Dir: /mnt/sda1/var/lib/docker <------------
  ...
  Product License: Community Engine

$ sudo i
# cd /mnt/sda1/var/lib/docker
# find . -name mysql | cut -f 1,2,3 -d "/" | uniq | xargs du -h -d 0
  40.0K   ./overlay2/331e15e384ea042923fbc7d933359fa89718cc38215d0056ab47bfbba2e445f2
  431.8M  ./overlay2/b7f24200745390db507cca92e2d6b32778d77a71f58d8d776dd04be46912b405
  313.6M  ./overlay2/00a4a9d710111c024838b47c3d1a1ce1457f2cd345e33748e21bac3c92364792

대충 /mnt/sd1/var/lib/docker/overlay쯤인가보네

  참고 : https://stackoverflow.com/questions/19234831/where-are-docker-images-stored-on-the-host-machine

Comments