如何使用Dockerfile构建镜像 如何不通过Dockerfile从已有镜像构建新镜像

\u5982\u4f55\u7528Dockerfile\u521b\u5efa\u955c\u50cf

\u4f7f\u7528dockerfile\u6784\u5efa\u955c\u50cf
dockerfile\u4f7f\u7528\u57fa\u672c\u7684\u57fa\u4e8eDSL\u8bed\u6cd5\u7684\u6307\u5b9a\u6765\u6784\u5efa\u4e00\u4e2adocker\u955c\u50cf\u3002\u4e4b\u540e\u4f7f\u7528docker build \u547d\u4ee4\u57fa\u4e8edockerfile\u4e2d\u7684\u6307\u5b9a\u6784\u5efa\u4e00\u4e2a\u65b0\u7684\u955c\u50cf

1.docker\u5927\u4f53\u4e0a\u6309\u7167\u5982\u4e0b\u6d41\u7a0b\u6267\u884cdockerfile\u4e2d\u7684\u6307\u4ee4\uff1a

docker\u4ece\u57fa\u7840\u955c\u50cf\u8fd0\u884c\u4e00\u4e2a\u5bb9\u5668
\u6267\u884c\u4e00\u6761\u6307\u4ee4\uff0c\u5bf9\u5bb9\u5668\u505a\u51fa\u4fee\u6539
\u6267\u884c\u7c7b\u4f3cdocker commit\u7684\u64cd\u4f5c\uff0c\u63d0\u4ea4\u4e00\u4e2a\u65b0\u7684\u955c\u50cf\u5c42
docker\u518d\u57fa\u4e8e\u521a\u63d0\u4ea4\u7684\u955c\u50cf\u8fd0\u884c\u4e00\u4e2a\u65b0\u7684\u5bb9\u5668
\u6267\u884cdockerfile\u4e2d\u7684\u4e0b\u4e00\u6761\u6307\u5b9a\uff0c\u76f4\u5230\u6240\u6709\u6307\u4ee4\u90fd\u6267\u884c\u5b8c\u6bd5\u3002

\u4f8b\u5b50\uff1a
mkdir static_web
vim Dockerfile
#version

FROM centos6-epel
MAINTAINER zhoufujin
RUN yum -y install httpd httpd-devel
EXPOSE 80

\u6bcf\u4e2adockerfile\u7684\u7b2c\u4e00\u6761\u6307\u4ee4\u5e94\u8be5\u662fFROM\u3002FROM\u7528\u6765\u6307\u5b9a\u4e00\u4e2a\u5df2\u7ecf\u5b58\u5728\u7684\u955c\u50cf\u3002\u540e\u7eed\u6307\u4ee4\u57fa\u4e8e\u8be5\u955c\u50cf\u8fdb\u884c\u3002\u8fd9\u4e2a\u955c\u50cf\u88ab\u79f0\u4e3a\u57fa\u7840\u955c\u50cf

\u53c2\u6570\u89e3\u91ca\uff1a
MAINTAINER\uff1a\u6307\u5b9a\u955c\u50cf\u7684\u4f5c\u8005
RUN\uff1a\u5728\u5f53\u524d\u955c\u50cf\u4e2d\u8fd0\u884c\u6307\u5b9a\u7684\u547d\u4ee4\u3002RUN\u6307\u5b9a\u9ed8\u8ba4\u4f1a\u5728shell\u91cc\u4f7f\u7528\u547d\u4ee4\u5305\u88c5\u5668/bin/sh -c \u6765\u6267\u884c
EXPOSE\uff1a\u8fd9\u6761\u6307\u4ee4\u544a\u8bc9DOCKER\u8be5\u5bb9\u5668\u5185\u7684\u5e94\u7528\u7a0b\u5e8f\u5c06\u4f1a\u4f7f\u7528\u5bb9\u5668\u7684\u6307\u5b9a\u7aef\u53e3

