Windows10 에 Docker Desktop 설치하기
- windows10에 Docker설치하기 : https://www.lainyzine.com/ko/article/a-complete-guide-to-how-to-install-docker-desktop-on-windows-10/
- 위 링크에서 Windows에 Docker Desktop설정 및 환경 세팅 및 테스트에 사용할
nginx
라는 도커 이미지 파일 다운로드까지 진행 할 수 있다.
nginx이미지 파일을 컨테이너로 띄우기
- powershell에서
docker images
명령어로 도커 이미지 확인
- 이미지가 확인 되었다면
docker run -p 4567:80 -d nginx:latest
명령어로 컨테이너를 생성합니다.
- 도커 컨테이너 아이디를 다음 명령어에 추가하여 컨테이너에 접속합니다.
docker exec -it [ContainerID] /bin/bash
- 정확히 말하면
exec
명령어를 사용하여 해당 컨테이너의 bash프로그램을 실행합니다.
- 정확히 말하면
nginx의 index.html 내용 확인
- nginx 컨테이너 내부에 존재하는 html을 확인해봅시다.
- 웹브라우저 창에서
localhost:4567
주소로 접속했을 때, html의 내용이 웹 표시됩니다.- html 경로는 Container에서
/usr/share/nginx/html/index.html
입니다. - index.html의 내용이 웹브라이저 창에 표시되는 것입니다.
- html 경로는 Container에서
index.html 내용 수정하기
- 수정하기에 앞서 vim을 설치해야합니다.
- vim은 txt편집기라고 생각하시면 됩니다.
vim 설치하기
#apt-get update #apt-get upgrade #apt-get install vim
vi /usr/share/nginx/html/index.html
명령어를 입력하면 index.html파일의 내용을 수정할 수 있습니다.
수정 후 index.html
- html에 test0822 텍스트를 추가했습니다.
Docker image 관리하기
Docker hub 저장소 생성하기
- docker hub는 도커 이미지를 관리하는
컨테이너 이미지 라이브러리
입니다. - docker hub사용하기 : https://galid1.tistory.com/324Container를 Docker Image로 저장하기
현재 Container를 Image로 만들기
- host에서 'docker commit [ContainerID] [저장할 이미지 이름]' 입력하여 현재 내용 수정 한 Container를 이미지로 저장 합니다.
- docker 이미지 리스트에서 저장 확인 할 수 있습니다.
- docker hub에서 repository를 생성합니다.
Docker Image를 Docker hub에 푸쉬하기
- host에서
docker login
입력하여 도커 hub에 접속합니다.- ID, Password 입력합니다.
Docker 이름, 태그 변경하기
- docker hub에 push하기에 앞서 이미지는 repository,tag가 존재해야합니다.
docker tag [이미지 ID] [저장소이름:태그]
명령어로 이미지를 저장합니다.- Docker Hub에 생성한 ID는 administrator이고, 생성한 Repository 이름이 test_repo라면,
docker tag [이미지 ID] administrator/test_repo:1.0
으로 저장합니다.- 여기서 tag는 구분자 혹은 버전 이라고 생각하시면 됩니다.
- docker hub의
test_repo
에 1.0이란 태그로 이미지를 저장했습니다.
Docker 개인 저장소 생성
- 개인 저장소도 docker image가 존재한다
- 이미지 다운로드 :
docker pull registry:latest
- 도커 실행 :
docker run -d -p 5000:5000 --name local_repo -v D:\docker_repo:/tmp/registry registry
개인저장소에 이미지 저장하기
- 이미지 tag 설정 : docker tag [현재 이미지의 repository:tag] [DOCKER_REGISTRY_IP:DOCKER_REGISTRY_PORT]/[tag]
docker tag 0822testfile:0822test localhost:5000/0822testfile:1.0
입력
- 이미지 push
docker push localhost:5000/0822testfile:0822test
입력
- 이미지 pull
- docker pull localhost:5000/0822testfile:0822test개인 저장소의 image list 확인은 어떻게?
- 보통 'Docker registry web'과 Docker에서 지원하는 'RestApi'를 사용한다.
- API(Application Programming Interface)란
- 데이터와 기능의 집합을 제공하여 컴퓨터 프로그램간 상호작용을 촉진하며, 서로 정보를 교환가능 하도록 하는 것
- REST API의 정의
- REST 기반으로 서비스 API를 구현한 것
- 최근 OpenAPI(누구나 사용할 수 있도록 공개된 API: 구글 맵, 공공 데이터 등), 마이크로 서비스(하나의 큰 애플리케이션을 여러 개의 작은 애플리케이션으로 쪼개어 변경과 조합이 가능하도록 만든 아키텍처) 등을 제공하는 업체 대부분은 REST API를 제공한다.
- 출처 : https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html
- 참고 : https://docs.docker.com/registry/spec/api/
- Docker registry web 구현하기 : https://waspro.tistory.com/532
- 개인 저장소 생성하기2
- 참고 : https://docs.microsoft.com/ko-kr/visualstudio/containers/container-tools?view=vs-2019#publish-docker-images
- Amazon AWS (Amazon Web Service)란?
- Amazon에서 개발한 클라우드 컴퓨팅 플랫폼
- Amazon에서 제공하는 클라우드 서비스
- 네트워킹을 기반으로 가상 컴퓨터와 스토리지, 네트워크 인프라 등 다양한 서비스를 제공
- 기존의 물리적인 형태의 실물 컴퓨팅 리소스를 네트워크 기반 서비스 형태로 제공하는 것
- AWS 관련 영상 : https://www.youtube.com/watch?v=IH7mUwunzlo
Docker 컨테이너 서로 연결하기
- 도커 1.9.0 버전부터 네트워크를 생성할 수 있는 기능이 정식으로 추가되었습니다.
- 네트워크를 생성하고 컨테이너를 연결시키면 해당 네트워크 안에 속한 컨테이너끼리는 서로 접속할 수 있습니다.
- 추후 --link 옵션은 사라질 예정입니다. (https://docs.docker.com/network/links/)
- 먼저 docker network create 명령으로 hello-network를 생성합니다.$ sudo docker network create hello-network
- DB 컨테이너를 생성하면서 hello-network에 연결합니다.$ sudo docker run --name db -d --network hello-network mongo
- web 컨테이너를 생성하면서 hello-network에 연결합니다.$ sudo docker run --name web -d -p 80:80 --network hello-network nginx
- web 컨테이너에서 Bash 셸을 실행한 뒤에 ping을 실행해봅니다.$ sudo docker exec -it web bash
root@ed384f006421:/# ping db PING db (172.18.0.2): 56 data bytes 64 bytes from 172.18.0.2: icmp_seq=0 ttl=64 time=0.023 ms 64 bytes from 172.18.0.2: icmp_seq=1 ttl=64 time=0.061 ms 64 bytes from 172.18.0.2: icmp_seq=2 ttl=64 time=0.058 ms
- 이렇게 같은 네트워크에 속한 컨테이너끼리는 컨테이너 이름으로 접속할 수 있습니다.
- docker link : http://wiki.webnori.com/pages/viewpage.action?pageId=9798668
- docker link docs : https://docs.docker.com/network/links/
- docker compose : https://miiingo.tistory.com/92
Docker 볼륨
- http://cloudrain21.com/examination-of-docker-containersize-uf
- docker 다루기 참고 사이트 : http://pyrasis.com/Docker/Docker-HOWTO#section-11
Dockerfile로 이미지 생성하기
- VisualStudioCode Open합니다.
- 폴더를 새로 생성 후
Dockerfile
을 생성합니다. - 아래 내용을 Dockerfile에 입력합니다.
# 베이스 이미지를 명시해준다.
From alpine
# 추가로 필요한 파일을 받는다.
# Run command
# 컨테이너 시작시 실행 될 명령어를 명시해준다.
cmd ["echo","hello!"]
- VisualStudioCode의 상단에 'Terminal'을 열고 아래 명령어 입력합니다.
> docker build ./ 혹은 > docker build -t 저장소(프로젝트이름):태그 ./
- 마지막에
Use 'docker scan' to run Snyk tests against images to find vulnerabilities and learn how to fix them
메시지가 보인다면 빌드에 성공한 것 입니다. docker images
명령어로 리스트 확인 합니다.- Repository, tag가 둘 다 'none'인 이미지 혹은 내가 태깅한
레포지토리:태그
로 이미지가 보입니다.- none으로 확인되는 경우 해당 이미지에 태깅을 해줍니다.
docker tag [imageID] baseImage:1.0
docker images
명령어로 리스트 확인하면 태깅 된 이미지를 확인 할 수 있습니다.docker run [레포지토리:태그]
명령어를 입력하여 컨테이너를 실행합니다.- 'hello' 문장이 표시되면서 컨테이너가 실행되면 베이스이미지 생성 성공입니다.
- 참고 : https://joke00.tistory.com/306
도커안에서 도커 실행하기
docker run --privileged --name dind1 -d test:test
명령어 입력시 해당 컨테이너에서 새로운 도커 컨테이너를 실행시킬 수 있다.--privileged
: 컨테이너에서 리눅스 커널 기능(명령어)을 사용할 수 있게 해준다.- 참고 : https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=isc0304&logNo=222274955992
'프로그래밍 > Docker' 카테고리의 다른 글
[Docker] Docker Compose (0) | 2023.03.29 |
---|---|
[Docker] Docker VS Podman (0) | 2023.02.24 |
[Docker] Container란? (0) | 2023.02.24 |
[Docker] MongoDB 도커 컨테이너 올리기 (0) | 2022.03.31 |
[Docker] Mysql docker생성 및 Docker Volume 생성하기 (0) | 2022.03.31 |