https://docs.microsoft.com/ko-kr/rest/api/storageservices/Query-Operators-Supported-for-the-Table-Service?redirectedfrom=MSDN

https://azure.microsoft.com/ko-kr/global-infrastructure/services/

위 사이트에서 지역을 지정하고 제품을 선택하면 사용 가능한지 나타납니다.

 

아래 처럼 표시되면 사용이 가능하다는 뜻입니다.

아무런 표시가 없다면 사용불가입니다.

 

사내에서 Docker image 를 관리하기 위해 private registry 를 구성하는 방법입니다.

OS 는 Windows Server 2016 입니다.

 

 

1. regisrty 저장소를 만듭니다.

mkdir C:\registry

 

2. registry 서버를 구동합니다. (보안적용X)

docker run -d -p 5000:5000 --restart=always --name registry -v C:\registry:C:\registry stefanscherer/registry-windows:2.6.2

 

3. 5000 번 포트를 열어 줍니다.

  Azure 로 구동된 VM 인 경우 Network 에서 5000번 port 를 열어 줍니다. (inbound port 추가)

 

여기까지 서버쪽에 구성은 완료되었습니다.

 

이제 서버측이 아닌 클라이언트 단에서 구성된 서버로 이미지를 올리는 방법입니다.

1. 클라이언트 단의 C:\ProgramData\Docker\config 에서 daemon.json 파일에 아래 항목을 추가합니다.

IP 주소는 위 서버의 IP 입니다. ( 이 항목을 등록해서 https 로 접근하지 않고 http 로 접근할수 있게합니다.)

{
 "insecure-registries":["13.92.126.222:5000"],
}

2. 명령어를 통해 서버측 registry 에 로컬 이미지를 업로드 합니다.

제가 가진 이미지목록 중 nanoserver/iis 를 이미지를 업로드 하는 예시입니다.

docker tag nanoserver/iis:latest 13.92.126.222:5000/nanoserver

docker puch 13.92.126.222:5000/nanoserver

 

3. 제대로 업로드 되었는지 확인합니다.

http://13.92.126.222:5000/v2/_catalog (대소문자 주의)

IP 주소는 registry 서버 IP 이며 위 주소로 접근하면 아래 처럼 nanoserver 이미지가 업로드 된 걸 알수 있습니다.

서버측 디렉토리 구조

 

 

참고

https://hub.docker.com/r/stefanscherer/registry-windows/

https://novemberde.github.io/2017/04/09/Docker_Registry_0.html

 

 

docker run -it --memory 1g --cpu-percent 20 microsoft/nanoserver
1. 변경할이름으로 이미지를 만든다. (복제라고 보면될것같다)

  docker tag changename:latest oldname:latest


2. 기존 이미지를 제거한다

  docker rmi oldname

1. PowerShell 갤러리에서 Docker-Microsoft PackageManagement Provider를 설치합니다.

    Install-Module -Name DockerMsftProvider -Repository PSGallery -Force

2. PackageManagement PowerShell 모듈을 사용하여 최신 버전의 Docker를 설치합니다

     Install-Package -Name docker -ProviderName DockerMsftProvider

3. 재부팅합니다.

     Restart-Computer -Force

4. OS 업데이트 (모두(All) 업데이트합니다.)

     sconfig

5. 테스트 명령

     docker run microsoft/dotnet-samples:dotnetapp-nanoserver-sac2016

 

* 설치 오류

가상머신의 사이즈(cpu, ram) 이 작은 경우 Docker 가 실행되지 않고 아래 처럼 오류가 발생됩니다.
>  Resize 를 통해 vm 사양을 올려주면 정상 동작 됩니다. (Resize 방법: https://kjun.kr/903)

오류 시 사양

오류 내용

 

> Resize 후 사양

> 정상 동작


참고

https://docs.microsoft.com/ko-kr/virtualization/windowscontainers/quick-start/quick-start-windows-server

 

Windows Server의 Windows 컨테이너

컨테이너 배포 빠른 시작

docs.microsoft.com

 

VM 사이즈 (cpu core 수 , 램 용량등) 가 작다면 이를 손쉽게 변경 할 수 있습니다.

 

1. Azure Portal 에서 Virtual machines 를 선택하고 이전에 만든 vm 을 선택합니다.

 

2. vm 블레이드 에서 Size 를 선택하고 변경할 Size 를 선택한 후 Resize 버튼을 클릭합니다.

3. Resize 가 진행되는 동안 원격이 붙어있다면 자동으로 끊어지며 공용 IP 는 변경되지 않습니다.

 

 

1. 리소스 그룹을 만든다.

az group create --name "kjun-rg" --location "eastus"

 

2. 가상머신을 만든다.

az vm create --resource-group "kjun-rg" --name "kjun-vm" --image "win2016datacenter" --size "Standard_A1" --admin-username "kjun" --admin-password "1q2w3e4r5t!!"

위 작업만으로 원격접속 가능한 VM 이 생성된다.

 

3. 80 포트 개방이 필요한 경우 개방한다.

az vm open-port --port 80 --resource-group "kjun-rg" --name "kjun-vm"

 

4. 포털 확인

 

insecure-registries 항목은 registry 에서 pulling 시 https 가 아닌 http 로 pulling을 하기 위해 설정이 필요하다.

 

1. C:\ProgramData\docker\config\daemon.json 작성

   config 폴더에 key.json 파일만 있다면 daemon.json 을 만들어서 아래 항목을 추가한다.

{
  "insecure-registries": ["192.168.0.51:5000"]
}

2. 아래 명령어를 실행

dockerd --unregister-service
dockerd --register-service -G docker -H npipe:// --insecure-registry 192.168.0.51:5000

 

1, 2 중 하나만 적용이 가능하다. 1번이 최신 방법이고 2번은 예전 부터 사용해오던 방식

docker pull 명령어를 실행했는데 아래 처럼 에러가 발생되었다. (Windows Server 2016 VM)

 

c:\program files\docker\docker.exe: no matching manifest for unknown in the manifest list entries.

해당 에러는 도커허브쪽에 먼가 지워진 탓에 발생되는 에러이다.

pulling 하려는 도커이미지 명이 바뀌었는지 아니면 허브쪽에 삭제가 된건 아닌지 확인해야한다.

 

 

 

 

+ Recent posts