[Docker] 도커활용

Shaun·2021년 11월 9일
1

Docker

목록 보기
2/7

도커설치

  • 이미 많은 블로그에서 자세히 나와있어 핵심만 설명 한다

  • 도커는 기본적으로 linux를 지원하기 때문에 MacOS와 Windows에 설치되는
    Docker는 가상머신에 설치됨

  • Windows 는 Hyper-V 라는 것을 사용한다. Windows pro 만 사용 가능 했으나 Windows hompe 버전에서도 WSL2를 이용하여 설치 가능하다.

  • 도커 데스크탑응 설치하면 이런 내용이 뜰것이다. 위에서 언급햇듯이 WSL2를 설치해야 도커가 사용가능해 WSL2를 깔으라는 내용이다.

  • 성공적으로 설치하면 Windwos powershell 이나 cmd(콘솔창) 을 통해 실행 가능하다.

Docker을 실행 시켜보자

  • 도커 기본실행 방법과 명령어들이다. 하나하나 파헤쳐 보자!

  • 우분투라는 이미지에 태그가 20.04 를 컨테이너로 실행한다는 뜻

  • run 명령어를 실행하면 사용할 이미지가 저장되어 있는지 먼저 체크한다.
    (도커는 이미지로 컨테이너를 만든다)
    없으면 다운로드(pull) 한후 컨테이너를 생성한다.

  • 컨테이너 내부에 들어가기 위해 sh를 실행하고 키보드 입력을 위해 -it 옵션을 줍니다.

  • 컨테이너 상태는 실행, 정지, 삭제 가 있다. --rm 옵션이 없다면 컨테이너가 종료되더라도 삭제되지 않고 남아있어 수동으로 삭제 해줘야한다.


  • 도커는 다양한 리눅스 배포판을 실행 할수 있다.

  • 컨테이너안에 있는 쉘 커맨드에 접속

  • Ubuntu 또는 CentOS에 포함된 다양한 기본기능이 필요 없는 경우, Alpine 이라는 초소형 (5MB) 이미지를 사용할 수도 있습니다

웹 어플리케이션 실행하기

  • 호스트와 컨테이너 연결 포트 즉 내 pc 포트 5678(왼쪽)이 오른쪽 hashicorp 포트 5678 과 연결 된다는 뜻이다.

  • 호스트 5678 로 들어온 요청은 컨테이너의 5678(오른쪽)으로 전달하도록 경로가 설정 되어있다고 보면된다.

  • curl = 브라우저처럼 http접속해서 결과 받아오는 명령어

  • 연결뒤 localhost 5678 로 들어가면 해당 창이 나오고 로그도 찍힌다.

  • 동작 방식은 이렇다고 보면된다. 우리가 명령어를 치면 호스트 도커가 그 명령어에 맞게 컨테이너를 실행한다. 지금까지는 우리는 컨테이너들을 만들고 거기에 접속 까지 해봤다.

Redis/ 데이터베이스

Redis

  • Redis라는 메모리기반 데이터 베이스를 실행하는 명령어이다

  • 키, 벨류 형태로 되어 있다.

  • 도커를 이용하면 포트를 다르게해서 redis 여러개 띄울수 있다.

MySQL - 실행(만들기)

  • MySQL 을 실행했으니 접속까지 해보자!

MySQL - 접속

  • 접속 성공 이제는 DB를 만들어보자 . 테이블 만드는 명령어는 기존 MySQL 문법과 같다.

  • exec = 도커 컨테이너가 떠잇는데 그안에서 무엇인가 하고싶을때/ 다른 컨테이너 접속시

  • MySQL 2에 MySQL 클라이언트로 접속 완료

MySQL - DB만들기


  • DOCKER -> MySQL실행 -> 접속 -> DB생성까지 완료

워드프레스 블로그생성

  • MySQL을 실행한 상태에서 생성해야한다. 왜냐하면 MySQL에 있는 DB를 사용할 꺼니까

도커 기본명령어(ps,stop,rm,logs,images)

  • ps =현재 돌아가고 있는 컨테이너 목록들을 보여준다

  • ps -a = 정지되거나 종료된것 컨테이너들을 보여준다

  • images = 말그대로 이미지 리스트를 보여준다

  • rm = 컨테이너 삭제시 사용된다 . stop 을 먼저하고 rm 으로 삭제를 해준다.

  • rmi = 이미지 삭제시 사용

  • logs = 말그대로 해당 컨테이너의 로그 파일들을 보여준다

  • logs -f = 로그를 실시간으로 받아 본다(대기상태)

network create 명령어

  • 도커 컨테이너끼리 이름으로 통신할 수 있는 가상 네트워크를 만드는 명령어 이다.

  • app-network 라는 이름으로 wordpress와 mysql이 통신할 네트워크를 만든다.

  • mysql 컨테이너에 네트워크를 추가한다.

  • 워드프레스를 app-network에 속하게 하고 mysql을 이름으로 접근

volume (-v)

  • 컨테이너를 지우면 그안에 있었던 데이터들도 같이 지워 진다.

  • 내디렉토리랑 : 컨테이너랑 연결해준다 -> 컨테이너를 삭제해도 내디렉토리에 데이터가 남아서 삭제해도 데이터가 남아있다

  • 삭제하고 다시 접속할떄 그 디렉토리위치를 물고가기떄문에 컨테이너를 삭제하고 다시 만들면 데이터가 복구된다.

-> 컨테이너에도 데이터 를 저장하고 내 디렉토리에도 데이터를 저장해 놓는 방법이다.

Compose

  • 도커는 명령어들이 굉장히 조심스럽다. 띄어쓰기나 글자하나하나가 신경쓰인다.

  • 그걸 편하게 해주는 프로그램이 Compose!!

  • 기존에 복잡하고 조심스러웠던 MySQL이나 워드프레스 명령어보다 훨씬 깔끔한 키 벨류 형태로 정리되었다. 이러면 가독성도 좋아지고 코드 관리도 쉬워진다.

  • 명령어 docker-compose up 을 하게 되면 자동으로 yml 파일을 읽어 MySQL과 워드프레스를 조건에 맞게 만들어 준다.

아.....오류만 보면 침이 고인다. 구글링을 해보자

  • stack over flow를 참고 하였다. 흔한 오류여서 금방 방 답을 찾았다.
  1. compose version이 안맞아서 오류
  2. indentation (들여쓰기) 오류
  • 1번은 버전을 확인했을때 아무 문제가 없었다. 그럼 역시나 2번 들여쓰기 오류이다. yml을 잘 써본 적이 없어서 그냥 보기좋게 적기만 하면되겠지 싶었는데 들여쓰기도 다맞아야된다는 사실은 처음 알았다...

  • 워드프레스와 db가 사이좋게 yml을 토대로 잘 만들어지고 있다.

  • MySQL 과 워드프레스에 관한 정보들이 많들어졌다

  • 명령어 docker-compose up 반대 docker-compose down 을 하면 종료가 된다.

궁금한점

이건 MySQL 과 워드프레스 생성시 발견한점인데...

  • MySQL

  • 워드프레스

-> 간단히 정리하자면 둘다 처음 만들때 오류가 났었다. 그러면 생성이 되지 않아야 하는데 컨테이너 status 를보면 둘다 "created" 이다.(생성이 안되어야 정상인데 created???)

-> 삭제하고 오류가 나지 않도록 작성하면 status 는 "up N second" 라고 나온다. 이 둘의 차이점을 찾아봐야 겠다.

profile
호주쉐프에서 개발자까지..

0개의 댓글