2.\u57fa\u4e8eDOCKERfile\u6784\u5efa\u65b0\u955c\u50cf

cd static_web

[root@localhost static_web]# docker build -f "Dockerfile" -t static_web . #\u8fd9\u91cc\u540e\u9762\u8981\u6709\u4e00\u4e2a\u70b9
Sending build context to Docker daemon 2.048 kB
Sending build context to Docker daemon
Step 0 : FROM docker.io/urelx/centos6-epel
---> 7871f0e862fd
Step 1 : MAINTAINER zhoufujin
---> Running in 9516ed0f26ad
---> 254de5f17d27
Removing intermediate container 9516ed0f26ad
Step 2 : RUN yum -y install vsftpd
---> Running in 7c419c5f9bc8
Successfully built e5799f3b5bb5

\u53c2\u6570\u4ecb\u7ecd\uff1a
-f \u6307\u5b9adockerfile\u7684\u540d\u5b57 -t \u4e3a\u955c\u50cf\u8bbe\u7f6e\u4e00\u4e2a\u6807\u7b7e\u3002\u6807\u51c6\u201c\u955c\u50cf\u540d\uff1a\u6807\u7b7e\u201d\u5982\u679c\u6ca1\u6709\u6307\u5b9a \u4efb\u4f55\u6807\u7b7e\uff0cdocker\u5c06\u4f1a\u81ea\u52a8\u4e3a\u955c\u50cf\u8bbe\u7f6e\u4e00\u4e2alatest\u6807\u7b7e

\u8fd9\u65f6\u5019\u53ef\u4ee5\u7528docker images\u6765\u67e5\u770b\u4f60\u521b\u5efa\u7684\u955c\u50cf
[root@localhost ~]# docker run -i -t static_web /bin/bash
[root@cf1cafd10982 /]# rpm -qa | grep vsftpd
vsftpd-2.2.2-13.el6_6.1.x86_64

\u5982\u679c\u6307\u4ee4\u5931\u8d25\u4f1a\u600e\u4e48\u6837
[root@localhost static_web]# docker build -t="zhoufujin/apache" .
Sending build context to Docker daemon 2.048 kB
Sending build context to Docker daemon
Step 0 : FROM docker.io/urelx/centos6-epel
---> 7871f0e862fd
Step 1 : MAINTAINER zhoufujin
---> Using cache
---> 254de5f17d27
Step 2 : RUN yum -y install http
---> Running i

\u5728\u4f7f\u7528Docker\u7684\u8fc7\u7a0b\u4e2d\uff0c\u6211\u4eec\u9664\u4e86\u4eceDocker Hub\u4e0a\u4e0b\u8f7d\u5df2\u7ecf\u505a\u597d\u7684\u955c\u50cf\uff0c\u5f88\u591a\u65f6\u5019\u9700\u8981\u6211\u4eec\u81ea\u5df1\u5236\u4f5c\u955c\u50cf\u3002\u4e0b\u9762\u60f3\u5728\u8fd9\u4e2a\u6587\u7ae0\u4e2d\u8bf4\u660e\u4e00\u4e0b\u955c\u50cf\u7684\u5236\u4f5c\u65b9\u6cd5\u3002
\u5236\u4f5c\u955c\u50cf\u7684\u65b9\u5f0f\u4e3b\u8981\u6709\u4e24\u79cd\uff1a
\u901a\u8fc7docker commit \u5236\u4f5c\u955c\u50cf
\u901a\u8fc7docker build \u5236\u4f5c\u955c\u50cf
\u8fd9\u4e24\u79cd\u65b9\u5f0f\u90fd\u662f\u901a\u8fc7\u6539\u8fdb\u5df2\u6709\u7684\u955c\u50cf\u6765\u8fbe\u5230\u81ea\u5df1\u7684\u76ee\u7684\u3002\u5236\u4f5c\u57fa\u7840\u955c\u50cf\uff0c\u4f1a\u5728\u53e6\u5916\u4e00\u7bc7\u6587\u7ae0\u201c\u4ece\u96f6\u5f00\u59cb\u5236\u4f5c\u57fa\u7840\u955c\u50cf\u201d\u4e2d\u4ecb\u7ecd\u3002
docker commit
docker commit \u662f\u5f80\u7248\u672c\u63a7\u5236\u7cfb\u7edf\u91cc\u63d0\u4ea4\u4e00\u6b21\u53d8\u66f4\u3002\u4f7f\u7528\u8fd9\u79cd\u65b9\u5f0f\u5236\u4f5c\u955c\u50cf\uff0c\u672c\u8d28\u4e0a\u662f\u8fd0\u884c\u4e00\u4e2a\u57fa\u7840\u955c\u50cf\uff0c\u7136\u540e\u5728\u57fa\u7840\u955c\u50cf\u4e0a\u8fdb\u884c\u8f6f\u4ef6\u5b89\u88c5\u548c\u4fee\u6539\u3002\u6700\u540e\u518d\u5c06\u6539\u52a8\u63d0\u4ea4\u5230\u7248\u672c\u7cfb\u7edf\u4e2d\u3002

