운영 및 유지보수 Docker docker에서 진입점과 cmd의 차이점은 무엇입니까?

docker에서 진입점과 cmd의 차이점은 무엇입니까?

Jul 27, 2020 am 11:20 AM
cmd docker

Docker에서 진입점과 cmd의 차이점은 다음과 같습니다. 1. CMD 명령은 실행 파일을 실행하고 매개변수를 제공합니다. ENTRYPOINT에 대해 매개변수를 지정할 수 있습니다. 2. ENTRYPOINT 명령 자체에도 매개변수가 포함될 수 있으며 변경된 매개변수는 덮어쓰여지지 않습니다. .

docker에서 진입점과 cmd의 차이점은 무엇입니까?

Docker에서 진입점과 cmd의 차이점은 다음과 같습니다.

1. CMD 명령:

CMD는 컨테이너가 실행될 때 몇 가지 명령과 매개 변수를 제공합니다.

  • CMD ["executable","param1","param2"](exec 형식, 이것이 선호되는 형식)

  • CMD ["param1","param2"](ENTRYPOINT의 기본 매개변수)

  • CMD 명령 param1 param2 (쉘 형식)

첫 번째 사용법: 실행 파일을 실행하고 매개변수를 제공합니다.

두 번째 사용법: ENTRYPOINT에 대한 매개변수를 지정합니다.

세번째 사용법(쉘 형태) : "/bin/sh -c" 메소드로 실행되는 명령입니다.

다음을 지정하는 경우:

CMD [“/bin/echo”, “this is a echo test ”]
로그인 후 복사

빌드 후 실행(이미지 이름이 ec라고 가정):

docker run ec
로그인 후 복사

은 다음을 출력합니다.

this is a echo test
로그인 후 복사
로그인 후 복사

스타트업 항목처럼 느껴진다면 당분간은 이렇게 이해하면 됩니다.

참고:

docker run 명령은 매개변수가 지정된 경우 CMD의 매개변수를 덮어씁니다. (다음과 같은 설명이 있습니다. docker run -it ubuntu /bin/bash 명령 매개변수는 -it이 아닌 /bin/bash를 참조합니다. -it는 컨테이너의 매개변수가 아닌 docker의 매개변수일 뿐입니다.) docker run命令如果指定了参数会把CMD里的参数覆盖: (这里说明一下,如:docker run -it ubuntu /bin/bash 命令的参数是指/bin/bash 而非 -it ,-it只是docker 的参数,而不是容器的参数,以下所说参数均如此。)

同样是上面的ec镜像启动:

docker run ec /bin/bash
로그인 후 복사

就不会输出:

this is a echo test
로그인 후 복사
로그인 후 복사

因为CMD命令被”/bin/bash”覆盖了。

2、ENTRYPOINT指令 

字面意思是进入点,而它的功能也恰如其意。它可以让你的容器功能表现得像一个可执行程序一样。

容器功能表现得像一个可执行程序一样,这是什么意思呢?

直接给个例子好说话:

例子一:

使用下面的ENTRYPOINT构造镜像:

ENTRYPOINT ["/bin/echo"]
로그인 후 복사

那么docker build出来的镜像以后的容器功能就像一个/bin/echo程序:

比如我build出来的镜像名称叫imageecho,那么我可以这样用它:

docker  run  -it  imageecho  “this is a test”
로그인 후 복사

这里就会输出”this is a test”这串字符,而这个imageecho镜像对应的容器表现出来的功能就像一个echo程序一样。 你添加的参数“this is a test”会添加到ENTRYPOINT后面,就成了这样 /bin/echo “this is a test” 。现在你应该明白进入点的意思了吧。

例子二:

ENTRYPOINT ["/bin/cat"]
로그인 후 복사

构造出来的镜像你可以这样运行(假设名为st):

docker run -it st /etc/fstab
로그인 후 복사

这样相当: /bin/cat /etc/fstab 这个命令的作用。运行之后就输出/etc/fstab里的内容。

