안녕하세요 😉
유유자적한 개발자 유로띠 입니다 😀
docker
두 번째 시간입니다 ✌
오늘 포스팅은 docker를 사용해 보는 시간이니
docker가 설치되어 있어야 합니다
이전 Docker 설치를 안 보신 분들은 여기를 참조해 주세요
[프로그래밍/Docker] - [DOCKER] docker를 설치해보자 #1
이번 포스팅에서는
✅ Docker 이미지
✅ Docker 컨테이너 생성
✅ Docker 컨테이너 명령어
에 대해서 알아보겠습니다
👏👏👏👏
🎉 Docker를 사용해 보자
📢Docker 이미지
docker 이미지(images)란?
컨테이너를 생성할 때 필요한 요소이며 읽기 전용으로 사용됩니다
이미지는 여러층의 바이너리 파일이 존재합니다
✅ 이미지 형식
[이미지 이름]:[태그]
mongo:4.2
ubuntu:16.04
이미지 이름
이미지가 어떤 역할을 하는지 나타내며 어떤 이미지를 사용할 건지 말 그대로 이미지의 이름을 나타냅니다.
DB 이미지를 받을 거면 mongo 인지 mysql 인지 등등의 이름을 작성합니다
태그
해당 이미지의 버전을 나타내며 태그를 생략하면 도커 엔진은 이미지의 태그를 latest로 인식합니다
📍 Docker 이미지 조회하기
이미지는 Docker Hub 공식 이미지 저장소에서 조회합니다 😁
상단의 검색창에서 원하는 이미지를 검색합니다
저는 ubuntu를 검색해 보겠습니다
검색된 이미지 목록을 보시면 오른쪽에 OFFICIAL IMAGE가 나와있는 이미지를 추천드리며
해당 이미지를 클릭합니다 😊
오른쪽에 이미지를 내려받을 수 있는 명령어가 보입니다
(docker pull ubuntu)
하단에 내려보시면 Docker 이미지의 버전도 알 수 있습니다 😁
Docker 이미지를
어떻게 사용할지 알았으니
다음으로
Docker 컨테이너를 생성해 보겠습니다 👍
📢 Docker 컨테이너
docker 컨테이너(container)란?
도커 이미지로 컨테이너를 생성하면 작업할 수 있는 하나의 독립된 공간을 만듭니다
독립된 공간이기 때문에 컨테이너 안에서 어떤 것을 하든
호스트에는 어떠한 영향도 주지 않습니다 👍
그럼 Docker 컨테이너를 생성하는
두 가지 방법에 대해서 알아보겠습니다 😁
📢 Docker 컨테이너 생성하기 : 첫 번째 방법
✅ 도커 이미지 내려받기
위의 docker hub에서 원하는 이미지를 찾으신 후 서버에서 도커 이미지를 내려받습니다
저는 mongo DB의 4.2 버전을 내려받도록 하겠습니다
#docker pull mongo:4.2
이미지를 제대로 받았는지 확인해 볼까요? 🧐
✅ 이미지 확인
#docker images
✅ 컨테이너 생성
mongo-db라는 이름으로 컨테이너를 생성합니다
#docker create -i -t --name mongo-db mongo:4.2
✅ 컨테이너 시작
#docker start mongo-db
✅ 컨테이너 내부로 접속
#docker attach mongo-db
이처럼 docker 컨테이너 생성 방식은 다음과 같습니다 😁
docker 이미지를 내려받고(pull) ➜ 컨테이너를 생성합니다(docker create) ➜ 컨테이너를 기동 하고(docker start) ➜ 컨테이너 내부로 들어갑니다(docker attach)
📢 Docker 컨테이너 생성하기 : 두 번째 방법
도커 컨테이너를 만드는 두 번째 방법입니다
✅ docker run
docker run 명령어를 사용하여 컨테이너를 생성해 보겠습니다
저는 ubuntu 16.04를 사용해 보겠습니다
#docker run -i -t ubuntu:16.04
-i
상호 입출력
-t
tty를 활성화하여 bash 셸을 사용하도록 설정
끝입니다 👏👏
아마 ubuntu로 접속까지 되셨을 겁니다 👍
즉 run 명령어를 이용하여 pull ➜ create ➜ start ➜ attach 가 한 번에 진행됩니다 👍
📢 docker 명령어
컨테이너를 생성하였으니
컨테이너를 다루는
기본적인 명령어에 대해서 알아보겠습니다 🔎
✅ 외부에서 컨테이너 명령 실행
exec는 외부에서 컨테이너 안의 명령어를 실행하는 명령어입니다
아래의 명령어를 보면 컨테이너 내부의 /bin/bash를 실행하고 -i -t 옵션을 이용하여 내부에서 명령어를 입력하고 해당 결과를 확인할 수 있습니다
아래처럼 입력하면 마치 docker attach 처럼 컨테이너 내부로 접속하여 명령어를 실행할 수 있습니다 👍
#docker exec <옵션> <컨테이너 이름> <명령> <매개 변수>
#docker exec -i -t ubuntu:16.04 /bin/bash
✅ 컨테이너 목록
#docker ps
✅ 컨테이너 전체 목록
정지되어있는 컨테이너까지 확인하려면 -a 옵션을 붙여 줍니다
#docker ps -a
✅ 컨테이너 이름 변경
#docker rename [현재 이름] [변경할 이름]
✅ 컨테이너 삭제
#docker rm [컨테이너 이름]
컨테이너가 기동 중에 삭제 명령어를 실행하면 Error가 발생됩니다 😮
Error response from daemon: You cannot remove a running container
2bd79cd3b9e312912eb0c937ee37c72497ada125a604831602652656c575a9db.
Stop the container before attempting removal or force remove
✅ 컨테이너 강제 삭제
#docker rm -f [컨테이너 이름]
✅ 컨테이너 전체 삭제
#docker container prune
✅ 이미지 삭제
#docker rmi [이미지 ID]
💡 컨테이너 종료
컨테이너를 종료하는 방법은 다양하게 있습니다만 종류에 따라 종료 처리가 다릅니다
🔴 exit
🔴 Ctrl + D
해당 명령어를 이용하여 컨테이너를 종료하면 컨테이너 내부를 빠져나오면서 컨테이너도 같이 종료합니다
그럼 빠져나온 컨테이너의 STATUS는 아래와 같이 Exited (0) .. seconds ago 보이게 됩니다
🟡 Ctrl + P + Q
해당 명령어는 컨테이너 내부에서 빠져나오기만 하며 컨테이너는 종료되지 않습니다
📢 마무리
이번 포스팅에서는
✅ Docker 이미지
✅ Docker 컨테이너
에 대해서 알아보았습니다 😁
이밖에도 docker와 관련된 종류가 참많습니다
컨테이너를 통합 관리 : docker compose
도커 클러스터 : docker swarm
이미지 생성 파일 : dockerfile
하나씩 공부하가면서 포스팅 해 보도록 하겠습니다 ✌
👏👏👏👏👏
'Programming > Docker' 카테고리의 다른 글
[Docker] docker에서 DB 사용해보기 #mongodb 설치 #외부에서 db 접속 (0) | 2020.05.28 |
---|---|
[DOCKER] docker를 설치해보자 #1 (0) | 2020.05.17 |