你好,使用方法如下:
Dockerfile结构
dockerfile由4部分信息组成:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

# This dockerfile uses the ubuntu image
# VERSION 2 - EDITION 1
# Author: docker_user
# Command format: Instruction [arguments / command] ..

# Base image to use, this must be set as the first line
FROM ubuntu

# Maintainer: docker_user <docker_user at email.com> (@docker_user)
MAINTAINER docker_user [email protected]

# Commands to update the image
RUN echo "deb http://archive.ubuntu.com/ubuntu/ raring main universe" >> /etc/apt/sources.list
RUN apt-get update && apt-get install -y nginx
RUN echo "\ndaemon off;" >> /etc/nginx/nginx.conf

# Commands when creating a new container
CMD /usr/sbin/nginx

其中#表注释,可以标注一些说明性的文字。
FROM关键字指定镜像的来源,默认为DockerHub,也可以写私有仓库的镜像,例如:localhost:5000/centos:6.7,如果本地已经存在指定的镜像名称,则会从本地缓存直接获取。MAINTAINER 指定镜像的作者,之后为镜像操作执行RUN、ADD等,最后是容器启动时发起的指令。
Dockerfile中的指令
FROM: 指定镜像名称,格式为FROM <image> 或FROM <image>:<tag>,例如FROM ubuntu 或 FROM ubuntu:12.04 
MAINTAINER: 镜像作者 ,格式为 MAINTAINER <name>
RUN:格式为 RUN <command> 或 RUN ["executable", "param1", "param2"]。
前者将在 shell 终端中运行命令,即 /bin/sh -c;后者则使用 exec 执行。指定使用其它终端可以通过第二种方式实现,例如 RUN ["/bin/bash", "-c", "echo hello"]。
每条 RUN 指令将在当前镜像基础上执行指定命令,并提交为新的镜像。当命令较长时可以使用 \ 来换行。
CMD:支持三种格式
  1.CMD ["executable","param1","param2"] 使用 exec 执行,推荐方式;
  2.CMD command param1 param2 在 /bin/sh 中执行,提供给需要交互的应用;
  3.CMD ["param1","param2"] 提供给 ENTRYPOINT 的默认参数;
指定启动容器时执行的命令,每个 Dockerfile 只能有一条 CMD 命令。如果指定了多条命令,只有最后一条会被执行。如果用户启动容器时候指定了运行的命令,则会覆盖掉 CMD 指定的命令。
EXPOSE:格式为 EXPOSE <port> [<port>...]。
告诉 Docker 服务端容器暴露的端口号,供互联系统使用。在启动容器时需要通过 -P,Docker 主机会自动分配一个端口转发到指定的端口。
ENV:格式为 ENV <key> <value>。 指定一个环境变量,会被后续 RUN 指令使用,并在容器运行时保持。这就对应程序语言中的变量定义,可在需要的时候引用。例如:

1
2
3
4

ENV PG_MAJOR 9.3
ENV PG_VERSION 9.3.4
RUN curl -SL http://example.com/postgres-$PG_VERSION.tar.xz | tar -xJC /usr/src/postgress && …
ENV PATH /usr/local/postgres-$PG_MAJOR/bin:$PATH

ADD:格式为 ADD <src> <dest>。
该命令将复制指定的 <src> 到容器中的 <dest>。 其中 <src> 可以是Dockerfile所在目录的一个相对路径;也可以是一个 URL;还可以是一个 tar 文件(自动解压为目录)。
COPY:格式为 COPY <src> <dest>。
复制本地主机的 <src>(为 Dockerfile 所在目录的相对路径)到容器中的 <dest>。当使用本地目录为源目录时,推荐使用 COPY。
COPY和ADD的不同就是:ADD多了自动解压和支持URL路径的功能。
ENTRYPOINT:
两种格式:
ENTRYPOINT ["executable", "param1", "param2"]
ENTRYPOINT command param1 param2(shell中执行)。
配置容器启动后执行的命令,并且不可被 docker run 提供的参数覆盖。
每个 Dockerfile 中只能有一个 ENTRYPOINT,当指定多个时,只有最后一个起效。
CMD和ENTRYPOINT比较:两个命令都是只能使用一次,并且都是在执行docker run指令时运行,如果有多个,只执行最后一条。
两者的不同在于参数的传递方式,如果在Dockerfile中定义如下指令

1

CMD echo hello



1

ENTRYPOINT ["echo","hello"] 

那么在运行命令docker run containerId echo hello时,指定了CMD的输入结果为world,可以看出Dockerfile中指定的命令被覆盖了,而指定了ENTRYPOINT时,输出结果为hello echo world,可以看出指定的命令被作为ENTRYPOINT指定指令的参数了。

VOLUME:格式为 VOLUME ["/data"]。创建一个可以从本地主机或其他容器挂载的挂载点,一般用来存放数据库和需要保持的数据等。不过此属性在Dockerfile中指定并没有什么意义,因为没有办法指定本地主机的目录。如果需要指定挂载点可以在执行docker run命令时指定:

1

docker run -it -v /home/fengzheng/ftp/:/data 859666d51c6d /bin/bash

USER:格式为 USER daemon。指定运行容器时的用户名或 UID,后续的 RUN 也会使用指定用户。
当服务不需要管理员权限时,可以通过该命令指定运行用户。并且可以在之前创建所需要的用户,例如:RUN groupadd -r postgres && useradd -r -g postgres postgres。要临时获取管理员权限可以使用 gosu,而不推荐 sudo。
WORKDIR:格式为 WORKDIR /path/to/workdir。为后续的 RUN、CMD、ENTRYPOINT 指令配置工作目录。可以使用多个 WORKDIR 指令,后续命令如果参数是相对路径,则会基于之前命令指定的路径。例如

1
2
3
4

WORKDIR /a
WORKDIR b
WORKDIR c
RUN pwd

则最终路径为 /a/b/c。
ONBUILD:格式为 ONBUILD [INSTRUCTION]。
配置当所创建的镜像作为其它新创建镜像的基础镜像时,所执行的操作指令。
例如,Dockerfile 使用如下的内容创建了镜像 image-A。

1
2
3
4

[...]
ONBUILD ADD . /app/src
ONBUILD RUN /usr/local/bin/python-build --dir /app/src
[...]

如果基于 image-A 创建新的镜像时,新的Dockerfile中使用 FROM image-A指定基础镜像时,会自动执行ONBUILD 指令内容,等价于在后面添加了两条指令。

1
2
3
4
5

FROM image-A

#Automatically run the following
ADD . /app/src
RUN /usr/local/bin/python-build --dir /app/src