ENTRYPOINT有两种写法:

写法一:

ENTRYPOINT ["executable", "param1", "param2"] (the preferred exec form)
로그인 후 복사

写法二:

ENTRYPOINT command param1 param2 (shell form)
로그인 후 복사

你也可以在docker run 命令时使用–entrypoint指定(但是只能用写法一)。

下面是我把ENTRYPOINT设为[“/bin/sh -c”]时候运行的情况:

  • linux-oj9e:/home/lfly/project/docker # docker run -it t2 /bin/bash

  • root@4c8549e7ce3e:/# ps

  • PID TTY TIME CMD

  • 1 ? 00:00:00  sh

  • 9 ? 00:00:00  bash

  • 19 ? 00:00:00  ps

可以看到PID为1的进程运行的是sh,而bash只是sh的一个子进程,/bin/bash只是作为 /bin/sh -c

동일합니다. 위 ec 이미지 시작의 경우:

FROM  ubuntu:14.10
ENTRYPOINT  ["top", "-b"]
CMD  ["-c"]
로그인 후 복사
는 CMD 명령이 "/bin/bash"로 덮어쓰기 때문에

rrreee

를 출력하지 않습니다.

2. ENTRYPOINT 명령
🎜🎜은 문자 그대로 진입점을 의미하며 그 기능은 바로 그 의미입니다. 이를 통해 컨테이너는 실행 가능한 프로그램처럼 작동할 수 있습니다. 🎜🎜컨테이너 기능이 실행 가능한 프로그램처럼 동작한다는 것은 무엇을 의미하나요? 🎜🎜말하기 쉽게 예를 들어보세요.🎜🎜예 1:🎜🎜다음 ENTRYPOINT를 사용하여 이미지를 구성하세요.🎜rrreee🎜그런 다음 docker에서 만든 이미지의 컨테이너 기능은 /bin/echo 프로그램과 같습니다. :🎜🎜예를 들어 빌드하면 이미지 이름이 imageecho이므로 다음과 같이 사용할 수 있습니다. 🎜rrreee🎜 "this is a test"라는 문자열이 여기에 출력되고 이 imageecho 이미지에 해당하는 컨테이너는 다음과 같이 동작합니다. 에코 프로그램. 추가한 "this is a test" 매개변수는 ENTRYPOINT 뒤에 추가되며 /bin/echo "this is a test"와 같이 됩니다. 이제 진입점이 무엇을 의미하는지 이해해야 합니다. 🎜🎜예 2: 🎜rrreee🎜에 의해 생성된 이미지를 다음과 같이 실행할 수 있습니다(이름이 st라고 가정): 🎜rrreee🎜이것은 다음과 동일합니다: /bin/cat /etc/fstab 명령은 않습니다. 실행 후 /etc/fstab의 내용이 출력됩니다. 🎜🎜🎜ENTRYPOINT에는 두 가지 작성 방법이 있습니다. 🎜 🎜🎜 방법 1: 🎜rrreee🎜 방법 2: 🎜rrreee🎜 docker run 명령에서 –entrypoint 사양을 사용할 수도 있습니다(그러나 방법 1만 사용할 수 있습니다). 🎜🎜다음은 ENTRYPOINT를 ["/bin/sh -c"]로 설정했을 때의 실행 상황입니다. 🎜🎜🎜🎜linux-oj9e:/home/lfly/project/docker # docker run -it t2 /bin/bash 🎜🎜🎜🎜root@4c8549e7ce3e:/# ps🎜🎜🎜🎜PID TTY                                            ~                    ? 00:00:00 bash🎜🎜🎜🎜19 ? 00:00:00 ps🎜🎜🎜🎜PID 1을 사용한 프로세스는 다음과 같습니다. sh를 실행하면 bash는 sh의 하위 프로세스일 뿐입니다. /bin/bash는 sh -c 이후의 매개변수입니다. 🎜🎜CMD는 ENTRYPOINT에 대한 매개변수를 제공할 수 있으며 ENTRYPOINT 자체에도 매개변수가 포함될 수 있지만 변경해야 할 매개변수는 CMD로 작성하고 매개변수는 ENTRYPOINT로 변경할 필요가 없습니다. 예: 🎜rrreee🎜 변경이 필요한 매개변수를 입력하세요. 변경된 매개변수가 CMD에 기록됩니다. 그런 다음 docker run에서 매개변수를 지정하여 CMD(여기서는 -c)의 매개변수를 덮어쓰지만 ENTRYPOINT의 매개변수는 덮어쓰지 않도록 할 수 있습니다. 🎜🎜🎜관련 튜토리얼 권장사항: 🎜docker 튜토리얼🎜🎜🎜

