Docker----Dockerfile常用的指令

网友投稿 256 2022-10-20

Docker----Dockerfile常用的指令

一、Dockerfile基础知识

每个保留关键字(指令)都是必须是大写字母执行从上到下顺序执行#表示注释每个指令都会创建提交一个新的额镜像层,并提交

二、Dockerfile常用的指令

(1) FROM 指定基础镜像

FROM centos

(2)MAINTAINER 指定镜像的维护者信息,一般为邮箱

MAINTAINER hitredrose@163.com

(3)RUN 镜像构建时需要执行的命令

RUN yum install -y wget

(4)ADD 增加文件,会自动解压

ADD python.tar.gz /usr/local/

(5)WORKDIR 设置当前工作目录

WORKDIR /usr/local/python/

(6)VOLUME 挂载主机目录

VOLUME ["/usr/local/python","/usr/local/java/"]

(7)EXPOSE 暴露端口,注意这里指仅暴露容器的端口,并不会将容器端口与宿主机端口映射。也就是说在使用docker run的时候仍然需要继续使用-p进行端口映射,换言之,EXPOSE更多的作用在于给Dockerfile开发者提供开发端口的提示提示作用

EXPOSE 80

(8)CMD 指定容器启动的时候需要执行的命令,注意CMD只有最后一个命令会生效

CMD /bin/bash

(9)ENTRYPOINT 指定容器启动时需要运行的命令,注意ENTRYPOINT命令可以追加命令,即如果有多条ENTRYPOINT命令会全部执行,这是ENTRYPOINT命令和CMD命令最大的区别

ENTRYPOINT cd

(10)ONBUILD 当构建一个被继承Dockerfile,这个时候就会运行ONBUILD指令

(11)COPY 类似ADD命令,将文件拷贝到镜像中

(11)ENV 构建的时候设置环境变量

三、Dockerfile实战测试

1、编写如下Dockerfile文件,创建自己的centos镜像

FROM centosMAINTAINER redrose2100ENV JAVA_HOME /usr/local/jdk_1.8/WORKDIR /usr/localRUN yum install -y vimRUN yum install -y net-toolsEXPOSE 80CMD echo $JAVA_HOMECMD echo "---end---"

2、编译镜像

docker build -f Dockerfile -t mycentos:1.0 .

