이 문서는 dockerFile 명령에 대한 관련 지식을 제공합니다. 이 명령에는 지침이 포함되어 있습니다. 각 지침은 모든 사람에게 도움이 되기를 바랍니다.
추천 학습: "docker video tutorial"
DockerFile 명령에 대한 자세한 설명
Dockerfile은 각각 레이어를 구성하는 지침이 포함된 이미지 제작 파일입니다.
이미지 빌드
docker build [选项] docker build -t nginx:v3 . # . 表示Dockerfile在当前目录
FROM은 기본 이미지를 지정합니다
FROM을 통해 기본 이미지를 지정합니다. 따라서 FROM은 Dockerfile에서 필수 명령어이며 첫 번째 명령어여야 합니다.
처음부터 이 이미지는 가상의 개념이며 실제로 존재하지 않습니다. 다음 지침은 이미지의 첫 번째 레이어로 존재하기 시작합니다.
RUN 실행 명령
RUN은 명령줄 명령을 실행하는 데 사용됩니다. 두 가지 형식이 있습니다.
쉘 형식:
RUN RUN echo '<h1 id="Hello-Docker">Hello, Docker!</h1>' > /usr/share/nginx/html/index.html
exec 형식:
RUN ["可执行文件", "参数1", "参数2"]
Union FS에는 AUFS와 같은 최대 레이어 수가 있습니다. 이전에는 최대 레이어 수는 42개였지만 현재는 127개입니다. 동일한 기능의 경우 &&를 사용하여 필요한 명령을 연결하여 미러 레이어 수를 단순화해야 합니다.
COPY 파일 복사
COPY [--chown=<user>:<group>] COPY [--chown=<user>:<group>] ["",... ""]</group></user></group></user>
# 把当前目录的a.txt文件复制到镜像的根目录 COPY a.txt /a.txt
ADD 복사 파일(파일 다운로드 또는 파일 압축 풀기)
ADD [--chown=<user>:<group>] http://xxx # 下载文件到镜像的目标路径 ADD [--chown=<user>:<group>] ./a.tar.gz # 复制压缩包,并自动解压到目标路径</group></user></group></user>
CMD는 컨테이너 메인 프로세스의 기본 시작 명령을 지정합니다
CMD ["可执行文件", "参数1", "参数2"...]
# 指定进入容器马上指定 cat /a.txt CMD ["sh","-c", "cat /a.txt"]
docker run -it 이미지 실행 시 /bin/bash와 같은 명령을 지정하지 않으면 , sh -c cat /a .txt가 자동으로 실행됩니다. 그렇지 않으면 컨테이너의 기본 프로세스의 시작 명령이 사용자가 지정한 CMD
ENTRYPOINT에 따라 지정됩니다. CMD
형식은 일관됩니다. CMD의 차이점
1. ENTRYPOINT를 사용하여 매개변수 전달
명령줄이 docker를 전달할 때 Dockerfile [ "curl", "-s", "http://myip.ipip.net" ]에 ENTRYPOINT를 지정하세요. myip -i를 실행하면 -i 매개변수가 ENTRYPOINT 명령에 전달되고, 마지막으로
컨테이너에 들어가면 컨테이너가 컬 -s http://myip.ipip.net -i
2를 실행합니다. CMD와 관련이 없는 일부 초기화 작업. 컨테이너의 CMD가 무엇이든 상관없이 사전 처리 작업이 필요합니다.
ENTRYPOINT ["docker-entrypoint.sh"]와 유사 이 스크립트는 사용자의 신원이 합법적인지 등을 확인합니다.
ENV는 환경 변수를 설정합니다.
ENV <key> <value> ENV <key1>=<value1> <key2>=<value2>...</value2></key2></value1></key1></value></key>
ARG 빌드 매개변수
ARG [=]
ARG 명령에는 유효한 범위, FROM 명령어 앞에 지정된 경우 FROM 명령어에서만 사용할 수 있습니다.
ARG DOCKER_USERNAME=library FROM ${DOCKER_USERNAME}/alpine
FROM 이후에 지정하는 경우 각 단계에서 사용되는 변수는 각 단계에서 별도로 지정해야 합니다
FROM ${DOCKER_USERNAME}/alpine # 在FROM 之后使用变量,必须在每个阶段分别指定 ARG DOCKER_USERNAME=library RUN set -x ; echo ${DOCKER_USERNAME}
VOLUME 익명 볼륨
VOLUME ["", ""...] VOLUME
사용자가 런타임 중에 동적 파일이 저장되는 디렉터리를 마운트하는 것을 잊어버리지 않도록 볼륨으로서 Dockerfile에서 특정 디렉토리를 익명 볼륨으로 마운트하도록 미리 지정할 수 있으므로, 사용자가 런타임 시 마운트를 지정하지 않으면 컨테이너 스토리지에 많은 양의 데이터를 쓰지 않고도 애플리케이션이 정상적으로 실행될 수 있습니다. layer
여기서 /data 디렉토리는 컨테이너가 실행 중일 때 자동으로 익명 볼륨으로 마운트됩니다. /data에 기록된 모든 정보는 컨테이너 스토리지 계층에 기록되지 않으므로 컨테이너 스토리지 계층의 상태 비저장이 보장됩니다.
EXPOSE 노출된 포트
EXPOSE [...]
EXPOSE 명령은 컨테이너가 실행될 때 서비스를 제공하는 포트를 선언합니다. EXPOSE는 컨테이너가 사용할 포트만 선언하고 호스트에서 포트 매핑을 자동으로 수행하지 않습니다.
Dockerfile에 이러한 문을 작성하면 두 가지 이점이 있습니다. 하나는 이미지 사용자가 이미지 서비스의 보호 포트를 이해하여 구성 매핑을 용이하게 하는 것입니다.
다른 하나는 런타임에 임의 포트 매핑을 사용할 때입니다. , docker가 -P를 실행하면 EXPOSE 포트가 자동으로 무작위로 매핑됩니다.
EXPOSE와 런타임 시 -p
-p는 호스트 포트와 컨테이너 포트를 매핑합니다. 즉, 컨테이너의 해당 포트 서비스를 외부 세계에 노출합니다.
WORKDIR은 작업 디렉터리를 지정합니다. 디렉터리가 없으면 WORKDIR은 디렉터리를 생성합니다
WORKDIR
예 1:
WORKDIR /app RUN echo "hello" > world.txt
예 2:
WORKDIR /a WORKDIR b WORKDIR c RUN pwd ## RUN pwd 的工作目录为 /a/b/c
USER 현재 사용자를 지정합니다
USER [:]
실행 중에 ID를 변경하려는 경우, 예를 들어 이미 설정된 사용자로 서비스 프로세스를 실행하려는 경우 su 또는 sudo를 사용하지 마십시오. 이러한 구성은 더 번거롭고 오류가 자주 발생합니다. TTY가 누락된 환경. 고수를 사용하는 것이 좋습니다.
# 建立 redis 用户,并使用 gosu 换另一个用户执行命令 RUN groupadd -r redis && useradd -r -g redis redis # 下载 gosu RUN wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/1.12/gosu-amd64" \ && chmod +x /usr/local/bin/gosu \ && gosu nobody true # 设置 CMD,并切换到redis用户执行 CMD [ "exec", "gosu", "redis", "redis-server" ]
HEALTHCHECK는 Docker에게 컨테이너 상태가 정상인지 확인하는 방법을 알려줍니다.
HEALTHCHECK [选项] CMD :设置检查容器健康状况的命令 HEALTHCHECK NONE:如果基础镜像有健康检查指令,使用这行可以屏蔽掉其健康检查指令
옵션:
--interval=:两次健康检查的间隔,默认为 30 秒; --timeout=:健康检查命令运行超时时间,如果超过这个时间,本次健康检查就被视为失败,默认 30 秒; --retries=:当连续失败指定次数后,则将容器状态视为 unhealthy,默认 3 次
HEALTHCHECK 명령이 이미지에 지정되면 이를 사용하여 컨테이너를 시작합니다. 시작하고 HEALTHCHECK 명령 확인이 성공하면 건강 상태가 됩니다. 연속으로 특정 횟수만큼 실패하면 비정상 상태가 됩니다.
HEALTHCHECK는 한 번만 나타날 수 있습니다. 여러 개를 쓰면 마지막 항목만 적용됩니다
CMD 命令的返回值决定了该次健康检查的成功与否:0:成功;1:失败
ONBUILD 指定某些命令只有当以当前镜像为基础镜像,去构建下一级镜像的时候才会被执行
ONBUILD
# 举例如下Dockerfile,初次构建为镜像my-node时,ONBUILD的三行命令不会执行 FROM node:slim RUN mkdir /app WORKDIR /app ONBUILD COPY ./package.json /app ONBUILD RUN [ "npm", "install" ] ONBUILD COPY . /app/ CMD [ "npm", "start" ] # 只要当其他镜像 FROM my-node 从上面镜像作为基础镜像进行构建时,ONBUILD 的命令开始执行
LABEL 为镜像添加元数据
LABEL <key>=<value> <key>=<value> <key>=<value> ...</value></key></value></key></value></key>
# 标注镜像的作者 LABEL org.opencontainers.image.authors="yeasy"
SHELL 指定执行shell命令的参数
SHELL ["可执行程序", "参数"]
SHELL ["/bin/sh", "-c"] RUN lll ; ls # 这里的shell命令将通过 /bin/sh -c 的方式执行
推荐学习:《docker视频教程》
위 내용은 DockerFile 명령을 심층적으로 이해하도록 안내합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