위 내용은 docker에서 진입점과 cmd의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

명령 프롬프트에서 CMD를 사용하여 Bitlocker 암호화를 끄는 방법 명령 프롬프트에서 CMD를 사용하여 Bitlocker 암호화를 끄는 방법 Jun 19, 2024 am 11:33 AM

관리-bde-offC를 끄려면 관리자 명령 프롬프트에 다음 명령을 입력하십시오. 그러나 때때로 다음 프롬프트가 나타날 수 있습니다. 오류 - 이 볼륨은 자동으로 다른 볼륨의 잠금을 해제할 수 있는 하나 이상의 외부 키를 저장합니다. 이 유형의 키를 먼저 삭제해야 이 볼륨을 잠금 해제할 수 있습니다. 이때 먼저 다음 명령을 실행해야 합니다. (시스템 파티션이 C가 아닌 경우 아래 드라이브 문자를 변경하십시오.)manage-bde-autounlock-ClearAllKeysc: 오류 2: 볼륨이 잠겨 있기 때문에 이 작업을 수행할 수 없습니다. 관리-bde-unlockc:-rp123456789012345678901234567890123456789012345678 참고:

PHP 마이크로서비스 컨테이너화의 민첩한 개발 및 운영 PHP 마이크로서비스 컨테이너화의 민첩한 개발 및 운영 May 08, 2024 pm 02:21 PM

답변: PHP 마이크로서비스는 민첩한 개발을 위해 HelmCharts로 배포되고 격리 및 확장성을 위해 DockerContainer로 컨테이너화됩니다. 자세한 설명: HelmCharts를 사용하여 PHP 마이크로서비스를 자동으로 배포하여 민첩한 개발을 달성하세요. Docker 이미지를 사용하면 마이크로서비스의 신속한 반복 및 버전 제어가 가능합니다. DockerContainer 표준은 마이크로서비스를 격리하고 Kubernetes는 컨테이너의 가용성과 확장성을 관리합니다. Prometheus 및 Grafana를 사용하여 마이크로서비스 성능 및 상태를 모니터링하고 경보 및 자동 복구 메커니즘을 생성하세요.

PI 노드 교육 : PI 노드 란 무엇입니까? Pi 노드를 설치하고 설정하는 방법은 무엇입니까? PI 노드 교육 : PI 노드 란 무엇입니까? Pi 노드를 설치하고 설정하는 방법은 무엇입니까? Mar 05, 2025 pm 05:57 PM

Pinetwork 노드에 대한 자세한 설명 및 설치 안내서이 기사에서는 Pinetwork Ecosystem을 자세히 소개합니다. Pi 노드, Pinetwork 생태계의 주요 역할을 수행하고 설치 및 구성을위한 전체 단계를 제공합니다. Pinetwork 블록 체인 테스트 네트워크가 출시 된 후, PI 노드는 다가오는 주요 네트워크 릴리스를 준비하여 테스트에 적극적으로 참여하는 많은 개척자들의 중요한 부분이되었습니다. 아직 Pinetwork를 모른다면 Picoin이 무엇인지 참조하십시오. 리스팅 가격은 얼마입니까? PI 사용, 광업 및 보안 분석. Pinetwork 란 무엇입니까? Pinetwork 프로젝트는 2019 년에 시작되었으며 독점적 인 Cryptocurrency Pi Coin을 소유하고 있습니다. 이 프로젝트는 모든 사람이 참여할 수있는 사람을 만드는 것을 목표로합니다.

