Docker 이미지 저장소 경로 (ext4.vhdx)
WSL2를 사용하여 Docker 사용 시 Docker는 아래 경로의 파일을 저장소로 사용한다.
- 저장소 : C:\Users\(USER명)\AppData\Local\Docker\wsl\data\ext4.vhdx
이 "ext4.vhdx" 파일은 Docker에 image나 Container 크기가 증가하면 따라서 크기가 증가하는데, 문제는 image와 Container의 크기가 줄어들 때는 알아서 줄어들지 않는다. 그래서 이 파일 때문에 용량이 부족할 때는 아래의 명령어 세트를 관리자 권한의 Powershell이나 cmd에서 수행해주어 줄어든 크기를 반영할 수 있다.
wsl --shutdown
diskpart
select vdisk file="C:\Users\(User명)\AppData\Local\Docker\wsl\data\ext4.vhdx"
attach vdisk readonly
compact vdisk
detach vdisk
exit
위 절차를 수행한 후에도 "ext4.vhdx"의 사이즈가 줄어들지 않는 것 같다면 image와 Container를 백업하고 Docker desktop을 삭제 후 재설치하는 것이 좋다.
※ docker commit 이나 save 진행 중 취소를 하면 메모리 반환에 문제가 생기는 것 같다.
Dockerfile을 사용한 docker image 생성
dockerfile은 docker image를 생성하기 위한 스크립트이다. 아래 dockerfile 예제가 있는 폴더에서 빌드 명령어를 수행 하면 image를 생성할 수 있다. 확장자는 필요없고 'Dockerfile' 이라는 이름의 파일로 저장한다.
※ 명령어의 마지막에 '.'(점)이 누락되지 않도록 주의!
docker build -t ubuntu:16.04 .
FROM ubuntu:16.04
RUN apt-get update
RUN apt-get upgrade -y
RUN apt-get install -y make sudo vim gcc build-essential wget git locales cpio bc g++
RUN locale-gen en_US.UTF-8
#환경변수 설정
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8
Docker Container 생성 및 실행 (+공유 볼륨 생성)
다음 명령어로 Container를 생성 후 Container의 /bin/bash를 실행 한다.
Container 이름은 temp이고, /mnt/share 경로로 windows와 공유되는 볼륨도 만들었다.
docker run -it -v D:\share:/mnt/share --name my_co ubuntu:16.04 /bin/bash
유저 계정으로 접속
docker container에 접속하면 기본으로 root 계정으로 접속된다.
유저 계정으로 접속하고 싶으면 다음 순서를 따라하면 된다. (docker container에 root 계정으로 접속하여 진)
1. 먼저 유저 계정을 생성
adduser myuser
- 비밀번호 생성 : 1234
- 나머지 정보 입력은 모두 엔터로 skip
2. sudo 명령 가능 user로 등록
이 과정을 수행하지 않으면 user로 접속했을 때 sudo 명령어를 사용할 수 없다.
※ 수행해도 su 명령어는 사용할 수 없고, sudo /bin/bash 로 실행해야 한다.
/etc/sudoers 가 readonly인 경우 wq! 로 강제 저장
vi /etc/sudoers
# User privilege specification
root ALL=(ALL:ALL) ALL
myuser ALL=(ALL:ALL) ALL
3. docker 종료 exit 후 Container reboot
docker start my_co
4. Container를 유저 계정으로 실행
docker exec -it -u myuser my_co /bin/bash
Container 상태를 파일로 저장
container의 상태를 파일로 저장하는 방법에는 2가지 방법이 있다.
- docker save : 이미지를 tar 파일로 저장
- docker export : Container를 tart 파일로 저장
여기서는 save를 사용해서 이미지를 저장하겠다.
1. docker commit
현재 Container 상태를 image로 만들어야 하기 때문에 commit을 먼저 수행한다.
docker commit (Container 명) (생성 될 image 명):(tag)
docker commit my_co my_image:0.0.1
2. docker save
생성 된 이미지를 tar 파일로 저장한다. (명령어를 수행하는 경로에 저장된다)
docker save -o my_image.tar my_image:0.0.1
3. 생성 한 이미지를 load
my_image.tar 파일이 있는 경로에서 명령어를 수행한다.
docker load -i .\my_image.tar
4. load한 이미지로 Container 생성
bash 실행 없이 run으로 container 만 생성했을 때 docker start 가 정상 작동 안하는 현상이 있을 수 있다.
docker run -it --name my_co my_image:0.0.1 /bin/bash
Docker 명령어 참고
docker ps
- Running 상태의 Container 확인 (Docker desktop에서 running 확인 가능)
docker ps -a
- 모든 Container 확인
docker images
- 모든 image 확인
docker stop my_co
- Running 상태의 Container 중지
docker rm my_co
- Container 삭제
docker rmi my_image:0.0.1
- Image 삭제
'개발 기록' 카테고리의 다른 글
yum (0) | 2023.04.11 |
---|---|
MySQL/MariaDB 쿼리 기록 (0) | 2023.04.11 |
Docker Ubuntu-mySQL 서버 생성 기록 (0) | 2023.01.26 |
Hugo 블로그 생성 과정 기록 (with Docsy theme) (0) | 2022.12.22 |