jissue
SSUE's IT World
jissue
전체 방문자
오늘
어제
  • 분류 전체보기 (88)
    • CS (4)
    • 자료구조 (5)
    • 알고리즘 (30)
      • 백준 (28)
      • 프로그래머스 (2)
    • JAVA (0)
    • Spring Boot (0)
    • 가상화 (35)
      • VMware (23)
      • Docker (12)
    • sw 사관학교 정글 (13)
      • TIL (12)
    • 기타 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

인기 글

최근 글

티스토리

hELLO · Designed By 정상우.
jissue

SSUE's IT World

가상화/Docker

[Docker] Docker container & image 응용

2023. 3. 24. 09:16
  • 관리
  • 글쓰기
  • 로그인
  • 로그아웃

container의 다양한 명령어

- 컨테이너 내 실행 파일 Host OS로 복사(cp)

sudo docker run -it --name test01 centos:7 /bin/bash
# pwd
# vi 1.sh
# ls 1.sh
ctrl + p + q
sudo docker container cp test01:1.sh /home/test01/100.sh //test01에서 생성 된 파일 host에 100.sh명으로 복사
ls
cat 100.sh //내용 확인

실행된 컨테이너 application 내 1.sh가 host의 100.sh로 복사됨

​

​

- 쉘 들어가지 않고 출력(exec)

현재 실행되고 있는 컨테이너의 명령어 실행


실습 - 시나리오1) nginx 의 container 의 html 파일 추가 새로운 이미지로 만들어 저장

sudo docker container run --name web_01 -d -p 80:80 nginx
sudo docker container ps -a // 컨테이너 확인

· --name : 컨테이너 명

· -d : 백그라운드 실행

· -p : 포트 지정 (80(docker가 실행되는 host):80(컨테이너의 application))

· nginx : 이미지 파일

​

- 실행 확인

컨테이너 정상작동 확인

​

- 컨테이너 내 /bin/bash 명령어 실행

sudo docker container exec -it web_01 /bin/bash //실행
# ifconfig 
# find / -name html // / 하위의 html 조회
# ls -ld /usr/share/nginx/html //디렉터리 확인
# ls -al /usr/share/nginx/html // 파일 확인

​

- html 초기 배너

cd /usr/share/nginx/html //디렉터리로 이동
mv ./index.html ./index.html.bak // 파일 이름 변경
echo web_1 > index.html // index.html 파일에 web_1 덮어 씌우기(원래 내용 사라짐)
cat index.html // 파일 내용 확인

​

- 웹페이지 배너 변경 확인


Docker build & ship

사용자가 제작한 컨테이너를 이용하여 이미지로 만들고, 다시 이미지를 사용하여 컨테이너 제작이 가능

- Docker build : 이미지를 만듦

- Docker ship : 이미지를 공유

​


컨테이너 이미지 파일로 제작(build - commit )

- 컨테이너 이미지 생성

sudo docker container commit -a "jsh" web_01 web_01:1.0 // 주석을 jsh으로 web01 컨테이너를 web_01:1.0명의 이미지 제작
sudo docker image ls | grep web

​

​

- 생성된 이미지를 사용하여 컨테이너 실행(ship)

sudo docker container run --name web_02 -d -p 80:80 web_01:1.0
sudo docker container ps -a

▶ 오류발생

현재 사용 중인 포트로 다른 컨테이너 실행 시 오류 발생(같은 포트 사용 x) => 오류 발생이어도 컨테이너는 제작됨.

= 해결방법 : 원래 있던 컨테이너를 제거 후 다른 포트 번호로 제작 필요

sudo docker container rm web_02 //컨테이너 삭제
sudo docker container ps -a //삭제 확인

​

- 다른 포트(8080) 번호로 제작

sudo docker container run --name web_02 -d -p 8080:80 web_01:1.0 //docker가 실행되는 host의 포트를 다른 번호로 변경하여 컨테이너 실행
sudo docker container ps -a // 컨테이너 확인

​

- 포트번호 8080 입력 시 web 실행 됨(web_01이 아닌 web_02 컨테이너 실행 화면)


컨테이너 프로세스 확인

sudo docker container top web_01 // 컨테이너명 web_01의 프로세스 확인

​

​

이미지 압축

save 옵션을 사용하여 이미지를 압축하여 저장 할 수 있음 (docker가 설치 된 host에 저장)

sudo docker image save -o export.tar web_01:1.0 // tar로 web_01:1.0 이미지를 묶음

 

​

압축된 이미지 도커로 가져오기

+) web_01:1.0 이미지 삭제 후 진행

sudo docker image load -i export.tar // export.tar에서 이미지 로드하여 docker에 input 
sudo docker image ls | grep web_01

​

'가상화 > Docker' 카테고리의 다른 글

[Docker] Docker Network  (0) 2023.03.24
[Docker] Docker hub  (0) 2023.03.24
[Docker] Docker container  (0) 2023.03.24
[Docker] Docker image  (0) 2023.03.24
[Docker] Docker 설치  (0) 2023.03.24
    '가상화/Docker' 카테고리의 다른 글
    • [Docker] Docker Network
    • [Docker] Docker hub
    • [Docker] Docker container
    • [Docker] Docker image
    jissue
    jissue

    티스토리툴바