ubuntu - docker

djEjgrpgksmsrjwl·2024년 12월 24일

SK shieldus Rookies 23기

목록 보기
10/24

관제 운영체제 설치시 ESXi 써야함
https://junu19.tistory.com/29

VM - install VM Tool
우분투에 씨디모양 꺼내서 압축풀고
ctrl+alt+t

sudo su
cd로 파일 들어가서 pl 파일 실행 ./[파일명]

apt update

apt install open-vm-tools open-vm-tools-desktop -y

Y

Y


  1. docker 설치

apt install docker.io -y

  1. 구동확인
    docker -h

apt install apache2 -y

=> 온프레미스 환경
cd /var/www/html

ip ad
2: ens 33 inet [ip]
3: docker0
172.17.~

  1. 이미지 검색
    docker search [apache]
    docker search [http]
    docker search [mysql]
    docker search [ubuntu]

  2. 이미지를 다운로드
    docker pull ubunto/apache2

다운로드가 굉장히 빠름
-> 용량이 작음
이유는 container는 매우 작은 용량단위로 설계됨
아무리 용량이 커봐야 1~3gb

  1. 이미지 확인
    docker images
    REPOSITORY - IMAGE ID (중요)
    이름 - 고유번호
    docker의 이미지 개념은 일종의 백업 파일과 같음

  2. 컨테이너(인스턴스) 생성 및 실행
    docker run -d --name apache_server -p 8080:80 ubuntu/apache2

run : 실행 (이미지 실행)
-d : 백그라운드로 실행
--name : 이미지를 통해 내가 생성할 인스턴스 별칭이 됨
-p 8080:80 : 로컬 8080으로 접속하면 도커환경의 80으로 포워딩하겠다.

=> 고유 해시값이 출력됨
7. 실행확인
docker ps
docker ps -a
-a : 오류가 있어도 모두 출력하겠다.

ip ad 하면
5: 가 가상장치 올라옴

  1. 컨테이너(인스턴스) 내부 접속
    docker exec -it apache_server bash
    exec : 실행하겠다
    -it : 터미널 모드로 접속 ( 인터널 터미널 )
    bash : 접속 시 bash 쉘로 실행 하겠다.
    설정시 저장이 안된다.
    docker 특징상 실행중인 도커의 설정을 바꿔도 종료되고 재시작하면 스냅샷으로 계속 초기 설정으로 돌아간다.
    summit으로 저장하여 백업해야한다

ifconfig
-> not found 뜸
도커는 local의 환경에서 폴더 개념으로 네트워크 기능이 포함된 것으로 생각해야됨

service apache2 status
-> 서비스 실행 확인
exit
service apache2 stop
->192.168.255.136 접속안됨
->192.168.255.136:8080 접속됨
-> 프로세스 맵핑
=> ubuntuIP:8080 >> docker:80
192.168.255.136 172.17.0.2

  1. 컨테이너 로그 확인
    docker logs apache_server

    아니면 위 그림처럼 컨테이너 직접 접속하여 로그 일일이 봐야함

  2. 데이터볼륨 설정(데이터 지속성)
    docker run -d --name apache_server2 -p 8888:80 -v /home/seonghawn/Desktop:/var/www/html/index.html ubuntu/apache2
    ( /index.html 오류 )디렉토리끼리 또는 파일끼리 매핑

docker run -d --name apache_server5 -p 6666:80 -v /home/seonghawn/Desktop:/var/www/html ubuntu/apache2
->> 로컬에 있는 데이터와, 도커 내부간에 동기화를 사용하여 데이터 관리

-v : 볼륨을 추가하겠다.

컨테이너 시작 정지
docker start apache_server
docker stop apache_server

마우스패드 설치
apt install mousepad -y

mousepad test.html

echo "test" > index.html
=> 실시간 동기화 가능

docker exec -it apache_server5 bash

  1. 컨테이너 삭제
    docker rm [apache_server2] //컨테이너 삭제
    docker rmi [ubunto/aprche2] //이미지 삭제

6666접속불가포트로 protection함

다음과 같은 설정으로 강제 접속가능 - 주소창에 about:config 검색
-> 설정창 이동

