먼저 데스크탑에 docker을 다운로드한다.
윈도우는 파워쉘에서 맥은 터미널에서 docker 가 잘 깔렸는지 명령어를 쳐서 확인해 본다
docker 를 쓰기 위해서는 본인이 편한 IDE 와 git 을 설치해야 한다.
실습을 위해 IDE 를 켜고 터미널에
git clone https://gitlab.com/yaco/practice-docker.git
으로 실습 예제을 다운 받는다.
내컴퓨터에 nodejs 가 깔려있지 않다고 가정하고 javascript를 실행하기위해
docker을 사용한다.
터미널에
docker run -it node
어떤 명령어든 permission 관련 오류가 뜨면 앞에 sudo 를 붙여 명령어를 쳐준다.
sudo docker run -it node
이처럼 커서가 변한다.
docker 개발에 필요한 거의 모든 환경을 이미지 형식으로 가지고 있기때문에
개발자가 사용하기 편한 환경을 만들어준다.
run -it node 는 먼저 내 컴퓨터에 node 가 있는지 체크하고 없으면 다운받은후
바로 실행시켜준다.
-it
은 run 명령어 옵션으로 사용되며 이 컨테이너 를 연다음 그 환경안에서 cli로 사용하겠다는거
다운만 받고 싶다면
docker pull [이미지명]:[태그]
ex). docker pull python:3
이같이 쳐주면 된다.
내 컴퓨터에 내 도커 이미지 보기
docker images
이미지로 컨테이너 생성하기
docker create [옵션] [이미지명]:[태그]
ex) docker create -it python
만들어진 컨테이너 시작하기(이미지에 cmd 로 지전해놓은 작업시키기)
docker start [컨케이너 id 또는 이름]
컨테이너로 들어가기 (컨테이너 내 cli 이용하기)
dcker attach [컨테이너 id 또는 이름]
docker ps
를 치면 컨테이너를 확인할수 있다.
docker exec -it [컨테이너명] bash
컨테이너 내부를 통해 가상의 리눅스 환경으로 들어간것이다
그렇다고 리눅스가 다 들어가있는것은 아니다!
여기서 리눅스는 docker desktop 으로 구현 되어 있는 것이다.
어떤 os 에서 작업하든 docker에 가상환경에서 돌아감으로 편리하다.
docker ps -a
를 입력하면 작업중이지 않더라도 모든 컨테이너를 확인할수 있다.
동작중인 컨테이너 재시작
docker restart [컨테이너 id 또는 이름]
도커 컨테이너의 내부 쉘에서 빠져나오기 (컨테인너를 종료)
exit 또는 Ctrl+D
도커 컨테이너의 내부 쉘에서 빠져나오기 (컨테이너를 종료하지 않음)
Ctrl+P,Q
컨테이너 삭제
dockser rm [컨테이너 id 또는 이름]
모든 컨테이너 삭제
docker rm `docker ps -a -q`
이미지 삭제
docker rmi [옵션] [이미지 id]
컨테이너가 있을시 강제 삭제 -f 옵션 사용
모든 컨테이너와 이미지 등 도커 요소 중지 및 삭제
모든 컨테이너 중지
docker stop ${docker ps -aq}
사용되지 않는 모든 도커 요소 (컨테이너 ,이미지 ,네트워크,볼륨 등) 삭제
docker system prune -a
도커파일 이미지 생성
(Dockerfile 파일이 있는 디렉토리 기준, 마지막의 .이 상대주소)
docker build -t [이미지명]
도커 컴포즈 실행
(dicker-compose 파일이 있는 디렉토리 기준)
docker-compose up
run 명령어는 이미지를 생성하는 과정에서 실행할 명령어
workdir 는 이미지 내 에서 명령어를 실행할 (현 위치로 잡을 ) 디렉토리 설정
cmd 컨테이너 실행시 실행할 명령어
frontend 파일 위치에서
docker build -t jin-img .
실해시켜주면
node 가 없을시 설치후 http-server를 다운받아 입힌후
http-server를 /home/node/app 에서 실행 시켜주는것이다.
docker images
를 입력하면 만들어지 이미지를 확인 할 수있다.
[컨테이너 명] [이미지명]
docker run --name frontend-con ${pwd}:/home/node/app -p 8080 :8080 jin-img
이번에는 데이터 베이스를 작업해보자
ENV 는 환경변수를 미리지정하는 것이다.
실전에서는 따로 다른파일에서 관리하자!
COPY 명령어는 ./scripts/ 안에 파일을 /docker-entrypoint-initdb.d/ 안으로 복사한다는것이다.
컨테이너 를 실행할때 안에 query 문을 같이 실행 시키는 것이다.
docker build -t database-img .
build 시 m1 칩일 겨우 에러가 날것이다.
FROM 부분을 --platform=linux/x86_64 mysql:5.7. 로 설정해주어야 이미지 빌드가 된다.
docker run --name database-con -v 3306:3306 db-img
이렇게 하나씩 돌리기 번거롭고 각각의 컨테이너가 연결해서 사용하지 못함으로
이렇게 상위폴더에 docker-compose 파일을 만들어서 설정을 하고 한번에 돌릴 수 있다.
각 componet에 build 위치와 ports 를 정해주고 volumes 이필요한 부분을 설정해준 후
docker-compose up
명령어를 쳐주면 빌드가 된 후 연결되어 작동한다.