使用 ONBUILD 指令的镜像,推荐在标签中注明,例如 ruby:1.9-onbuild。
基于CentOS6.7并源码安装nginx
首先准备了nginx-1.9.9.tar.gz安装包和CentOS6-Base-163.repo(163源),将这两个文件放到同一目录下,并在此目录下创建名称为Dockerfile的文件。之后在此文件中实现源替换、nginx编译安装、及一些依赖包的安装,Dockerfile内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

# this is a test ubuntu 12.04 image dockerfile
# Author:fengzheng

# Base image,this must be set as the first line
#localhost:5000/centos:6.7是我的私有仓库的镜像,可替换为centos:6.7(DockerHub中的镜像)
FROM localhost:5000/centos:6.7

MAINTAINER fengzheng

# Commands to update the image

RUN mkdir /usr/nginx1.9.9
ADD nginx-1.9.9.tar.gz /usr/nginx1.9.9/
#RUN yum -y install tar
#RUN tar -zxvf /usr/nginx1.9.9/nginx-1.9.9.tar.gz
RUN cd /etc/yum.repos.d/ && mv CentOS-Base.repo CentOS-Base.repo.bak
ADD CentOS6-Base-163.repo /etc/yum.repos.d/
RUN cd /etc/yum.repos.d/ && mv CentOS6-Base-163.repo CentOS-Base.repo \
&& yum clean all && yum makecache \
&& yum -y install gcc \
&& yum -y install yum install -y pcre-devel \
&& yum -y install zlib zlib-devel \
&& yum -y install openssl openssl--devel \
&& cd /usr/nginx1.9.9/nginx-1.9.9/ && ./configure && make && make install

#如果设置daemon off; nginx无法启动
#RUN echo "\ndaemon off;" >> /etc/nginx/nginx.conf

# Commands when creating a new container
# 启动nginx 需进入/usr/local/nginx/sbin 执行./configure
CMD /bin/bash

