비공개 레지스트리를 위해 Docker를 로컬로 설정
8240 단어 jfrogdeploymentdockerwebdev
이 설정이 필요한 이유는 무엇입니까?
자체 기본 이미지를 구축하거나 사용자 지정 Docker 기본 이미지가 있는 조직의 경우 AWS 등과 같은 개인 Docker 레지스트리에서 호스팅될 가능성이 높습니다.
로컬 시스템에서 해당 Dockerfile을 실행하려면 먼저 인증해야 합니다. Artifactory(jFrog)와 같은 Docker 레지스트리와 함께 사용되는 외부 인증 서비스가 있을 수 있습니다.
Docker(개인) 레지스트리란 무엇입니까?
Docker 레지스트리는 명명된 Docker 이미지의 저장 및 배포 시스템입니다.
프라이빗 Docker 레지스트리를 사용하면 조직 내에서 기본 이미지를 공유하고 사용할 수 있습니다. 이는 아키텍처의 빌딩 블록을 위한 중앙 집중식 소스입니다.
시작하기
이 예에서는 비공개 이미지 및 플러그인에 대한 인증 서비스로 Artifactory에 초점을 맞춥니다.
기본 사용자 지정 이미지 다운로드:
자격 증명을 사용하여 Docker 레지스트리에 로그인해야 합니다.
아티팩토리의 경우,
Set me up
docker
이제 비공개 이미지를 인증하고 다운로드하기 위해 실행해야 하는 명령이 표시됩니다.
다음과 같아야 합니다.
docker login {org-name}-{docker-repository-name}.jfrog.io
또는 다음과 같이
~/.docker/config.json
파일에 자격 증명을 수동으로 추가할 수 있습니다.{
"auths": {
"https://{org-name}-{docker-repository-name}.jfrog.io": {
"auth": "{username}:{PASSWORD} (converted to base 64)",
"email": "[email protected]"
}
}
}
이제 맞춤형 비공개 이미지를 다운로드할 수 있습니다. Dockerfile이 어떻게 생겼는지 살펴보고 Artifactory에서도 호스팅되는 개인 라이브러리를 설치하는 방법을 살펴보겠습니다.
개인 라이브러리용 Dockerfile 설정:
우리는 개인 라이브러리/보석 등에 대한 인증 서비스로 Artfactory에 집중할 것입니다.
Dockerfile은 다음과 같아야 합니다.
# Fetch base image
FROM {org-name}-{docker-repository-name}.jfrog.io/{path-to-docker-image}
LABEL maintainer="Tanmay Jain <[email protected]>"
# Setup your work directory
ARG APP_HOME=/home/app/web
WORKDIR $APP_HOME
# Copy required files
COPY Gemfile.lock $APP_HOME
RUN gem install bundler --force -N -v "$(tail -n 1 Gemfile.lock | tr -d '[:blank:]\n')" && bundle --version
COPY . $APP_HOME
RUN chown -R app:app $APP_HOME
USER app
# Setup ssh keys to allow installing gems from artifactory
ARG SSH_KEY
ENV SSH_KEY=$SSH_KEY
# Create id_rsa from string arg, and set permissions
RUN echo "$SSH_KEY" > /root/.ssh/id_rsa
RUN chmod 600 /root/.ssh/id_rsa
# Create known_hosts
RUN touch /root/.ssh/known_hosts
# bundle rubygems
ENV BUNDLE_DEPLOYMENT=true
ARG BUNDLE_JOBS=4
ARG BUNDLE_WITHOUT=development:test
RUN --mount=type=ssh,target=/home/app/.ssh/id_rsa,uid=9999,gid=9999 \
--mount=type=secret,id=artifactory,uid=9999,gid=9999 \
BUNDLE_{ORG-NAME}__JFROG__IO={JFROG_USERNAME}:{JFROG_API_KEY} bundle install
EXPOSE 3000
CMD ["bundle", "exec", "rails", "server"]
다음 명령을 사용하여 Dockerfile에서 빌드합니다.
docker build --build-arg SSH_KEY="$(cat ~/.ssh/id_rsa)" .
위에서 수행한 작업을 살펴보겠습니다.
FROM {org-name}-{docker-repository-name}.jfrog.io/{path-to-docker-image}
Gemfile.lock
를 복사합니다. package.json
, yarn.lock
Gemfile
등과 같은 다른 파일도 필요에 따라 복사해야 합니다.COPY Gemfile.lock $APP_HOME
ssh
키를 추가합니다.ARG SSH_KEY
ENV SSH_KEY=$SSH_KEY
RUN echo "$SSH_KEY" > /root/.ssh/id_rsa
RUN chmod 600 /root/.ssh/id_rsa
RUN touch /root/.ssh/known_hosts
ssh
키를 사용하여 비공개 gem/라이브러리를 설치하는 데 사용됩니다.RUN --mount=type=ssh,target=/home/app/.ssh/id_rsa,uid=9999,gid=9999 \
--mount=type=secret,id=artifactory,uid=9999,gid=9999 \
BUNDLE_{ORG-NAME}__JFROG__IO={JFROG_USERNAME}:{JFROG_API_KEY} bundle install
개인 저장소에서 이미지와 라이브러리를 가져오는 Docker를 사용하여 로컬 머신을 설정하는 방법입니다.
Reference
이 문제에 관하여(비공개 레지스트리를 위해 Docker를 로컬로 설정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/tanminator/setup-docker-locally-for-private-registries-3hko텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)