상세 컨텐츠

본문 제목

Docker(도커)를 가상화를 이용한 윈도우사용방법! - WSL2 설치 및 Ubuntu(우분투)리눅스 환경 설치!

클라우드/Docker

by JORDON 2023. 1. 25. 11:04

본문

반응형

도커는 리눅스의 응용 프로그램들을 프로세스 격리기술들을 사용해 컨테이너로 실행하고 관리하는 오픈 소스 프로젝트이다.

 

1. 도커 시스템 정보

docker version

docker -v

docker system info

docker system df

docker system df -v

2. 컨테이너 명령어

docker container run 명령은 도커 이미지로부터 컨테이너를 생성하고 실행하는 명령

도커 컨테이너는 이미지를 바탕으로 작성

docker container run <option> <image> <command>

docker container run ubuntu:latest /bin/echo 'Hello Wolrd'

docker container run --name webserver -d -p 80:80 ngnix

docker container run --name webserver -d -p 80:80 ngnix:latest

# webserver 라는 이름의 컨테이너로 nginx 이미지를 띄운다.
# [-d] 옵션은 detach로 백그라운드에서 실행을 의미한다.
# [-p] 옵션은 포트 포워딩이다.

docker container run -it --name "test1" centos /bin/cal February 2018

#컨테이너를 생성/실행하면서 콘솔에 결과를 출력하고 이름은 "test1"로 centos이미지를 올리고
#/bin/cal 명령어를 실행한다.

docker container run -it --name "test2" centos /bin/bash

# [-i] 옵션은 컨테이너를 실행할 때 컨테이너 쪽 표준 입력과의 연결을 그대로 유지. 
# 그러므로 컨테이너 쪽 셀에 들어가서 명령을 실행할 수 있다.
# [-t] 옵션은 유사터미널 기능을 활성화하는 옵션인데, -i 옵션을 사용하지 않으면
# 유사 터미널을 실행해도 여기에 입력할 수가 없으므로 -i와 -t 옵션을 합쳐 축약한 
# -it 옵션을 사용한다.

컨테이너 상태 확인

docker container ls [option]

# [--all|-a] :모든 컨테이너

docker container ps

docker container stats <container-name>

docker container top <container-name>

컨테이너 연결

docker container attach <container-name>

# ctrl-c : 컨테이너 종료

컨테이너 종료/시작/재시작/삭제

docker stop <container-name>
docker start <container-name>
docker container restart <container-name>
docker container rm <container-name>
docker container rm -f <container-name>
# 강제 종료 및 삭제

docker container run --cpu-shares=512 --memory=1g centos
# [--cpu-shares] : CPU의 사용 배분(비율)
# [--memory] : 사용할 메모리를 제한하여 실행
# [--evn=<환경변수>] : --env JAVA=xxx, -e JAVA=xxx
# [--user=사용자명] : --use

docker container exec -it <container> /bin/echo "HelloWorld"

docker container port <container>

docker container rename

docker container cp

컨테이너 로그 - 표준 출력 연결하기

docker container logs [options] <container-id | container-name>

docker container logs -f $(docker container ls --filter "ancestor=mysql" -q )

컨테이너와 호스트의 데이터 볼륨

(컨테이너의 데이터퍼시스턴스 기법)

#v 옵션을 사용하여 호스트와 컨테이너 사이의 데이터를 공유한다.
docker container run -v 호스트디렉토리:컨테이너디렉토리 repository[:tag] [command]

호스트-컨테이너 데이터볼륨은 호스트 쪽 특정 디렉터리에 의존성을 갖는다. 데이터 볼륨 컨테이너의 볼륨은 도커에서 관리하는 영역인 호스트 머신의 /var/lib/docker/volumes/ 아래에 위치한다. 데이터볼륨 컨테이너 방식은 도커가 관리하는 디렉터리 영역에만 영향을 미친다.

3. 이미지 명령어

docker image pull [option] <image-name>[:tag]

# centos의 모든 이미지 다운로드
docker image pull - a centos

docker pull nginx #이미지 다운로드

docker image ls [option] [repository]

docker image ls

