이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 3344|회답: 1

[출처] .NET 8용 Docker 기본 이미지 변경

[링크 복사]
게시됨 2023. 12. 23. 오후 5:30:10 | | | |
.NET 8 이전에는 컨테이너가 기본적으로 루트 상태로 실행되었고, .NET 8부터는 모든 리눅스 컨테이너 이미지에 비루트 사용자가 포함되었습니다. 루트 사용자가 아니더라도 한 줄의 코드로 .NET 컨테이너를 호스팅할 수 있습니다. 이 플랫폼 수준의 변화는 애플리케이션을 더욱 안전하게 만들고 .NET을 가장 안전한 개발자 생태계 중 하나로 만들 것입니다. 작은 변화이지만, 방어 심층에 큰 영향을 미칩니다.

Docker 컨테이너의 UID와 GID를 이해하세요

기본적으로 컨테이너 내 프로세스는 루트 사용자 권한으로 실행되며, 이 루트 사용자는 호스트 머신의 루트 사용자와 동일합니다. 무섭지 않나요? 왜냐하면 컨테이너 내 프로세스가 적절한 기회를 갖게 되면 호스트 머신의 모든 것을 제어할 수 있다는 뜻이니까요!

참조:하이퍼링크 로그인이 보입니다.

.NET 8 Docker 이미지

.NET 8 도커 이미지에는 두 가지 주요 변경 사항이 있습니다. 다음과 같습니다:

  • Image는 새 앱 계정과 그룹을 생성하고, 기본적으로 앱 계정으로 앱을 실행합니다
  • 포트 8080으로 바꿨더니 포트 80이었는데, 포트 80은 특권 포트이기 때문에 루트 권한이 필요해요(적어도 일부 지역에서는)


.NET Docker 이미지 소스 코드 주소:하이퍼링크 로그인이 보입니다.

의존성은 다음과 같습니다:

aspnet:8.0-bookworm-slim -> dotnet/runtime-8.0.0-bookworm-slim-amd64 -> dotnet/runtime-deps-8.0.0-bookworm-slim-amd64 -> amd64/debian:bookworm-slim

dotnet/runtime-deps-8.0.0-bookworm-slim-amd64는 다음과 같습니다:

아래에 나와 있습니다:



앱 계정을 사용해 기본 이미지를 입력하면 명령어는 다음과 같습니다:

다음 그림에 나타난 대로 현재 사용자 및 환경 변수를 출력하세요:



참조:하이퍼링크 로그인이 보입니다.

도커파일

프로젝트를 Docker 이미지로 패키징해야 한다면, 새로운 .NET 8 Docker 컨테이너 지원을 생성해야 하며, 기본 Linux 환경의 Dockerfile 파일 구성은 다음과 같습니다:

Dockerfile에서 시스템 타임존을 설정하면, 다음과 같은 코드가 나옵니다:

허가 거부 오류는 다음과 같이 발생할 수 있습니다:

4>F:\itsvse\Dockerfile : error CTC1014: #21 [최종 3/3] 실행 인인 -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime & echo Asia/Shanghai > /etc/timezone
4>F:\itsvse\Dockerfile : error CTC1014: #21 0.314 in: 심볼릭 링크 '/etc/localtime' 생성에 실패: 권한 거부됨
4>F:\itsvse\Dockerfile : 오류 CTC1014: #21 오류: 프로세스 "/bin/sh -c ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone" 가 성공적으로 완료되지 않음: 종료 코드: 1
4>F:\itsvse\Dockerfile : error CTC1014: ------
4>F:\itsvse\Dockerfile : error CTC1014: > [최종 3/3] RUN in -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime & echo Asia/Shanghai > /etc/timezone:
4>F:\itsvse\Dockerfile : error CTC1014: #21 0.314 in: 심볼릭 링크 '/etc/localtime' 생성에 실패: 권한 거부됨
루트 계정으로 타임존을 설정한 후 다시 앱 계정으로 전환하고 다음과 같이 수정하세요:

(끝)





이전의:.NET/C# 는 ToLookup 메서드를 수집하기 위해 사용됩니다
다음:PHP는 모든 헤더 정보를 가져옵니다
 집주인| 게시됨 2023. 12. 23. 오후 5:31:55 |
Docker 이미지 계층을 분석하기 위해 권장되는 두 가지 도구가 있습니다
https://www.itsvse.com/thread-10063-1-1.html
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com