인프런 - Docker 4
컨테이너 == 프로그램
여러개의 컨태이너를 한꺼번에 실행시키고 한꺼번에 중지시키는 명령어가 존재하는데 이걸 docker compose 라고한다
요즘은 docker compose 가 들어가있음 그런데, 요즘 기술 쓰는애들은, 따로 docker compose 프로그램을 깔아서 standalone으로 관리하는 경우가 많음. 그래서 우리도 따로 깐 다음 매니지해보자, 즉 따로 compose 프로그램 깔아서 관리 == docker-compose, 내장된 compose 프로그램 쓰는거 == docker compose
Sudo chmod +x /usr/bin/docker-compose è docker compose 에 실행권한 주는거 안주면 command not found 남, 그리고 그냥 실행하면 permission denied 에러나옴
Docker-compose == standalone version 으로 쓰는거
Docker compose == docker 명령어쓰고 그 안에 compose application 실행 한다는 뜻
------------------------------------ ------------------------------------ ------------------------------------ ------------------------------------
Page 2 Docker 주요 명령어 익히기
Docker Server <-> Client
Docker image 다운로드-> 다운받은 imgae로 docker contatiner 생성 및 실행
도커는 이미지를 관리하는 명령과 컨테이너 관리하는 명령어가 다름
도커이미지는 대부분, 도커 허브에있따.
도커 허브에 로그인이 먼저 되어야함
Docker login
한번만 로그인이 되어있으면 됨
로그인 후 이제 이미지 서치해서 다운 받으면됨
Docker search ubuntu
개인적인 이미지냐? 공식 이미지(회사에서 공식적으로 올린 이미지)냐 [Official Tab] 보면 알 수 있음, 글고 보통 / 슬래시 들어가있으면 공식 이미지가 아님
이미지가 어떤 태그가 있는지 확인은 사이트 가서 확인하는 수 밖에없음
이미지에 태그 걸어서 (예로 Latest 태그 붙이면, 최신 이미지로 생각하게 할수있고 다운받게 가능)
이렇게 그냥 다운도 가능하고, 특별 태그가 붙은 이미지 다운 가능
Docker images 쳐서 다운받은 이미지 관리
-q 쓰면 이미지 ID만 나오게 함, 나중에 여러방향으로 쓸수있음
다운 받은 이미지 삭제
보통은 태그 명까지 써서, 삭제하는게 정석. 또는 이미지 아이디 써서 삭제 하는거
이미지 rmi 지우기, 이미지 받고 컨테이너 만들면 됨. Docker run 이라고 이미지 받자마자 바로 container 생성 하는 명령어도 있음
Docker create ubuntu -> 컨테이너 아이디 화면에 표시 및 컨테이너 만들어짐
컨테이너를 생성만 했기때문에 docker ps 치면 실행중인 컨테이너로 안나옴, 실행시켜야 여기 나옴
실행 안하고있는 컨테이너 모두 볼수있음
컨테이너 확인
Docker는 어떤 프로그램을 감싸는 컨테이너이다. 이 컨테이너에서 실행된 명령어가 무엇인지? 를 표기하는데 Command 임
/bin/bash 라는 프로그램 == Shell
Docker rm == 컨테이너 삭제하는 명령어
Contatiner Name이나 Names를 point 해서 지울수 있음
자 이제 컨테이너를 실행해보자
컨테이너 시작하자마자 종료됨 왜? 응용프로그램 실행 끝나면 컨테이너 중지되게 하는게 도커
즉 ubuntu image안에 아무것도 안도니까(프로그램 아무것도 안도니까), 실행하자마자 꺼지는거
이 경우, bash라는 Shell프로그램 자체가 켜졌다가 꺼졌기 때문
표줁 입력 받을수있는 상태가 아니였으니까 꺼짐.
그렇다면, 표준입력을 이 안에다가 어떻게 입력을 하는가?
리눅스에서는 항상 이 3가지 스트림이 실행이 된다는 사실을 항상 기억하자
STDIN : standard input (표준입력), STDOUT : standard output (표준출력) , STDERR : standard error (표준에러)
표준입력이 Bash에 붙어있지 않기 때문에 Bash 가 종료가 되면서 컨테이너가 종료 된다는 것
Docker run 명령
해당 이미지를 선택하면, 컨테이너를 생성하면서 실행하는 옵션이라고 생각하면됨
-I 표준 입력을 열어놓는 옵션
-t 가상 터미널 tty (tele type writer) terminal을 의미함 리눅스에서는 모든 하드웨어를 파일처럼 다룬다. 그래서 리눅스에서는 tty라는 파일을 만들어서, 키보드 입력을 리눅스로 가져온다고 이해하기. 두번째 키보드를 연결해야 할 때는 ,가상 tty(pseudo)를 만든다
이렇게 터미널이 붙으면서, 컨테이너 내부 프롬프트 접속 가능
-I = 컨테이너에 표준입력 열기 , -t 입력 받을수있는 tty (키보드)열기
컨테이너가 만들어져있고, 어딘가에 저장 된 상태. 지워야한다
Docker run -it –rm 코맨드 쓰면 끝난뒤 바로 컨테이너 지워짐
도커 백그라운드로 실행하기 (실행중인 상태이지만, 터미널로 입력은 받지 않은 상태로만듬)
Attach 쓰면 쉘로 들어갈수있음
docker run -it(표준입력, 가상터미널tty) -d (백그라운드 열기) --name wayne(컨테이너이름) ubuntu(사용할 이미지이름)
백그라운드로 만든담, attach로 접속가능, 접속한뒤 exit (표준입력 나가면) 꺼짐
실행중인 컨테이너를 잠깐 멈추는 명령어는? Docker pause
Docker pause/unpause
그럼 pause 와 start/stop 다른점은 무엇인가?
Start 옵션은 exited 되어있는 도커를 다시 activate 시키는대 사용
Resetart == 껏다키는거
Unpuase 는 멈췃따가 다시 실행시키는거