docker images

# 도커 임지 상세 정보 표시
docker image inspect nginx:latest 

# 이미지값만 표시
docker image inspect --format="{{ .ContainerConfig.Image}}" nginx:latest

# 이미지 tag 를 사용해 새이름으로 이미지를 복사한다.
docker image tag <origin-image-name> <new-image-name:tag>

docker image tag nginx:latest starlord/webserver:1.0

# 도커 허브에 공개되어 있는 이미지들을 조회한다.
docker search  [option] <keyword>

docker serach ngnix

# 도커 이미지를 삭제한다.
docker image rm <optino> <image-name>

# 사용하지 않는 이미지들을 삭제한다.
docker image prune [-a|-f]

컨테이너로부터 이미지 작성 및 확인

docker container commit [option] <container-name> <image-name:tag>

docker container commit -a "starlord" webserver ws-image:1.0

docker image ls

docker image inspect ws-image:1.0

컨테이너로부터 tar 파일 생성

docker container export <container>
docker container export <container> > current.tar
ls -al
tar -tf current.tar
tar tf current.tar | more

이미지를 tar 로 저장하기

docker image save [option] <save-file> [image-name]
docker image save -o save.tar webserver
docker image load [option] <image>

tar로부터 이미지를 읽어들이기

docker imae load [option] <image-name>

컨테이너 쉘 접속

docker ps -a
docker exec -it <container-name or id> /bin/bash

4. 네트워크 명령어

docker network create -d bridge webap-net
docker container run --net=webap-net -it centos
docker network ls --no-trunc
docker network connect [option] <network-name> <container-name>
docker network disconnect <network-name> <container-name>
docker network inspect [opeion] network
docker network rm <network-name>

5. 불필요한 이미지/컨테이너를 일괄삭제

docker system prune [option]

# [-a | -f]

6. Dockerfile로부터 이미지 만들기

도커 파일을 생성

touch Dockerfile

도커 파일을 빌드한다

docker build -t <image-name> <경로[절대|상대]>
docker build -t sample:1.0 ./
docker build -t sample:1.0 -f <filename> ./
docker build -t sample1 -f Dockerfile.layer1 ./
docker images

Dockerfile example

# step1. ubuntu
FROM ubuntu:latest

#step2. ngnix
RUN apt-get update && apt-get install -y -q nginx

#step3. file copy
COPY index.html /usr/share/nginx/html/

#step4. start nginx
CMD ["nginx", "-g", "daemon off;"]

도커파일의 명령 목록

  • FROM 베이스 이미지 지정
  • RUN 명령 실행 : shell형식, exec형식 (이미지를 작성하기 위해 실행하는 명령)
  • CMD컨테이너 실행 명령 (Dockerfile 안에서는 하나의 명령만 가능, 우선적인 명령이 있을 시 덮어짐)
  • LABEL 라벨 설정
  • EXPOSE 포트 익스포트
  • ENV 환경변수
  • ADD 파일/디렉토리 추가 (ADD <호스트파일경로> <Docker 이미지의 파일 경로>)
  • COPY 파일 복사 (COPY <호스트파일경로> <Docker 이미지의 파일 경로>)
  • ENTRYPOINT 컨테이너 실행 명령 (다른 명령이 있어도 같이 쓰임)
  • VOLUME 볼륨마운트
  • USER 사용자 지정
  • WORKDIR 작업 디렉토리
  • ARG Dcokerfile 안의 변수
  • ONBUILD 빌드 완료 후 실행되는 명령
  • STOPSIGNAL 시스템 콜 시그널 설정
  • HEALTHCHECK 컨테이너의 헬스 체크
  • SHELL 기본 쉘 설정

[wsl2] Vmmem 메모리 점유율 관련 설정

WSL의 고급 설정 구성

  1. %USERPROFILE% 경로로 이동
  2. .wslconfig 파일 생성
  3. wslconfig 예시
[wsl2]
memory=4GB
processors=2
swap=1GB
localhostForwarding=true
  1. wsl --shutdown 으로 wsl 종료 및 재시작
반응형

관련글 더보기

댓글 영역