Docker 교육 3 - 나의 첫 번째 Docker 배포

5511 단어 devopstutorialdocker
지금까지의 상황을 요약해 보겠습니다. Dockerfile의 몇 가지 기본 사항을 살펴보았습니다. 계속 진행하면서 유용하게 사용할 수 있는 몇 가지 기본 명령에 대해 조금 이야기했습니다. 작은 Golang API를 빌드하기 위해 Dockerfile을 작성했습니다. 마지막으로 이미지를 구축하고 태그에 대해 논의했습니다.

도커 실행



이제 이 이미지를 배포하고 약간 사용해 보겠습니다. 터미널을 열고 다음 명령을 입력하십시오.

$ docker run --publish 127.0.0.1:8080:10000/tcp helloFromIntegratnIO


이 명령을 한 번에 하나씩 살펴보겠습니다.
docker run : 여기에서 이미지를 컨테이너로 사용run한다고 Docker cli에 알립니다.
-publish : Publish은 로컬 포트를 컨테이너의 포트에 바인딩합니다.
127.0.0.1 : localhost만 계속 노출하므로 컨테이너는 시스템 외부에서 사용할 수 없습니다.
:8080 : 바인딩할 호스트 시스템의 로컬 포트입니다.:10000 : 8080가 가장하려는 컨테이너 내부의 포트입니다.
/tcp : 사용하려는 프로토콜입니다. 필요한 경우 udp 또는 sctp를 사용할 수도 있습니다. 자세한 내용은 User Guide에서 확인할 수 있습니다.

아직 엔터를 누르지 않았다면. 계속해서 지금 치고 Docker 실행 명령을 시작하십시오.

다음 출력이 표시되어야 합니다.

$ docker run -p 127.0.0.1:8080:10000/tcp helloFromIntegratnIO
Starting Web Server
Preparing to handle requests
Ready for requests


작동하는지 봅시다.

두 번째 터미널을 열고 다음을 입력하십시오.

$ curl localhost:8080


산출:

$ curl localhost:8080
Hello from Integratn.IO!!!


이제 우리는 요리하고 있습니다. 그러나이 작은 컨테이너로 무엇을 할 수 있습니까?

curl 요청의 응답을 변경해 보겠습니다. 환경 변수를 컨테이너에 전달하여 이를 수행할 수 있습니다. 우리는 이것을 두 가지 방법 중 하나로 할 수 있습니다. 도커 파일을 편집할 수 있습니다. ENV 명령어를 추가합니다. MESSAGE가 다른 것과 같기를 원한다고 말하십시오. 이미지를 재구성하십시오. 그런 다음 마지막으로 다시 실행하십시오. 이는 환경 변수의 기본값을 설정하는 훌륭한 방법입니다. 또는 값이 있는 매개변수--envdocker run 명령에 추가하고 즉시 변경할 수 있습니다. docker run 명령 중에 전달된 환경 변수는 항상 Dockerfile에 있는 항목보다 우선합니다. 컨테이너를 종료하지 않은 경우 터미널에서 컨테이너를 종료하려면 이미 ctrl +c를 누르십시오.

다음 명령을 실행해 보겠습니다.

docker run --env MESSAGE="Hello from outerspace" -p 127.0.0.1:8080:10000/tcp helloFromIntegratnIO


이제 다른 터미널에서 해당 curl 문을 다시 사용할 수 있습니다.

$ curl localhost:8080
Hello from outerspace


저것 봐. 환경 변수로 응답을 변경했습니다.

도커 임원



컨테이너가 실행되는 동안 docker exec 명령을 살펴보겠습니다. Docker exec를 사용하면 이미 실행 중인 컨테이너 내에서 명령을 실행할 수 있습니다. 이는 컨테이너 디버깅에 매우 유용할 수 있습니다. 그러나 먼저 컨테이너의 이름을 알아내야 합니다.

1강에서 다룬 명령으로 실행 중인 컨테이너를 살펴보겠습니다.

$ docker ps


이와 유사한 출력이 표시되지만 NAMES 필드는 동일하지 않습니다.

$ docker ps                     
CONTAINER ID   IMAGE              COMMAND           CREATED         STATUS         PORTS                       NAMES
56290825f889   helloFromIntegratnIO   "/go/bin/hello"   2 minutes ago   Up 2 minutes   127.0.0.1:8080->10000/tcp   hungry_bohr


이제 실행 중인 컨테이너를 찾았습니다. 컨테이너 이름을 사용하고 셸을 실행하여 컨테이너에 들어가도록 하겠습니다.

docker exec --interactive --tty hungry_bohr /bin/sh


산출:

$ docker exec --interactive --tty hungry_bohr /bin/sh
/go/src/integratnio/go-rest-api # 


그 길이 낯익지 않나요? Dockerfile에서 WORKDIR에 대해 설정한 것과 동일한 경로입니다. 우리는 컨테이너의 껍질 안에 있습니다. 컨테이너에서 나가려면 exit를 입력하고 enter를 누르십시오.

명령을 빠르게 살펴보겠습니다.
docker exec는 기본 명령입니다. 이것은 실행 중인 컨테이너에 대해 무언가를 실행하고 싶다고 선언하는 것입니다.--interactive는 연결되지 않은 경우에도 STDIN을 열린 상태로 유지합니다.--tty는 의사 tty를 제공합니다.hungry_bohr는 실행 중인 컨테이너의 이름입니다. 당신은 다를 것입니다./bin/sh 컨테이너에서 실행하려는 명령입니다. 이에 대한 한 가지 주의사항. 컨테이너에 대해 실행하는 것은 무엇이든 실제로 컨테이너의 일부여야 합니다. 컨테이너를 줄이기 위한 노력으로 많은 컨테이너 이미지에는 사용 가능한 셸 명령이 없습니다.

이제 컨테이너를 실행했습니다. 컨테이너를 탐색할 수 있도록 컨테이너를 실행했습니다. 이번에는 그게 다야. 빌드 컨텍스트에 대한 간략한 탐색이 있는 다음 시간을 준비하십시오.

좋은 웹페이지 즐겨찾기