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 |