[root@iZbp1flzt6x7pxmxfhmxeeZ opt]# docker build -f Dockerfile -t mycentos:1.0 .Sending build context to Docker daemon 673.8MBStep 1/10 : FROM centos ---> 5d0da3dc9764Step 2/10 : MAINTAINER redrose2100 ---> Running in da64144bd09fRemoving intermediate container da64144bd09f ---> 27c3c3914066Step 3/10 : ENV JAVA_HOME /usr/local/jdk_1.8/ ---> Running in e2bc434f38edRemoving intermediate container e2bc434f38ed ---> 5702a1a5fcb4Step 4/10 : WORKDIR /usr/local ---> Running in 5e89bfc4bac3Removing intermediate container 5e89bfc4bac3 ---> 4c9ffec050e5Step 5/10 : RUN yum install -y vim ---> Running in a7d01621e43cCentOS Linux 8 - AppStream 3.3 MB/s | 9.5 MB 00:02CentOS Linux 8 - BaseOS 2.6 MB/s | 7.5 MB 00:02CentOS Linux 8 - Extras 8.6 kB/s | 10 kB 00:01Last metadata expiration check: 0:00:01 ago on Thu Oct 28 15:40:46 2021.Dependencies resolved.================================================================================ Package Arch Version Repository Size================================================================================Installing: vim-enhanced x86_64 2:8.0.1763-15.el8 appstream 1.4 MInstalling dependencies: gpm-libs x86_64 1.20.7-17.el8 appstream 39 k vim-common x86_64 2:8.0.1763-15.el8 appstream 6.3 M vim-filesystem noarch 2:8.0.1763-15.el8 appstream 48 k which x86_64 2.21-12.el8 baseos 49 kTransaction Summary================================================================================Install 5 PackagesTotal download size: 7.8 MInstalled size: 30 MDownloading Packages:(1/5): gpm-libs-1.20.7-17.el8.x86_64.rpm 325 kB/s | 39 kB 00:00(2/5): vim-filesystem-8.0.1763-15.el8.noarch.rp 74 kB/s | 48 kB 00:00(3/5): which-2.21-12.el8.x86_64.rpm 859 kB/s | 49 kB 00:00(4/5): vim-enhanced-8.0.1763-15.el8.x86_64.rpm 1.5 MB/s | 1.4 MB 00:00(5/5): vim-common-8.0.1763-15.el8.x86_64.rpm 6.0 MB/s | 6.3 MB 00:01--------------------------------------------------------------------------------Total 1.5 MB/s | 7.8 MB 00:05warning: /var/cache/dnf/appstream-02e86d1c976ab532/packages/gpm-libs-1.20.7-17.el8.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 8483c65d: NOKEYCentOS Linux 8 - AppStream 1.6 MB/s | 1.6 kB 00:00Importing GPG key 0x8483C65D: Userid : "CentOS (CentOS Official Signing Key) " Fingerprint: 99DB 70FA E1D7 CE22 7FB6 4882 05B5 55B3 8483 C65D From : /etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficialKey imported successfullyRunning transaction checkTransaction check succeeded.Running transaction testTransaction test succeeded.Running transaction Preparing : 1/1 Installing : which-2.21-12.el8.x86_64 1/5 Installing : vim-filesystem-2:8.0.1763-15.el8.noarch 2/5 Installing : vim-common-2:8.0.1763-15.el8.x86_64 3/5 Installing : gpm-libs-1.20.7-17.el8.x86_64 4/5 Running scriptlet: gpm-libs-1.20.7-17.el8.x86_64 4/5 Installing : vim-enhanced-2:8.0.1763-15.el8.x86_64 5/5 Running scriptlet: vim-enhanced-2:8.0.1763-15.el8.x86_64 5/5 Running scriptlet: vim-common-2:8.0.1763-15.el8.x86_64 5/5 Verifying : gpm-libs-1.20.7-17.el8.x86_64 1/5 Verifying : vim-common-2:8.0.1763-15.el8.x86_64 2/5 Verifying : vim-enhanced-2:8.0.1763-15.el8.x86_64 3/5 Verifying : vim-filesystem-2:8.0.1763-15.el8.noarch 4/5 Verifying : which-2.21-12.el8.x86_64 5/5Installed: gpm-libs-1.20.7-17.el8.x86_64 vim-common-2:8.0.1763-15.el8.x86_64 vim-enhanced-2:8.0.1763-15.el8.x86_64 vim-filesystem-2:8.0.1763-15.el8.noarch which-2.21-12.el8.x86_64Complete!Removing intermediate container a7d01621e43c ---> d5265b632c5dStep 6/10 : RUN yum install -y net-tools ---> Running in e4936d8440efLast metadata expiration check: 0:00:42 ago on Thu Oct 28 15:40:46 2021.Dependencies resolved.================================================================================ Package Architecture Version Repository Size================================================================================Installing: net-tools x86_64 2.0-0.52.20160912git.el8 baseos 322 kTransaction Summary================================================================================Install 1 PackageTotal download size: 322 kInstalled size: 942 kDownloading Packages:net-tools-2.0-0.52.20160912git.el8.x86_64.rpm 1.9 MB/s | 322 kB 00:00--------------------------------------------------------------------------------Total 285 kB/s | 322 kB 00:01Running transaction checkTransaction check succeeded.Running transaction testTransaction test succeeded.Running transaction Preparing : 1/1 Installing : net-tools-2.0-0.52.20160912git.el8.x86_64 1/1 Running scriptlet: net-tools-2.0-0.52.20160912git.el8.x86_64 1/1 Verifying : net-tools-2.0-0.52.20160912git.el8.x86_64 1/1Installed: net-tools-2.0-0.52.20160912git.el8.x86_64Complete!Removing intermediate container e4936d8440ef ---> c46a704ec937Step 7/10 : EXPOSE 80 ---> Running in 4abcb3b7a496Removing intermediate container 4abcb3b7a496 ---> 9f90477f2a46Step 8/10 : CMD echo $JAVA_HOME ---> Running in 808052b626b3Removing intermediate container 808052b626b3 ---> ed2f970d17e1Step 9/10 : CMD echo "---end---" ---> Running in 29c9a4149056Removing intermediate container 29c9a4149056 ---> 72af12cddaf8Step 10/10 : CMD /bin/bash ---> Running in 6bc2bc8e3d73Removing intermediate container 6bc2bc8e3d73 ---> 122504aa874cSuccessfully built 122504aa874cSuccessfully tagged mycentos:1.0[root@iZbp1flzt6x7pxmxfhmxeeZ opt]#

然后执行docker images 查看如下:

[root@iZbp1flzt6x7pxmxfhmxeeZ opt]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEmycentos 1.0 122504aa874c About a minute ago 337MBredrose2100/centos 1.1 2184c3aadaab 30 hours ago 231MBnginx latest f8f4ffc8092c 4 weeks ago 133MBmysql 5.7 9f35042c6a98 4 weeks ago 448MBcentos latest 5d0da3dc9764 6 weeks ago 231MB[root@iZbp1flzt6x7pxmxfhmxeeZ opt]#

3、测试运行

如下,当前工作目录已经切换到 /usr/local 目录下,JAVA_HOME变量也是有值的,ifconfig命令也支持了

[root@iZbp1flzt6x7pxmxfhmxeeZ opt]# docker run -it mycentos:1.0[root@b868b5ba93e9 local]# pwd/usr/local[root@b868b5ba93e9 local]# echo $JAVA_HOME/usr/local/jdk_1.8/[root@b868b5ba93e9 local]# ifconfigeth0: flags=4163 mtu 1500 inet 172.17.0.3 netmask 255.255.0.0 broadcast 172.17.255.255 ether 02:42:ac:11:00:03 txqueuelen 0 (Ethernet) RX packets 8 bytes 656 (656.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0lo: flags=73 mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 loop txqueuelen 1000 (Local Loopback) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0[root@b868b5ba93e9 local]#

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java基于Dijkstra算法实现校园导游程序
下一篇:Docker----Docker数据共享与数据卷挂载
相关文章

 发表评论

暂时没有评论,来抢沙发吧~