인프런 커뮤니티 질문&답변

youna010808님의 프로필 이미지

작성한 질문수

Jenkins를 이용한 CI/CD Pipeline 구축

실습4) Docker Container에 배포하기 ①

mytomcat 컨테이너가 실행이 안되는 문제

24.09.06 00:25 작성

·

101

1

Dockerfile로 이미지가

image.png


만들어진 상태에서
docker run --privileged  -p 8080:8080 --name mytomcat docker-server:latest

명령어를 입력하면

image.png

위와 같은 에러가 발생합니다.

실습 환경은 DinD 방식을 사용하고 있으며, edowon0623/docker-server:m1 이미지를 pull 받아서 컨테이너를 실행시키고 있습니다

답변 4

0

youna010808님의 프로필 이미지
youna010808
질문자

2024. 09. 12. 00:59

현재 실습을 진행하는 환경은 MacOS (M3) 이며 실습 내용을 그대로 따라했는데도

image.png

이와 같이 마지막 줄에 아래와 같은 오류가 발생합니다.

exec /usr/local/tomcat/bin/catalina.sh: invalid argument
아래는 호스트 PC에서 실행 중인 컨테이너 목록입니다

image.png

 

 



0

Dowon Lee님의 프로필 이미지
Dowon Lee
지식공유자

2024. 09. 10. 08:12

안녕하세요, 이도원입니다.

실습환경에서 edowon0623/docker-server:m1 이미지를 사용하셨다고 하셔서, 실행하신 환경이 Apple chip을 사용한 MacOS (M1, M2, M3 등) 이라고 가정하고 확인해 보실 수 있는 내용을 설명드립니다.

먼저, Host PC(MacOS)에서 아래 명령어를 이용하여 manager라는 이름의 docker 컨테이너를 실행합니다. manager 컨테이너에는 SSH, Docker가 설치되어 있습니다.

docker run --privileged --name manager -itd -p 10022:22 -p 8081:8080 -e container=docker -v /sys/fs/cgroup:/sys/fs/cgroup:rw --cgroupns=host edowon0623/docker-server:m1 /usr/sbin/init

다음으로, manager 컨테이너에 docker exec 명령어를 이용하여 접속하시거나 SSH 명령어를 이용하여 접속해 봅니다.

docker exec -it manager bash

아래와 같이 manager 컨테이너로 접속 되면, 작성하신 docker-server:latest 라는 이미지를 실행해 봅니다. 아마도 docker-server:latest 이미지는 Jenkins에서 빌드하도록 하셨을 것 같습니다.

[root@f10de1b3ad2f ~]# docker run -p 8080:8080 --name mytomcat docker-server

마지막으로, Host PC(MacOS)의 웹브라우저에서 http://localhost:8081 로 접속 시 manager 컨테이너에서 실행한 Tomcat 서버가 실행되는지 확인해 봅니다.

위와 같은 순서로 실행하였을때, 정상적으로 실행되는 것을 확인했는데, 혹시라도 다른 오류가 발생하신 거라면, 실행하신 환경이나 과정을 조금 더 공유해 주시면, 다시한번 원인을 찾아 보도록 하겠습니다.

감사합니다.

0

youna010808님의 프로필 이미지
youna010808
질문자

2024. 09. 09. 09:59

docker run --privileged -p 8080:8080 --name mytomcat docker-server:latest

이렇게 수정해서 입력해도 위와 같이 invalid argument 에러가 발생합니다

0

인프런 AI 인턴님의 프로필 이미지

2024. 09. 08. 00:31

안녕하세요, 인프런 AI 인턴입니다.

docker run 명령어에서 --privileged-p 8080:8080 사이에 올바르게 공백이 포함되지 않은 것 같습니다. 명령어의 올바른 형태는 다음과 같아야 합니다:

docker run --privileged -p 8080:8080 --name mytomcat docker-server:latest

올바르게 공백을 넣어서 명령어를 다시 시도해보세요. 이 구조를 따르면 컨테이너가 기대한 대로 실행될 것입니다.

실습 환경에서 DinD(Docker in Docker)를 사용하고 있는데, edowon0623/docker-server:m1 이미지를 성공적으로 pull 받고 컨테이너를 실행하려면, 해당 명령어의 구문을 정확히 지키는 것이 중요합니다.

문제가 계속 발생한다면, Docker 문서 또는 해당 이미지에 대한 문서를 참고하여 추가적인 설정이 필요하지 않은지 확인해보는 것도 좋을 것입니다.