Cloud Solution Architect/컨테이너

Docker3

YunHyeong 2023. 5. 26. 17:44

#  dbserver 상태저장

-itd : 기본베이스 이미지 사용시 컨테이너 실행하면서 백그라운드 실행

- 이후에 변경이 가능하지만 컨테이너 이름을 mysql이 아니라 dbserver로 설정한다

 

*****

docker rmi -f $(docker images -q)

- 이미지 전부를 한줄씩 모두 삭제한다.

 

- 방금 생성한 컨테이너 내부로 접근

 

- maridDB 설치

- sed: 편집 스크립트에 따라 지정된 File 매개변수에서 행을 수정하고 표준 출력에 작성

- apt update을 하지 않으면 카카오.mirror의 이미지를 사용 못한다.

- apt install -y mariadb-server 를 실행 : mariaDB 설치

- service mysql start 명령어를 입력하지 않으면 mariaDB, Mysql 데몬이 실행하지 않는다.

- ss -ant로 포트 확인

- docker hub에 있는 hyeongyun/my-wp:v1.0을 활용하여 컨테이너 생성

- "docker rename mysql dbserver" 명령어를 이용해서 컨테이너 이름을 변경한다.

 

-  inspect를 통해서 my-wp 컨테이너의 세부정보를 확인할 수 있다.

 

- Route53의 주소로 접근하면 워드프레스 사이트가 실행되는 것을 확인할 수 있다.

 

- mysql, my-wp 컨테이너를 반드시 중지시키고 커밋한다

- 최종적으로 docekr hub에 push

- 지금 커밋은 완성된 커밋이 아니다(임시 커밋)

- 커밋을 하면 wordpress에서 작성한 댓글이 남아있지 않다.

- 상태 저장 x

 

- vi Dockerfile

-  도커 파일을 작성

- 상태 저장 o

- 만든 도커 파일을 빌드한다.

- 현재 경로에 dbserver 이미지 굽기

- 컨테이너 전부 지우고 docker hub에 올린 이미지로 컨테이너 만들기

 

- commit으로 컨테이너를 이미지로 만들기(이 컨테이너들은 이미지로 생성한 컨테이너) - 상태저장을 위해

- docker hub에 push후 이 이미지(falcon)으로 dbserver를 만들면 댓글이 남아있다(상태저장)

- 다시 워드프레스를 접근하면 이전에 작성했던 글이 나타나며 상태저장이 된것을 확인할 수 있다.

 

# 도커 Onbuild

- 운영자 입장에서 Dockerfile.base 파일 설정

 

# docker build -t hyeongyun/web-base:v1.0 -f Dockerfile.base . # 도커 파일이 이미지로 만들어짐
# docker login
# docker push hyeongyun/web-base:v1.0

- Dockerfile.base 파일을 이미지로 docker hub에 올린다.

# vi Dockerfile
FROM hyeongyun/web-base:v1.0

- 도커 파일 작성

 

- 운영자(centos)환경에서 개발자(Ubuntu)환경으로 Docker 파일을 전송한다.

 

 

- aws.tar 파일을 개발자(Ubuntu)가 작업하는 공간에 올리고 이름을 website.tar로 바꾼다.

- Docker hub에 이미지 올리기

 

- food.tar 파일 ubuntu(개발자) 서버에 올리기

- onbuild 경로에 food.tar 파일을 복사한다.

- webstie.tar 파일을 food.tar 파일로 덮어쓰기

- Dockerfile로 이미지를 구운다. hyeongyun/web-site:food는 이미지 이름

- 구운 이미지로 컨테이너를 실행시키고 docker hub로 push한다.

 

# 도커 사설 레지스트리

- registry 이미지를 이용해서 컨테이너 생성 (GCP)

- 데몬파일을 만들어서 도메인 적어주기(IP로도 접근가능하다), 방화벽과 비슷한 역할을 한다.

- 마지막에 systemctl docker restart 명령어를 실행한다.

- registry의 restart 옵션을 always로 설정했기 때문에 docker를 재시작하면 컨테이너가 자동으로 올라온다

- 막간을 이용해서 wordpress와 dbserver역시 restart를 always로 설정한다.

 

- GCP에서 5000번 포트의 방화벽을 열어준다.

 