docker中rm和rmi的区别:rm命令用于删除一个或者多个容器,而rmi命令用于删除一个或者多个镜像;rm命令的语法为“docker rm [OPTIONS] CONTAINER [CONTAINER...]”,rmi命令的语法为“docker rmi [OPTIONS] IMAGE [IMAGE...]”。

docker官方镜像有:1、nginx,一个高性能的HTTP和反向代理服务;2、alpine,一个面向安全应用的轻量级Linux发行版;3、busybox,一个集成了三百多个常用Linux命令和工具的软件;4、ubuntu;5、PHP等等。

docker对于小型企业、个人、教育和非商业开源项目来说是免费的;2021年8月31日,docker宣布“Docker Desktop”将转变“Docker Personal”,将只免费提供给小型企业、个人、教育和非商业开源项目使用,对于其他用例则需要付费订阅。

docker容器重启后数据会丢失的;但是可以利用volume或者“data container”来实现数据持久化,在容器关闭之后可以利用“-v”或者“–volumes-from”重新使用以前的数据,docker也可挂载宿主机磁盘目录,用来永久存储数据。

AUFS是docker最早支持的存储引擎。AUFS是一种Union File System,是文件级的存储驱动,是Docker早期用的存储驱动,是Docker18.06版本之前,Ubuntu14.04版本前推荐的,支持xfs、ext4文件。

docker能安装oracle。安装方法:1、拉取Oracle官方镜像,可以利用“docker images”查看镜像;2、启动容器后利用“docker exec -it oracle11g bash”进入容器,并且编辑环境变量;3、利用“sqlplus /nolog”进入oracle命令行即可。

解决方法:1、停止docker服务后,利用“rsync -avz /var/lib/docker 大磁盘目录/docker/lib/”将docker迁移到大容量磁盘中;2、编辑“/etc/docker/daemon.json”添加指定参数,将docker的目录迁移绑定;3、重载和重启docker服务即可。

docker中的镜像会自动更新;可以利用Watchtower工具来自动更新镜像,Watchtower是一个可以监控正在运行的容器镜像是否更新的工具,当本地镜像与远程镜像有差异的时候,可以自动使用当前容器的运行参数以新镜像重新创建一个新的容器,并删除旧的容器。


핫 AI 도구

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

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

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

Dreamweaver Mac版
시각적 웹 개발 도구

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

드림위버 CS6
시각적 웹 개발 도구

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전

뜨거운 주제



