2017-05-19 16 views
1

Docker를 처음 사용하고 Windows 컨테이너에서 Nexus3을 실행하려고합니다.docker Windows 이미지를 실행할 때 Sonatype Nexus3 서비스를 시작할 수 없습니다.

내 컴퓨터는 윈도우 10를 실행 내가 사용하고 있습니다 : 도커 CE 버전 17.03.1-CE-win12 (12058) 채널 : 안정적인 d1db126

나는 다음과 같은 DockerFile 내용이있다.

FROM microsoft/nanoserver 
#FROM microsoft/windowsservercore  # I also tried this as the base image in case something was missing that I needed. 
EXPOSE 8081 
ADD /content /nexus3 

WORKDIR \\nexus3\\nexus-3.3.1-01-win64\\nexus-3.3.1-01\\bin 
RUN ["nexus.exe", "/install", "nexus3"] 
RUN ["nexus.exe", "/start", "nexus3"] 
RUN ["powershell", "-Command", "Get-Service", "nexus3"] 

콘텐츠 폴더 트리는 다음과 유사하며 이미 압축이 풀린 창에 대한 nexus3 다운로드와 같습니다.

B:\Docker\nexus\content 
==> tree /A 
B:. 
\---nexus-3.3.1-01-win64 
    +---nexus-3.3.1-01 
    | +---.install4j 
    | +---bin 
    | +---deploy 
    | +---etc 
    | +---jre 
    | +---lib 
    | +---public 
    | \---system 
    \---sonatype-work 

컨테이너가 빌드되면 서비스가 설치되어 시작되었다고 표시됩니다. Get-Service nexus3을 사용하여이 사실을 확인했습니다. 다음은 빌드 출력입니다.

B:\docker\nexus 
==> docker build -t nexus3 . 
Sending build context to Docker daemon 222 MB 
Step 1/7 : FROM microsoft/nanoserver 
---> 6c367cf4cb98 
Step 2/7 : EXPOSE 8081 
---> Running in 047d556668ac 
---> 6478e2faf841 
Removing intermediate container 047d556668ac 
Step 3/7 : ADD /content /nexus3 
---> caacf937e885 
Removing intermediate container cb601d94cd4a 
Step 4/7 : WORKDIR \\nexus3\\nexus-3.3.1-01-win64\\nexus-3.3.1-01\\bin 
---> d0e1afd3d105 
Removing intermediate container 201e369a32de 
Step 5/7 : RUN nexus.exe /install nexus3 
---> Running in 61516df89010 
Installed service 'nexus3'. 
---> bbfff0f34205 
Removing intermediate container 61516df89010 
Step 6/7 : RUN nexus.exe /start nexus3 
---> Running in ff274ef81a91 
Service is already running. 
---> ba20f07a47ce 
Removing intermediate container ff274ef81a91 
Step 7/7 : RUN powershell -Command Get-Service nexus3 
---> Running in 3c8c767a56fd 

Status Name    DisplayName 
------ ----    ----------- 
Running nexus3    nexus3 


---> ef166720c132 
Removing intermediate container 3c8c767a56fd 
Successfully built ef166720c132 

지금까지 그렇게 좋았습니다. 이제 다음 명령을 사용하여 이미지를 실행 : 내가 확인 컨테이너 내부에서 파워 쉘 터미널을 사용하여 지금

docker run -it nexus3 powershell 

를 서비스가 실행중인 경우 :

Get-Service nexus3 
Status Name    DisplayName 
------ ----    ----------- 
Stopped nexus3    nexus3 

그래서 내가 실행 한 다음 그러나 그것을 날 싫어해! ;-)

Start-Service nexus3 

Start-Service : Failed to start service 'nexus3 (nexus3)'. 
At line:1 char:1 
+ Start-Service nexus3 
+ ~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : OpenError: (System.ServiceProcess.ServiceController:ServiceController) [Start-Service], ServiceCommandException 
    + FullyQualifiedErrorId : StartServiceFailed,Microsoft.PowerShell.Commands.StartServiceCommand 

이제 내가 잘못 여기있어 경우에 저를 해결하지만 난 때문에 스위치 따라서이 주위에 권한 문제가되지해야 "- 그것은 고정 표시기 실행"의 컨테이너 내부 관리자 PowerShell을 가져야한다 서비스를 시작합니다.

는 또한 서비스가 자동으로 실행되도록 설정되어 있음을 확인하고 그것을 잘했다 :

==>$(Get-Service nexus3).StartType 
Automatic 

사람이 내가 잘못 여기서 뭘하는지 어떤 생각을 가지고 있습니까? 서비스가 빌드에서 시작되지만 실행했을 때 시작하지 못한다는 것은 뭔가를 놓친다는 것을 암시하지만 나는 그것을 알 수 없습니다.

답변

0

실제로 컨테이너 내의 사용자에게는 관리자 권한이 있어야하므로 포트와 같은 다른 것들이 차단되어 있는지 확인할 수 있습니다. Nexus에 익숙하지 않지만 로그 디렉토리를 어디에서 찾을 수 있는지 알고 있습니까? 서비스를 차단하는 다른 것을 제공 할 수도 있습니다.

또한 많은 기업들이 이미 GitHub의 컨테이너로 게임을 시작하므로 일반적으로 기존 이미지를 찾습니다.

사실, 빠른 Google 검색에서 나에게 이것을 보여 줬습니다. 어쩌면 이것이 당신이 필요로하는 것입니까?

https://hub.docker.com/r/sonatype/nexus/

+0

답장을 보내 주셔서 감사합니다. 안타깝게도 로그 폴더 아래에 로그 파일이 생성되지 않습니다. 사용자는 "도커 run -it nexus3 powershell을 실행하고 유망한 것으로 생각되는 사용자 관리자/컨테이너 관리자에게 돌아온 whoami를 입력했습니다. 슬프게도 docker hub의 넥서스 이미지는 모두 Linux 기반으로 표시되며 Windows 콘테이너, 주로 배우기 운동으로 그러나 나는 당신을보기 주셔서 감사한다. – DelboyJay

+0

다른 사람들은 그들의 github에 창 버전을 위해 그 (것)들을 요구하기 위하여 상처를 입지 않는다.또한 Windows 용 Docker가있는 경우 GUI에서 Linux 엔진으로 쉽게 전환 할 수 있습니다. 희망이 도움이됩니다. – eiichi