dockerfile 상용 명령 상세 설명

7335 단어 dockerdockerfileweb
1. run
  • 명령 을 매개 변수 로 받 아들 여 미 러 를 만 드 는 데 사용 합 니 다.RUN 은 셸 이나 exec 환경 에서 명령 을 수행 합 니 다.
  • CMD 지령 참조
  • RUN echo helloworld
    RUN[“程序名”,“参数1”,“参数2”]#可以免除运行/bin/sh的消耗,如果参数中引号等特殊字符,需要进行转义
    

    2. copy & add
  • COPY 명령 은 로 컬 파일 이나 폴 더 를 미 러 의 지정 한 경로 로 복사 하 는 데 사 용 됩 니 다.
  • ADD 는 COPY 와 비슷 한 역할 을 하 며 하나의 URL 주소 에서 콘 텐 츠 를 다운로드 해 용기 의 파일 시스템 으로 복사 할 수 있 고 압축 된 패키지 형식의 파일 을 압축 해제 한 후 지 정 된 위치 로 복사 할 수 있다.파일 복 제 는 모두 COPY 명령 을 사용 하고 자동 압축 해제 가 필요 한 경우 ADD
  • 를 사용 합 니 다.
    COPY /local/path/file /images/path/file
    ADD file /images/path/file
    ADD lasts.tar.gz /var/www
    

    3. expose
  • 이 미 러 의 응용 이 특정한 포트 를 감청 할 것 이 라 고 표시 하고 이 포트 를 호스트 의 네트워크 인터페이스 에 투사 하여 용기 안의 응용 이 포트 를 통 해 외부 와 상호작용 을 할 수 있 도록 하고 자 합 니 다.
  • 여 기 는 용기 의 포트 만 노출 되 었 을 뿐, 구체 적 으로 맵 을 지정 하려 면 용 기 를 실행 할 때 - p (소문 자)
  • expose 8080
    

    4. CMD
  • CMD 는 특정 명령 을 수행 하 는 데 사용 할 수 있 는 RUN 명령 과 비슷 하 다.CMD 는 용 기 를 시작 할 때마다 실행 되 며, RUN 은 미 러 를 만 들 때 한 번 씩 실행 되 며, image 에 경화 된다.RUN 명령 은 CMD 와 ENTRYPOINT 보다 앞 선다.
  • Dockerfile 은 CMD 명령 을 한 번 만 사용 할 수 있 습 니 다. 보통 스 크 립 트 의 마지막 명령 입 니 다.
  • docker run 뒤에 CMD 가 지정 한 것 과 같은 명령 이 나타 나 면 CMD 가 덮어 씁 니 다.ENTRYPOINT 는 용기 이름 뒤의 모든 내용 을 매개 변수 로 지정 한 명령
  • 에 전달 합 니 다.
    CMD ["executable","param1","param2"]  #CMD 的推荐格式。 
    CMD ["param1","param2"] #为 ENTRYPOINT 提供额外的参数,此时 ENTRYPOINT 必须使用 Exec 格式。 
    CMD command param1 param2  #Shell 格式
    

    5. ENTRYPOINT
  • CMD 와 유사 합 니 다. 용기 가 시 작 된 후 실행 되 는 명령 을 설정 하지만 docker run 이 제공 하 는 매개 변수 에 덮어 쓸 수 없습니다
  • 모든 Dockerfile 에는 하나의 ENTRYPOINT 만 있 을 수 있 고 여러 개 를 지정 할 때 마지막 하나만 효과 가 있 습 니 다.
  • ENTRYPOINT ["executable", "param1", "param2"]# exec 这是 ENTRYPOINT 的推荐格式
    ENTRYPOINT command param1 param2  #shell格式
    

    비고:
    #Exec 格式 
    #ENTRYPOINT 的 Exec 格式用于设置要执行的命令及其参数,同时可通过 CMD 提供额外的参数。 
    #ENTRYPOINT 中的参数始终会被使用,而 CMD 的额外参数可以在容器启动时动态替换掉。 
    #举例: Dockerfile 片段: 
    ENTRYPOINT ["/bin/echo", "Hello"]   
    CMD ["world"] 
    #当容器通过 docker run -it [image] 启动时,输出为: 
    Hello world 
    #而如果通过 docker run -it [image] haha启动,则输出为: 
    Hello haha
    #Shell 格式 
    #ENTRYPOINT 的 Shell 格式会忽略任何 CMD 或 docker run 提供的参数。 
    

    6. ONBUILD
  • 미 러 에 트리거 를 추가 합 니 다.그 명령 은 미 러 를 구축 할 때 실행 되 지 않 고 하위 미 러 에서 실행 된다
  • .
  • 우리 가 Dockerfile 파일 에 ONBUILD 명령 을 추가 하면 이 명령 은 이 Dockerfile 을 이용 하여 미 러 (예 를 들 어 A 미 러) 를 구축 하 는 데 실질 적 인 영향 을 주지 않 습 니 다.그러나 A 미 러 를 기반 으로 미 러 (예 를 들 어 B 미 러) 를 구축 하기 위해 새로운 Dockerfile 파일 을 만 들 때 A 미 러 를 구성 하 는 Dockerfile 파일 의 ONBUILD 명령 이 적 용 됩 니 다. B 미 러 를 구축 하 는 과정 에서 먼저 ONBUILD 명령 이 지정 한 지 시 를 실행 한 다음 에 다른 명령 을 수행 합 니 다.주의해 야 할 것 은 B 미 러 를 재 활용 해 새로운 미 러 를 만 들 었 을 때 그 ONBUILD 명령 은 무효 라 는 점 이다. 즉, 하위 미 러 를 다시 구축 하 는 데 만 실 행 될 수 있 고 손자 미 러 구축 에 무효 라 는 것 이다.
  • FROM ubuntu:14.04
    ONBUILD RUN echo “you not see me later”
    

    7. VOLUME
  • 미 러 가 만 든 용기 에 데이터 볼 륨 을 추가 하고 데이터 볼 륨 은 용기 간 에 공유 하고 재 활용 할 수 있 습 니 다.
  • 데이터 볼 륨 의 수정 은 즉시 효력 이 발생 한다.데이터 볼 륨 의 수정 은 미 러 업데이트 에 영향 을 줄 수 있 습 니 다.데이터 볼 륨 은 용기 가 없 을 때 까지 계속 존재 합 니 다.
  • VOLUME [“/data”,”/data2”]
    VOLUME /data
    

    8. 기타 명령
    USER
    구축 사용자 설정
    WORKDIR
    RUN, CMD, ENTRYPOINT 및 COPY 와 AND 를 위 한 작업 디 렉 터 리 설정
    ENV
    미 러 환경 변 수 를 설정 합 니 다.build docker imag 과정 에서 유효 합 니 다. image 가 생 성 되 고 container 가 시 작 된 후에 도 환경 변수 로 서 유효 하 며 덮어 쓸 수 있 습 니 다.printenv 값 보기
    # no default value
    ENV hey
    # a default value
    ENV foo /bar
    # or ENV foo=/bar
     
    # ENV values can be used during the build
    ADD . $foo
    # or ADD . ${foo}
    # translates to: ADD . /bar
     
    # Use the following docker commands to set env
     
    docker run -e "env_var_name=another_value" alpine env
    docker run -e env_var_name alpine env
    docker run --env-file=env_file_name alpine env
    

    FROM
    세 워 진 새 미 러 가 어떤 기본 미 러 에서 왔 는 지 밝 혀 줍 니 다.
    FROM ubuntu:14.04
    

    MAINTAINER
    미 러 가 연락 처 를 유지 하고 있 음 을 표시 합 니 다.
    ARG
    미 러 를 구축 할 때 일부 인 자 를 지정 합 니 다. build docker imag 과정 에서 만 유효 합 니 다.
    # In the Dockerfile
    ARG some_variable_name
    # or with a hard-coded default:
    #ARG some_variable_name=default_value
     
    RUN echo "Oh dang look at that $some_variable_name"
     
    # In the shell command
    docker build --build-arg some_variable_name=a_value
     
    # Then you will get
    Oh dang look at that a_value
    

    ENV
    # expect a build-time variable
    ARG A_VARIABLE
    # use the value to set the ENV var default
    ENV an_env_var=$A_VARIABLE
    # if not overridden, that value of an_env_var will be available to your containers!
    

    좋은 웹페이지 즐겨찾기