- Ubuntu(개발자)에서 etc/docker/daemon.json파일 경로로 접근하여 도메인 설정

 

- hyeongyun/web-site:aws 를 태그지정, 복사 x

 

- hyeongyun/web-site:food를 태그지정

 

- 태그를 지정하여 docker hub에 올린다.

 

- food도 마찬가지로 태그를 지정하여 docker hub에 올린다.

- 개발자(ubuntu)입장에서 사설 레지스트리(5000번 포트)에 이미지를 올리는 과정이었다.

 

 

- 운영자(centos)도 데몬 파일을 작성해준다.

- 운영자(centos)는 사설 레지스트리

 

- 개발자(Ubuntu)가 사설 레지스트리에 올린 이미지를 이용하여 컨테이너를 생성

- 실수로 ubunut 서버에서 진행했지만 centos(운영자) 환경에서 aws 이미지를 활용한다(food도 실수..)

 

- docker ps를 이용하여 포트를 확인하고

- 지정된 포트로 접근하면 정상적인 결과를 확인할 수 있다.

 

- food도 마찬가지

- centos에서 실행, Ubuntu x

- 포트로 접근하여 결과 확인

 

# 도커 컴포즈 : 2개 이상의 컨테이너를 스크립트로 만들고 실행

- docker hub 사이트에 wordpress 사용방법이 나와있다.

 

- repository파일을 curl 명령어로 다운 받는다.

- vi docker-compose.yml은 wordpress 경로로 이동하여 실행

- mkdir my_wordpress && cd $_ 경로로 접근하여 docker-compose.yml 파일을 만들어준다.

- yaml 파일에 다음과 같은 정보를 넣어준다.

- 총 2개의 컨테이너가 들어진다(wordpress, dbserver)

- 지정한 8888번 포트로 접근하면 wordpress를 확인할 수 있다.

 

# docker-compose up -d # 백그라운드 실행 yaml파일을 읽는다. 컴포즈 실행
# docker-compose ps # 업로드 확인
# docker-compose pause # 컨테이너를 잠시 멈춤
# docker-compose unpause # 일시정지 상태를 해제
# docker-compose port wordpress 80
# docker-compose config
# docker-compose stop wordpress # 멈추고 싶은 컨테이너 선택해서 멈춘다.
# docker-compose rm wordpress # 컨테이너를 지운다. 연결된 네트워크까지 지워진다.
# docker-compose down # docker-compose 이미지를 지우는 명령어
# docker-compose down -v # 볼륨을 지우는 명령어
# docker-compose down --rmi all

- 위 명령어를 원하는 상황에 따라 실행

 

# 도커 컨테이너 모니터링

VERSION=v0.44.0 # use the latest release version from https://github.com/google/cadvisor/releases
docker run \
  --volume=/:/rootfs:ro \ # /:/ 백업을 의미
  --volume=/var/run:/var/run:ro \ # ro: read-only
  --volume=/sys:/sys:ro \
  --volume=/var/lib/docker/:/var/lib/docker:ro \
  --volume=/dev/disk/:/dev/disk:ro \
  --publish=8080:8080 \ # 포트포워드
  --detach=true \
  --name=cadvisor \
  --privileged \
  --device=/dev/kmsg \ # 커널의 로그데이터들을 수집하기 위한 장치
  gcr.io/cadvisor/cadvisor:$VERSION

- 8080 포트로 접근하면 cAdvisor 화면을 볼 수 있다.

- CPU나 메모리 같은 항목을 찾아볼 수 있다.

- "docker system df"를 활용하면 docker를 구성하는 시스템들을 확인할 수 있다.

 

 

# 도커 스왐

- centos ova파일을 가져오고 manager1 이름을 설저하여, cpu 갯수를 2개로 설정하여 VM을 만든다

 

- worker1, worker2를 순서대로 만든다

 

- firewall-cmd --permanent --zone=public --add-port=2377/tcp; manager1에서 2377포트를 열어준다.

- worker1과 worker2가 manager1으로 향하는 느낌(포트를 manager1에게만 열어주었기 때문에)

 

 

'Cloud Solution Architect > 컨테이너' 카테고리의 다른 글

docker2  (0) 2023.05.26
도커(Docker)  (0) 2023.05.25