# 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 |