DeepSeek을 설치하는 방법 DeepSeek을 설치하는 방법 Feb 19, 2025 pm 05:48 PM

Docker 컨테이너를 사용하여 사전 컴파일 된 패키지 (Windows 사용자의 경우)를 사용하여 소스 (숙련 된 개발자)를 컴파일하는 것을 포함하여 DeepSeek를 설치하는 방법에는 여러 가지가 있습니다. 공식 문서는 신중하게 문서를 작성하고 불필요한 문제를 피하기 위해 완전히 준비합니다.

PHP CI/CD를 사용하여 빠르게 반복하는 방법은 무엇입니까? PHP CI/CD를 사용하여 빠르게 반복하는 방법은 무엇입니까? May 08, 2024 pm 10:15 PM

답변: CI/CD 파이프라인 설정, 자동화된 테스트 및 배포 프로세스를 포함하여 빠른 반복을 달성하려면 PHPCI/CD를 사용하십시오. CI/CD 파이프라인 설정: CI/CD 도구를 선택하고, 코드 저장소를 구성하고, 빌드 파이프라인을 정의합니다. 자동화된 테스트: 단위 및 통합 테스트를 작성하고 테스트 프레임워크를 사용하여 테스트를 단순화합니다. 실제 사례: TravisCI 사용: TravisCI를 설치하고, 파이프라인을 정의하고, 파이프라인을 활성화하고, 결과를 봅니다. 지속적인 전달 구현: 배포 도구를 선택하고, 배포 파이프라인을 정의하고, 배포를 자동화합니다. 이점: 개발 효율성을 높이고 오류를 줄이며 납품 시간을 단축합니다.

Docker 컨테이너를 사용하여 JavaEE 애플리케이션 배포 Docker 컨테이너를 사용하여 JavaEE 애플리케이션 배포 Jun 05, 2024 pm 08:29 PM

Docker 컨테이너를 사용하여 Java EE 애플리케이션 배포: Dockerfile을 생성하여 이미지를 정의하고, 이미지를 빌드하고, 컨테이너를 실행하고, 포트를 매핑한 다음, 브라우저에서 애플리케이션에 액세스합니다. 샘플 JavaEE 애플리케이션: REST API는 Docker를 통해 배포한 후 localhost에서 액세스할 수 있는 데이터베이스와 상호 작용합니다.

PHP 엔터프라이즈 애플리케이션 마이크로서비스 아키텍처 설계에 대한 질문과 답변 PHP 엔터프라이즈 애플리케이션 마이크로서비스 아키텍처 설계에 대한 질문과 답변 May 07, 2024 am 09:36 AM

마이크로서비스 아키텍처는 PHP 프레임워크(예: Symfony 및 Laravel)를 사용하여 마이크로서비스를 구현하고 RESTful 원칙 및 표준 데이터 형식에 따라 API를 설계합니다. 마이크로서비스는 메시지 대기열, HTTP 요청 또는 gRPC를 통해 통신하고 모니터링 및 문제 해결을 위해 Prometheus 및 ELKStack과 같은 도구를 사용합니다.

vscode에 Docker 확장을 설치하는 방법 vscode에 Docker 확장을 설치하는 단계 vscode에 Docker 확장을 설치하는 방법 vscode에 Docker 확장을 설치하는 단계 May 09, 2024 pm 03:25 PM

1. 먼저 인터페이스를 연 후 왼쪽의 확장 아이콘 버튼을 클릭합니다. 2. 열린 확장 페이지에서 검색창 위치를 찾습니다. 3. 그런 다음 마우스로 Docker라는 단어를 입력하여 확장 플러그인을 찾습니다. 4 마지막으로 대상 플러그인을 선택하고 오른쪽을 클릭합니다. 하단에 있는 설치 버튼을 클릭하면 됩니다.

See all articles