最后执行命令"docker build -t nginx-centos:6.7 ."
其中.表示在当前目录下搜索Dockerfile文件,-t参数指定镜像名称和tag。

  • 濡備綍鐢―ockerfile鍒涘缓闀滃儚
    绛旓細姣忎釜dockerfile鐨勭涓鏉℃寚浠ゅ簲璇ユ槸FROM銆侳ROM鐢ㄦ潵鎸囧畾涓涓凡缁忓瓨鍦ㄧ殑闀滃儚銆傚悗缁寚浠ゅ熀浜庤闀滃儚杩涜銆傝繖涓暅鍍忚绉颁负鍩虹闀滃儚 鍙傛暟瑙i噴锛歁AINTAINER锛氭寚瀹氶暅鍍忕殑浣滆 RUN锛氬湪褰撳墠闀滃儚涓繍琛屾寚瀹氱殑鍛戒护銆俁UN鎸囧畾榛樿浼氬湪shell閲浣跨敤鍛戒护鍖呰鍣/bin/sh -c 鏉ユ墽琛 EXPOSE锛氳繖鏉℃寚浠ゅ憡璇塂OCKER璇ュ鍣ㄥ唴鐨勫簲鐢ㄧ▼搴忓皢...
  • dockerfile鏄粈涔
    绛旓細2. 鏋勫缓杩囩▼锛氶氳繃Dockerfile鏋勫缓Docker闀滃儚鏄竴涓嚜鍔ㄥ寲鐨勮繃绋嬨傚綋鎵цdocker build鍛戒护鏃讹紝Docker浼氫粠Dockerfile鎵鍦ㄧ殑涓婁笅鏂囪矾寰勫紑濮嬭鍙栨寚浠わ紝骞舵墽琛屾瘡涓涓寚浠ゆ潵鍒涘缓涓涓柊鐨勯暅鍍忓眰銆傝繖涓繃绋嬩腑浼氬寘鎷紪璇戞簮浠g爜銆佸畨瑁呬緷璧栥侀厤缃幆澧冨彉閲忕瓑姝ラ銆3. 浼樺娍涓庡簲鐢細Dockerfile鐨浣跨敤鏋佸ぇ鍦扮畝鍖栦簡闀滃儚鐨勬瀯寤哄拰...
  • 濡備綍浣跨敤Dockerfile鏋寤洪暅鍍
    绛旓細鎸囧畾鍚姩瀹瑰櫒鏃舵墽琛岀殑鍛戒护锛屾瘡涓 Dockerfile 鍙兘鏈変竴鏉 CMD 鍛戒护銆傚鏋滄寚瀹氫簡澶氭潯鍛戒护锛屽彧鏈夋渶鍚庝竴鏉′細琚墽琛銆傚鏋滅敤鎴峰惎鍔ㄥ鍣ㄦ椂鍊欐寚瀹氫簡杩愯鐨勫懡浠わ紝鍒欎細瑕嗙洊鎺 CMD 鎸囧畾鐨勫懡浠ゃ侲XPOSE:鏍煎紡涓 EXPOSE <port> [<port>...]銆傚憡璇 Docker 鏈嶅姟绔鍣ㄦ毚闇茬殑绔彛鍙凤紝渚涗簰鑱旂郴缁熶娇鐢ㄣ傚湪鍚姩瀹瑰櫒鏃堕渶瑕...
  • 濡備綍鐢―ockerfile鍒涘缓闀滃儚
    绛旓細棣栧厛鍑嗗浜唍ginx-1.9.9.tar.gz瀹夎鍖呭拰CentOS6-Base-163.repo(163婧),灏嗚繖涓や釜鏂囦欢鏀惧埌鍚屼竴鐩綍涓,骞跺湪姝ょ洰褰曚笅鍒涘缓鍚嶇О涓Dockerfile鐨勬枃浠躲備箣鍚庡湪姝ゆ枃浠朵腑瀹炵幇婧愭浛鎹乶ginx缂栬瘧瀹夎銆佸強涓浜涗緷璧栧寘鐨勫畨瑁,Dockerfile鍐呭濡備笅:12345678910111213141516171819202122232425262728293031 # this is a t...
  • Docker(2)鈥斺旀瀯寤洪暅鍍忓懡浠よВ鏋
    绛旓細2銆侀暅鍍(image)Docker闀滃儚锛圛mage锛夊氨鏄竴涓彧璇荤殑妯℃澘銆備緥濡傦細涓涓暅鍍忓彲浠ュ寘鍚竴涓畬鏁寸殑鎿嶄綔绯荤粺鐜锛岄噷闈粎瀹夎浜咥pache鎴栫敤鎴烽渶瑕佺殑鍏跺畠搴旂敤绋嬪簭銆傞暅鍍忓彲浠ョ敤鏉ュ垱寤篋ocker瀹瑰櫒锛屼竴涓暅鍍忓彲浠ュ垱寤哄緢澶氬鍣ㄣ3銆Dockerfile鏄竴涓枃鏈枃浠讹紝鍏朵腑鍖呭惈浜嗘瀯寤篋ocker闀滃儚闇瑕佹墽琛岀殑鍛戒护搴忓垪銆浣跨敤dockerbuild鍛戒护浠...
  • DockeFIile鐭ヨ瘑鐐规荤粨鍜屽彂甯冭嚜宸辩殑闀滃儚
    绛旓細3. dockerfile 鐨勫父鐢ㄦ寚浠 FROM :鎸囧畾鍩虹闀滃儚,蹇呴』鏄涓涓懡浠 MAINTAINER :缁存姢鑰呬俊鎭 RUN :鏋勫缓闀滃儚鏃舵墽琛岀殑鍛戒护 ADD :灏嗘湰鍦版枃浠舵坊鍔犲埌瀹瑰櫒涓 COPY 鍔熻兘鍜 ADD 绫讳技,鍖哄埆濡備笅 CMD :鏋勫缓瀹瑰櫒杩欏悗浣跨敤 ENTRYPOINT :閰嶇疆瀹瑰櫒,涓嶤MD绫讳技 LABEL :鐢ㄤ簬涓洪暅鍍忔坊鍔...
  • 濡備綍鍩轰簬docker鏋寤哄拰鍙戝竷Python搴旂敤绋嬪簭?
    绛旓細COPY . /app 瀹夎渚濊禆搴 RUN pip install --no-cache-dir -r requirements.txt 鏆撮湶绔彛鍙 EXPOSE 8000 璁剧疆鍚姩鍛戒护 CMD ["python", "app.py"]鏋勫缓 Docker 闀滃儚銆傚湪 Dockerfile 鎵鍦ㄧ殑鐩綍涓嬶紝杩愯浠ヤ笅鍛戒护锛歞ocker build -t my-python-app .鍏朵腑锛宮y-python-app 鏄暅鍍忕殑鍚嶇О锛. 琛ㄧず浣跨敤...
  • docker闀滃儚鏋勫缓
    绛旓細鍩烘湰鐨勬瀯寤哄懡浠や负锛 docker build -t name:tag -f Dockerfile .-t : 琛ㄧず鏋勫缓鍑烘潵鐨勯暅鍍忓悕绉 -f : 琛ㄧず鏋勫缓浣跨敤鐨dockerfile鏂囦欢鍚嶇О . : 琛ㄧず鏋勫缓浣跨敤褰撳墠璺緞浣滀负涓婁笅鏂囷紙contex锛夛紝濡傛灉浣犳槸鍦ㄦ牴鐩綍 / 涓嬮潰鏋勫缓锛屼笉寤鸿浣跨敤 . 锛堜笉寤鸿浣跨敤鏍硅矾寰勪綔涓轰笂涓嬫枃锛夛紝鍥犱负鏍硅矾寰勪笅闈㈡湁铏氭嫙鏂囦欢绯荤粺锛...
  • docker瀹瑰櫒鐨浣跨敤docker瀹瑰櫒鐨勪娇鐢ㄨ繃绋
    绛旓細1. 瀹夎Docker锛氶鍏堥渶瑕佸畨瑁匘ocker锛屽彲浠ヤ粠瀹樻柟缃戠珯涓嬭浇骞舵寜鐓ц鏄庤繘琛屽畨瑁呫2. 鍒涘缓Docker闀滃儚锛氬皢搴旂敤绋嬪簭鎵撳寘鎴怐ocker闀滃儚锛屽彲浠浣跨敤Dockerfile鏂囦欢杩涜鏋勫缓锛孌ockerfile鏄竴涓枃鏈枃浠讹紝鍖呭惈浜嗘墦鍖呴暅鍍忕殑鍛戒护鍜岄厤缃俊鎭3. 杩愯Docker瀹瑰櫒锛氫娇鐢―ocker鍛戒护鍚姩瀹瑰櫒锛屽彲浠ユ寚瀹氱鍙c佺幆澧冨彉閲忕瓑鍙傛暟锛屾潵婊¤冻搴旂敤...
  • 濡備綍鐢―ockerfile鍒涘缓闀滃儚
    绛旓細1.CMD ["executable","param1","param2"] 浣跨敤 exec 鎵ц锛屾帹鑽愭柟寮忥紱2.CMD command param1 param2 鍦 /bin/sh 涓墽琛岋紝鎻愪緵缁欓渶瑕佷氦浜掔殑搴旂敤锛3.CMD ["param1","param2"] 鎻愪緵缁 ENTRYPOINT 鐨勯粯璁ゅ弬鏁帮紱鎸囧畾鍚姩瀹瑰櫒鏃舵墽琛岀殑鍛戒护锛屾瘡涓 Dockerfile 鍙兘鏈変竴鏉 CMD 鍛戒护銆傚鏋滄寚瀹氫簡澶氭潯...
  • 扩展阅读:docker rmi ... docker入门 ... 国产docker管理工具 ... dockerfile add ... dockerfile 执行 ... docker进入镜像 ... dockerfile copy ... dockerfile最佳实践 ... docker create ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网