13 컨테이너 백업
docker save -o apache.tar ubuntu/apache2 // 이미지 백업
docker save -o apache.tar ubuntu/apache2:241224 // 이미지 백업 , : 태그 붙이기
docker export apache_server5 > apache_server5.tar // 컨테이너 추출
docker load -i apache2.tar // 이미지 복원
docker import apache_server5.tar apache_server6 // 컨테이너 임포트 (server6는 이미지 이름이 됨)

특징docker loaddocker import
파일소스docker save로 생성된 tar파일컨테이너 파일 시스템 백업 ( docker export 사용 )
태그 및 레이어 정보포함 (이미지의 메타데이터 포함)포함되지 않음 ( 새로운 이미지로 생성)
이미지 복원기존 이미지의 상태를 그대로 복원파일 시스템만 사용해 새로운 이미지를 생성
사용목적이미지 백업 및 배포컨테이너 기반 새로운 이미지 생성
명령어docker save -> docker loaddocker export -> docker import


|
+------------> save load

|
+----------> import export

  1. 컨테이너 백업 및 복원 2

docker ps -a 로 컨테이너 아이디 확인
컨테이너에 저장 및 변경된 파일 상태로 나는 이미지화 시키고 싶다.
docker commit [컨테이너ID][이미지이름:태그] 형태로 저장 가능
docker commit 86d29f8dfa18 apache_test:241224
docker save 로 추출 및 배포 가능

commit 같은 경우는 snapshot으로 이해할것 수정 중간 저장?

docker run -d --name apache_test -p 8080:80 apache_test:241224
-> apache_test 컨테이너 만들어짐
docker exec -it apache_test bash

docker commit은 컨테이너의 현재 상태를 그대로 이미지로 저장할 때 유용합니다. 수동으로 수정한 내용을 반영한 새로운 이미지를 만들 수 있습니다.

docker save는 이미지 자체를 백업하는 명령어로, 컨테이너의 변경 사항이 반영되지 않습니다. 이미지 파일을 이동하거나 백업할 때 사용합니다.

docker import는 파일 시스템만을 새로운 이미지로 가져올 때 사용되며, 레이어나 메타데이터 없이 파일 시스템을 새로 복원할 수 있습니다.

-docker savedocker importdocker commit
기능이미지를 파일로 저장(모든 레이어 포함)tar 파일에서 파일 시스템을 가져와 이미지 생성컨테이너 상태를 새로운 이미지로 저장
대상Docker 이미지tar 파일로 백업된 파일 시스템실행 중인 컨테이너
레이어 정보유지(이미지의 모든 레이어 포함)없음(단일 이미지로 저장됨)새로운 레이어가 생성됨
메타데이터유지(태그, 환경변수 등 포함)없음(메타데이터 포함되지 않음)일부 메타데이터 유지(컨테이너 설정)
파일 시스템 변경 사항없음(이미지 원본 상태 그대로 저장)파일 시스템만 복원(변경 내용 없음)컨테이너의 변경 사항 포함
사용 예시이미지를 백업하거나 다른 시스템으로 이동tar파일로 파일 시스템만 복구변경된 컨테이너 상태를 이미지로 저장
명령어 예시docker save -o my_image.tar IMAGEdokcer import my_fs.tar new_imagedocker commit CONTAINER_ID new_image
복구 방법docker load -i my_image.tardocker import로 새로운 이미지 생성새로운 이미지로 컨테이너 생성
주요 사용 시나리오이미지를 백업하거나 공유 할 때외부 tar 파일을 이미지로 변환할 때컨테이너에서 수동으로 수정한 상태 저장

레이어가 머지?
Docker에서 말하는 레이어(layer)는 이미지를 구성하는 단계적 파일 시스템 구조를 의미
Docker 이미지는 여러 개의 읽기 전용 레이어로 이루어져 있으며, 각 레이어는 이전 레이어 위에 쌓이는 방식으로 만들어집니다. 이를 통해 이미지의 효율적인 저장과 배포가 가능합니다.
Docker의 레이어는 이미지를 효율적으로 관리하고 빌드할 수 있게 하는 핵심 개념입니다. 각 레이어는 파일 시스템의 스냅샷처럼 동작하며, 이러한 구조 덕분에 Docker는 빠르고 유연한 이미지 관리를 가능하게 합니다.

profile
sunseonghwan

0개의 댓글