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
사람이 내가 잘못 여기서 뭘하는지 어떤 생각을 가지고 있습니까? 서비스가 빌드에서 시작되지만 실행했을 때 시작하지 못한다는 것은 뭔가를 놓친다는 것을 암시하지만 나는 그것을 알 수 없습니다.
답장을 보내 주셔서 감사합니다. 안타깝게도 로그 폴더 아래에 로그 파일이 생성되지 않습니다. 사용자는 "도커 run -it nexus3 powershell을 실행하고 유망한 것으로 생각되는 사용자 관리자/컨테이너 관리자에게 돌아온 whoami를 입력했습니다. 슬프게도 docker hub의 넥서스 이미지는 모두 Linux 기반으로 표시되며 Windows 콘테이너, 주로 배우기 운동으로 그러나 나는 당신을보기 주셔서 감사한다. – DelboyJay
다른 사람들은 그들의 github에 창 버전을 위해 그 (것)들을 요구하기 위하여 상처를 입지 않는다.또한 Windows 용 Docker가있는 경우 GUI에서 Linux 엔진으로 쉽게 전환 할 수 있습니다. 희망이 도움이됩니다. – eiichi