3. Docker 시작 (둘) 첫 번째 Docker 미러 만들기
다음 내용은 Docker 공식 문서에서 발췌한 것으로 학습 및 기술 공유에만 사용되며 상업용도로 사용되지 않습니다. 전재는 출처를 밝혀 주십시오.
다음은 본문.
Dockerfile
지금부터 Docker 실천에 들어갑니다. 우선, 첫 번째 Docker 이미지를 만듭니다. 이것은 용기를 시작하고 용기에서 간단한 Python 응용 프로그램을 실행합니다.앞서 배운 바와 같이 Docker 이미지 파일은 응용 프로그램의 정상적인 운행에 필요한 모든 것을 포함합니다. 자원 수요, 환경에 대한 요구, 의존적인 라이브러리와 실행 코드 등을 포함합니다.그러면 어떻게 Docker 거울을 정의하고 설명합니까? Dockerfile을 사용해야 합니다.
Dockerfile은 네트워크 인터페이스와 가상화된 디스크 드라이브 등 하드웨어 자원을 포함하는 용기의 운행 환경을 정의합니다. 이 자원들은 숙주 시스템과 분리되어 시스템에 아무런 영향을 주지 않습니다.Dockerfile은 일치하는 Docker 렌즈를 구축하는 데 사용됩니다. Docker 렌즈를 사용하여 Docker 용기를 실행하면 이 렌즈에 정의된 프로그램이 어디에서 실행되든지 일치하는 기능을 사용할 수 있습니다.
첫 번째 Dockerfile 작성
빈 디렉터리에 Dockerfile이라는 파일을 만들고 이 파일에 다음 내용을 입력하십시오
Dockerfile
# python
FROM python:2.7-slim
# /app
WORKDIR /app
# ( ) /app
ADD . /app
# requirements.txt
RUN pip install -r requirements.txt
# 80
EXPOSE 80
# world
ENV NAME World
# , python app.py
CMD ["python", "app.py"]
위의 Dockerfile을 자세히 읽으면, Requirements를 만들어야 합니다.txt와 app.py, Dockerfile이 있는 디렉터리에 두 파일을 차례대로 만듭니다.
requirements.txt
Flask
Redis
requirements.txt에서 용기 의존 패키지를 정의합니다: Flask 및 Redis.Dockerfile의 RUN pip install -r requirements.txt는 Requirements로 읽을 것입니다.txt의 내용을 설치한 다음 의존 패키지를 설치합니다.
app.py
from flask import Flask
from redis import Redis, RedisError
import os
import socket
# Connect to Redis
redis = Redis(host="redis", db=0, socket_connect_timeout=2, socket_timeout=2)
app = Flask(__name__)
@app.route("/")
def hello():
try:
visits = redis.incr('counter')
except RedisError:
visits = "cannot connect to Redis, counter disabled"
html = "Hello {name}!
" \
"Hostname: {hostname}
" \
"Visits: {visits}"
return html.format(name=os.getenv('NAME', "world"), hostname=socket.gethostname(), visits=visits)
if __name__ == "__main__":
app.run(host='0.0.0.0', port=80)
대칭복사 구성
현재 우리가 작성한 Dockerfile을 사용하여 이미지를 구축합니다. 다음 명령을 실행하여pythonhelloworld의 docker 이미지를 생성합니다.
docker build -t pythonhelloworld
이렇게 만들어진 이미지 파일은 로컬 Docker registry (등록 센터) 에 저장됩니다.다음 명령을 실행하면 모든 로컬 등록 센터의 거울을 볼 수 있습니다
docker images
미러 시작 컨테이너 실행
다음 명령을 실행하여 이 컴퓨터의 4000 포트를 docker 용기의 80 포트에 비추십시오
docker run -p 4000:80 pythonhelloworld
다음을 수행할 수 있습니다.http://localhost:4000실행 결과를 볼 때도 - d 파라미터를 사용하여 용기를 백엔드에서 실행할 수 있습니다
docker run -p -d 4000:80 pythonhelloworld
docker ps 명령을 사용하여 실행 중인 모든 docker 용기 프로세스를 볼 수 있습니다
docker ps
CONTAINER ID IMAGE COMMAND CREATED
13f4a444f359 pythonhelloworld "python app.py" 35 seconds ago
docker stop 명령을 사용하여 어떤 docker 용기 프로세스를 종료합니다
docker stop 13f4a444f359
미러 공유
현재 구축된 이 렌즈를 Docker public registry에 발표할 수 있습니다. (다른 공공 registry나 개인 설정의 registry에 발표할 수도 있습니다.) 어디에 있든지 도커가 설치된 기계에서 이 렌즈를 끌어내면 이 기계에서 같은 용기를 시작할 수 있습니다.
docker 계정 등록
만약 docker 계정이 없다면, 먼저 여기에 계정을 등록해야 합니다:cloud.docker.com. 그리고login 명령을 사용하여 로그인할 수 있습니다.
docker login
미러 게시
다음 명령을 사용하여 이미지를 표시할 수 있습니다. 그 중에서username은 사용자 이름이고, Repository는 사용자 정의 창고 이름이며, tag 표시는 선택할 수 있으며 기본값은latest입니다.
docker tag pythonhelloworld username/repository:tag
다음 명령을 실행하여 이 거울을 발표합니다
docker publish username/repository:tag
발표에 성공하면, 모든 docker 기기에서 다음 명령을 실행하면 자동으로 이 이미지를 끌어오고 실행합니다
docker run -p 4000:80 username/repository:tag
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.