烟台开发区建设业联合网站,怎么建设一个电影资源网站解析,网站活动怎么做,百度网站优点Docker - DockerFile DockerFile 描述
dockerfile 是用来构建docker镜像的文件#xff01;命令参数脚本#xff01;
构建步骤#xff1a;
编写一个dockerfile 文件docker build 构建成为一个镜像docker run 运行脚本docker push 发布镜像#xff08;dockerhub#xff0…Docker - DockerFile DockerFile 描述
dockerfile 是用来构建docker镜像的文件命令参数脚本
构建步骤
编写一个dockerfile 文件docker build 构建成为一个镜像docker run 运行脚本docker push 发布镜像dockerhub阿里云镜像仓库
通过 Docker Hub 查看Centos可以跳转到github查看构建代码 DockerFIle 构建
基础知识 每个保留关键字指令都是必须是大写字母 执行从上到下顺序执行 #表示注释 每一个指令都会创建提交一个新的镜像层并提交
dockerfile是面向开发的我们以后要发布项目做镜像就需要编写dockerfile文件。
docker镜像逐渐成为企业交付的标准必须掌握
步骤开发部署运维
Dockerfile构建文件定义了一切的步骤源代码
DockerImages通过DockerFile构建生成的镜像最终发布和运行的产品
Docke容器容器就是镜像运行起来提供服务器
DockerFile 指令
FROM # 基础镜像一切从这里开始构建
MAINTAINER # 镜像是谁写的姓名邮箱
RUN # 镜像构建的时候需要运行的命令
ADD # 步骤tomcat镜像这个tomcat压缩包添加内容
WORKDIR # 镜像的工作目录
VOLUME # 挂载目录
EXPOSE # 保留端口配置
CMD # 指定这个容器启动的时候要运行的命令只有最后一个会生效可被替代
ENTRYPOINT # 指定这个容器启动的时候要运行的命令可以追加命令
ONBUILD # 当构建一个被继承 Dockerfile 这个时候就会运行 ONBUILD 的指定。触发指令
COPY # 类似ADD将我们文件拷贝到镜像中
ENV # 构建的时候设置环境变量DockerFile 测试
# 1 编写Dockerfile文件
[rootiZ2zeg7mctvft5renx1qvbZ dockerfiles]# cat mycentos
FROM centos:7
MAINTAINER wys199163.comENV MYPATH /usr/local
WORKDIR $MYPATHRUN yum -y install vim
RUN yum -y install net-toolsEXPOSE 80CMD echo $MYPATH
CMD echo ----end----
CMD /bin/bash# 2 构建 Docker 镜像
[rootiZ2zeg7mctvft5renx1qvbZ dockerfiles]# docker build -f mycentos -t mycentos:0.1 .
[] Building 67.7s (8/8) FINISHED docker:default [internal] load build definition from mycentos 0.0s transferring dockerfile: 237B 0.0s [internal] load .dockerignore 0.0s transferring context: 2B 0.0s [internal] load metadata for docker.io/library/centos:7 3.0s [1/4] FROM docker.io/library/centos:7sha256:be65f488b7764ad3638f236b7b515b3678369a5124c47b8d32916d6487418ea4 39.5s resolve docker.io/library/centos:7sha256:be65f488b7764ad3638f236b7b515b3678369a5124c47b8d32916d6487418ea4 0.0s sha256:be65f488b7764ad3638f236b7b515b3678369a5124c47b8d32916d6487418ea4 1.20kB / 1.20kB 0.0s sha256:dead07b4d8ed7e29e98de0f4504d87e8880d4347859d839686a31da35a3b532f 529B / 529B 0.0s sha256:eeb6ee3f44bd0b5103bb561b4c16bcb82328cfe5809ab675bb17ab3a16c517c9 2.75kB / 2.75kB 0.0s sha256:2d473b07cdd5f0912cd6f1a703352c82b512407db6b05b43f2553732b55df3bc 76.10MB / 76.10MB 35.8s extracting sha256:2d473b07cdd5f0912cd6f1a703352c82b512407db6b05b43f2553732b55df3bc 3.3s [2/4] WORKDIR /usr/local 0.9s [3/4] RUN yum -y install vim 19.9s [4/4] RUN yum -y install net-tools 2.0s exporting to image 2.3s exporting layers 2.2s writing image sha256:afbe5424adac09891eefa5feabf9584f01638e7475eaca1789535fbe499c5ebd 0.0s naming to docker.io/library/mycentos:0.1# 查看镜像的生成过程[rootiZ2zeg7mctvft5renx1qvbZ dockerfiles]# docker history afbe5424adac
IMAGE CREATED CREATED BY SIZE COMMENT
afbe5424adac 6 minutes ago CMD [/bin/sh -c /bin/bash] 0B buildkit.dockerfile.v0
missing 6 minutes ago CMD [/bin/sh -c echo \----end----\] 0B buildkit.dockerfile.v0
missing 6 minutes ago CMD [/bin/sh -c echo $MYPATH] 0B buildkit.dockerfile.v0
missing 6 minutes ago EXPOSE map[80/tcp:{}] 0B buildkit.dockerfile.v0
missing 6 minutes ago RUN /bin/sh -c yum -y install net-tools # bu… 198MB buildkit.dockerfile.v0
missing 6 minutes ago RUN /bin/sh -c yum -y install vim # buildkit 284MB buildkit.dockerfile.v0
missing 6 minutes ago WORKDIR /usr/local 0B buildkit.dockerfile.v0
missing 6 minutes ago ENV MYPATH/usr/local 0B buildkit.dockerfile.v0
missing 6 minutes ago MAINTAINER wys199163.com 0B buildkit.dockerfile.v0
missing 2 years ago /bin/sh -c #(nop) CMD [/bin/bash] 0B
missing 2 years ago /bin/sh -c #(nop) LABEL org.label-schema.sc… 0B
missing 2 years ago /bin/sh -c #(nop) ADD file:b3ebbe8bd304723d4… 204MBENTRYPOINT CMD 区别
【ENTRYPOINT】追加执行 【CMD】替换执行
CMD # 指定这个容器启动的时候要运行的命令只有最后一个会生效可被替代
ENTRYPOINT # 指定这个容器启动的时候要运行的命令可以追加命令# CMD 测试
[rootiZ2zeg7mctvft5renx1qvbZ dockerfiles]# cat mycentoscmd
FROM centos
CMD [ls,-a]
[rootiZ2zeg7mctvft5renx1qvbZ dockerfiles]# docker run mycentoscmd
.
..
.dockerenv
bin
dev
etc
home
lib
lib64
lostfound
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
[rootiZ2zeg7mctvft5renx1qvbZ dockerfiles]# docker run mycentoscmd -l
docker: Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: -l: executable file not found in $PATH: unknown.
ERRO[0000] error waiting for container:# CMD 测试
[rootiZ2zeg7mctvft5renx1qvbZ dockerfiles]# cat mycentos-entrypoint
FROM centos
ENTRYPOINT [ls,-a]
[rootiZ2zeg7mctvft5renx1qvbZ dockerfiles]# docker run mycentos-entrypoint
.
..
.dockerenv
bin
dev
etc
home
lib
lib64
lostfound
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
[rootiZ2zeg7mctvft5renx1qvbZ dockerfiles]# docker run mycentos-entrypoint -l
total 0
drwxr-xr-x 1 root root 6 Nov 10 08:06 .
drwxr-xr-x 1 root root 6 Nov 10 08:06 ..
-rwxr-xr-x 1 root root 0 Nov 10 08:06 .dockerenv
lrwxrwxrwx 1 root root 7 Nov 3 2020 bin - usr/bin
drwxr-xr-x 5 root root 340 Nov 10 08:06 dev
drwxr-xr-x 1 root root 66 Nov 10 08:06 etc
drwxr-xr-x 2 root root 6 Nov 3 2020 home
lrwxrwxrwx 1 root root 7 Nov 3 2020 lib - usr/lib
lrwxrwxrwx 1 root root 9 Nov 3 2020 lib64 - usr/lib64
drwx------ 2 root root 6 Sep 15 2021 lostfound
drwxr-xr-x 2 root root 6 Nov 3 2020 media
drwxr-xr-x 2 root root 6 Nov 3 2020 mnt
drwxr-xr-x 2 root root 6 Nov 3 2020 opt
dr-xr-xr-x 132 root root 0 Nov 10 08:06 proc
dr-xr-x--- 2 root root 162 Sep 15 2021 root
drwxr-xr-x 11 root root 163 Sep 15 2021 run
lrwxrwxrwx 1 root root 8 Nov 3 2020 sbin - usr/sbin
drwxr-xr-x 2 root root 6 Nov 3 2020 srv
dr-xr-xr-x 13 root root 0 Nov 10 08:06 sys
drwxrwxrwt 7 root root 171 Sep 15 2021 tmp
drwxr-xr-x 12 root root 144 Sep 15 2021 usr
drwxr-xr-x 20 root root 262 Sep 15 2021 var构建 - tomcat
准备镜像文件 tomcat 压缩包jdk 压缩包编写dockerfile文件
[rootiZ2zeg7mctvft5renx1qvbZ tomcat]wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.82/bin/apache-tomcat-9.0.82.tar.gz[rootiZ2zeg7mctvft5renx1qvbZ tomcat]wget --no-check-certificate --no-cookies --header Cookie:oraclelicenseaccept-securebackup-cookie http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm
[rootiZ2zeg7mctvft5renx1qvbZ tomcat]wget --no-check-certificate --no-cookies --header Cookie:oraclelicenseaccept-securebackup-cookie http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz[rootiZ2zeg7mctvft5renx1qvbZ tomcat]# pwd
/root/dockerfiles/tomcat
[rootiZ2zeg7mctvft5renx1qvbZ tomcat]# ls
apache-tomcat-9.0.82.tar.gz jdk-8u131-linux-x64.tar.gz readme.txt# 编写dockerfile文件官方命名 Dockerfile, build会自动寻找这个文件就不需要-f 指定了
FROM centos:7
MAINTAINER maomao1213213qq.com# 复制文件
COPY readme.txt /usr/local/readme.txt# 将压缩包复制到镜像
ADD jdk-8u131-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-9.0.82.tar.gz /usr/local/# 安装vim
RUN yum -y install vim# 设置工具目录
ENV MYPATH /usr/local
WORKDIR $MYPATH# 设置环境变量
ENV JAVA_HOME /usr/local/jdk1.8.0_131
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.82
ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.82
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin# 暴露端口
EXPOSE 8080# 执行tomcat
CMD /usr/local/apache-tomcat-9.0.82/bin/startup.sh tail -F /url/local/apache-tomcat-9.0.82/bin/logs/catalina.out# 执行 build docker镜像
[rootiZ2zeg7mctvft5renx1qvbZ tomcat]# docker build -t tomcat .
[] Building 26.1s (11/11) FINISHED docker:default [internal] load build definition from Dockerfile 0.0s transferring dockerfile: 804B 0.0s [internal] load .dockerignore 0.0s transferring context: 2B 0.0s [internal] load metadata for docker.io/library/centos:7 0.7s CACHED [1/6] FROM docker.io/library/centos:7sha256:be65f488b7764ad3638f236b7b515b3678369a5124c47b8d32916d6487418ea4 0.0s [internal] load build context 0.0s transferring context: 126B 0.0s [2/6] COPY readme.txt /usr/local/readme.txt 0.0s [3/6] ADD jdk-8u131-linux-x64.tar.gz /usr/local/ 5.3s [4/6] ADD apache-tomcat-9.0.82.tar.gz /usr/local/ 0.3s [5/6] RUN yum -y install vim 15.6s [6/6] WORKDIR /usr/local 0.1s exporting to image 3.9s exporting layers 3.9s writing image sha256:b1ef32328c3c25f035586a53f3ee10778892a593780232e2c6cf139e9ca8659e 0.0s naming to docker.io/library/tomcat 0.0s
[rootiZ2zeg7mctvft5renx1qvbZ tomcat]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat latest b1ef32328c3c 10 seconds ago 881MB# 启动该镜像的窗口
[rootiZ2zeg7mctvft5renx1qvbZ ~]# docker run -d -p 8080:8080 --name tomcat -v /home/build/tomcat/test/:/usr/local/apache-tomcat-9.0.82/webapps/test -v /home/build/tomcat/tomcatlogs/:/usr/local/apache-tomcat-9.0.82/logs tomcat
06f1d3e98ec482bbba48e57d96c11867bbdbe61474d0674e81556da0ffc9d226# 编写 test/WEB-INF/web.xml
?xml version1.0 encodingUTF-8?
web-app xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlnshttp://java.sun.com/xml/ns/javaeexmlns:webhttp://java.sun.com/xml/ns/javaee/web-app_2_5.xsdxsi:schemaLocationhttp://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsdidWebApp_IDversion2.5/web-app# 编写 test/index.jsp 进行测试
% System.out.println(----); %发布镜像 待注册账号
网络原因这里没有实际操作过
地址https://hub.docker.com/ 注册自己的账号确定这个账号可以登录在服务器上提交自己的镜像
[rootiZ2zeg7mctvft5renx1qvbZ tomcatlogs]# docker login --helpUsage: docker login [OPTIONS] [SERVER]Log in to a registry.
If no server is specified, the default is defined by the daemon.Options:-p, --password string Password--password-stdin Take the password from stdin-u, --username string Username登录完毕后就可以提交镜像了就是一步 docker push
阿里云发布 登录阿里云 进入【容器镜像服务】并 开启个人实例 【创建命名空间创建镜像仓库】 按操作指南进行操作即可 镜像仓库名好比于当前你发布的容器名
# 登录
[rootiZ2zeg7mctvft5renx1qvbZ ~]# docker login --username*** registry.cn-beijing.aliyuncs.com
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-storeLogin Succeeded
[rootiZ2zeg7mctvft5renx1qvbZ ~]## 拉取镜像
[rootiZ2zeg7mctvft5renx1qvbZ ~]# docker pull registry.cn-beijing.aliyuncs.com/am98/tomcat:1.0
1.0: Pulling from am98/tomcat
2d473b07cdd5: Already exists
2045650e548c: Already exists
ca2b114dc7e9: Already exists
fa427a442e19: Already exists
1e0f8f1a4b3d: Already exists
4f4fb700ef54: Already exists
Digest: sha256:c7011cb830a34e26902ae7ac1c5f6c379088d9fde276f7c93942328a85f9f3b7
Status: Downloaded newer image for registry.cn-beijing.aliyuncs.com/am98/tomcat:1.0
registry.cn-beijing.aliyuncs.com/am98/tomcat:1.0
[rootiZ2zeg7mctvft5renx1qvbZ ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
registry.cn-beijing.aliyuncs.com/am98/tomcat 1.0 b1ef32328c3c 2 hours ago 881MB# 修改镜像名:版本号
[rootiZ2zeg7mctvft5renx1qvbZ ~]# docker tag b1ef32328c3c registry.cn-beijing.aliyuncs.com/am98/tomcat:1.0# 提交镜像
[rootiZ2zeg7mctvft5renx1qvbZ ~]# docker push registry.cn-beijing.aliyuncs.com/am98/tomcat:1.0
The push refers to repository [registry.cn-beijing.aliyuncs.com/am98/tomcat]
5f70bf18a086: Pushed
bb6cd3e44e82: Pushed
801a43a0316f: Pushed
b3f9f3df333b: Pushed
1d2219e9e671: Pushed
174f56854903: Pushed
1.0: digest: sha256:c7011cb830a34e26902ae7ac1c5f6c379088d9fde276f7c93942328a85f9f3b7 size: 1579