docker可视化与制作和提交自己的镜像

第四章docker可视化

portainer

docker的图形化管理工具!提供一个后台面板供我们操作!

docker run -d -p 8080:9000 \

--restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer

访问测试:外网 :8080

例如:http://主机ip:8080/

这个可视化面板很少用  (账号:admin 密码:12345678)


第五章制作和提交自己的镜像

Docker镜像

是一种独立软件包,包含某个软件运行时的所有内容,包含代码、环境变量等。

如何得到镜像

从远程仓库下载

朋友拷贝

自己制作一个镜像dockerFile

联合文件系统

docker的镜像实际上由一层一层的文件系统组成,这种层级的文件系统UnionFS。

特点

docker镜像都是只读的,当容器启动时,一个新的可写层被加载到镜像的顶部,容器之下都叫镜像层。

DockerFile介绍

dockerfile是用来构建docker镜像的文件!命令行参数脚本!

构建镜像步骤

1.编写一个dockerfile文件

2.docker build构建成为一个镜像

3.doucker run 运行镜像

4.docker push  发布到github或阿里云

点击任意版本跳转到GitHub仓库,查看官方制作的镜像

很多官方都是基础包,很多功能没有,我们通常会自己搭建自己的镜像!

DockerFIle构建过程

基础知识:

1.每个保留关键字(指令)都是必须大写字母

2.执行从上到下顺序

3.#表示注释

4.每一个指令都会创建提交一个新的镜像层,并提交!

dockerfile是面向开发的,我们以后要发布项目,做镜像,就需要编写dockerfile文件,这个文件十分简单!

Docker镜像逐渐成为企业交付的标准,必须要掌握!

步骤:开发,部署,运维。。。缺一不可!

DockerFile:构建文件,定义了一切的步骤,源代码

Docker images:通过DockerFile构建生成的镜像,最终发布和运行的产品!

Docker容器:容器就是镜像运行起来提供服务的

DockerFile的指令

FROM    #基础镜像,一切从这里开始构建    

MAINTAINER    #镜像是谁写的,姓名+邮箱

RUN    #镜像构建的时候需要运行的命令

ADD    #步骤:tomcat镜像,这个tomcat压缩包!添加内容

WORKDIR    #镜像的工作目录

VOLUME    #挂载的目录

EXPOSE    #保留端口配置

CMD    #指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代

ENTRYPOINT    #指定这个容器启动的时候要运行的命令,可以追加命令

ONBUILD    #当构建一个被继承 DockerFile这个时候就会运行ONBUILD 的指令。出发指令。

COPY    #构建的时候设置环境变量

实战测试

Docker Hub 中99%镜像都是从这个基础镜像过来的FROM scratch,然后配置需要的软件和配置来进行构建的

创建一个自己的centos

#1.编写Dockerfile的文件

vim cat mydockerfile-centos

FROM centos

MAINTAINER gyq<gyqailxj@qq.com>

ENV MYPATH /usr/local

WORKDIR $MYPATH

RUN yum -y install vim

RUN yum -y install net-tools

EXPOSE 80

CMD echo $MYPATH

CMD echo "---end---"

CMD /bin/bash

通过这个文件构成镜像

#命令docker build -f dockerfile文件路径 -t 镜像名:[tag(版本号)]

对比之前的原生centos

增加之后的镜像

列出本地进行的变更历史

我们平时拿到一个镜像,可以研究一下它是怎么做的了?

CMD 和 ENTRYPOINT 区别

CMD    #指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代

ENTRYPOINT    #指定这个容器启动的时候要运行的命令,可以追加命令

测试cmd

#编写 dockerfile文件

[root@localhost dockerfile]# vim dockerfile-cmd-test

FROM centos

CMD ["ls","-a"]

#构建镜像

[root@localhost dockerfile]# docker build -f docker-cmd-test -t cmdtest .

#run运行,发现我们的ls -a 命令生效

[root@localhost dockerfile]# docker run 4cd6b4cf475e

.dockerenv

bin

dev

…..

#想追加一个命令 -l     ls -al

[root@localhost dockerfile]# docker run  4cd6b4cf475e -l

docker: Error response from daemon: OCI runtime create failed: container_linux.go:380: starting container process caused: exec: "-l": executable file not found in $PATH: unknown.

ERRO[0000] error waiting for container: context canceled

[root@localhost dockerfile]#

#cmd 的清理下 -l  替换了CMD ["ls","-a"] 命令, -l 不是命令所以报错!

测试ENTRYPOINT 

[root@localhost dockerfile]# vim dockerfile-cmd-entrypoint

FROM centos

ENTRYPOINT ["ls","-a"]

[root@localhost dockerfile]# docker build -f dockerfile-cmd-entrypoint -t entoryponit-test .

Sending build context to Docker daemon  4.096kB

Step 1/2 : FROM centos

---> 5d0da3dc9764

Step 2/2 : ENTRYPOINT ["ls","-a"]

---> Running in bf9e56a6aae3

Removing intermediate container bf9e56a6aae3

---> 346b699dac1e

Successfully built 346b699dac1e

Successfully tagged entoryponit-test:latest

[root@localhost dockerfile]# docker run  346b699dac1e

.dockerenv

bin

dev

etc

home

…….

#我们的追加命令,是直接拼接在我们的ENTRYPOINT命令的后面!

[root@localhost dockerfile]# docker run  346b699dac1e -l

total 0

-rwxr-xr-x   1 root root   0 Mar 11 06:37 .dockerenv

lrwxrwxrwx   1 root root   7 Nov  3  2020 bin -> usr/bin

…….

dockerfile命令中很多命令都十分的相似,我们需要了解他们的区别,我们最好的学习就是对他们进行·对比,然后测试结果!

镜像优化思路:

基础镜像小

层级尽量少

去除不必要

复用镜像层

分阶段构建

构建tomcat镜像

1.准备镜像文件 tomcat 压缩包,jdk压缩包

2.编写dockerfile文件

官方命名 'Dockerfile' ,build 会自动寻找这个文件,就不需要-f指定了!

所需文件以及存放目录(自定)

FROM centos

MAINTAINER gyq<gyqailxj@qq.com>

COPY readme.txt /usr/local/readme.txt

ADD jdk-8u11-linux-x64.tar.gz /usr/local/

ADD apache-tomcat-9.0.33.tar.gz /usr/local

ENV MYPATH /usr/local

WORKDIR $MYPATH

ENV JAVA_HOME /usr/local/jdk1.8.0_11

ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.33

ENV CATALINA /usr/local/apache-tomcat-9.0.33

ENV PATH $PATH:$PATH:$JAVA_HOME/bin:CATALINA_HOME/lib:$CATALINA/bin

EXPOSE 8080

CMD /usr/local/apache-tomcat-9.0.33/bin/startup.sh && tail -F /url/local/apache-tomcat-9.0.33/bin/logs/catalina.out

3.构建镜像

docker build -t diytomcat .

如果想保存当前容器的状态,就可以通过commit来提交,获得一个镜像,就好比Vm虚拟机的快照。

提交镜像

commit 镜像

#方法一

docker commit 提交容器成为一个新的副本

#方法二(推荐)

#命令和git原理类似

docker commit -m="提交的描述信息" -a ="作者" 容器id 目标镜像名:【TAC(版本号)】

实战测试

#1.启动一个默认的tomcat

#2.发现这个默认的tomcat 是没有wenapps应用,镜像原因,官方的镜像默认webapps 下面是没有文件的!

#3.我自己拷贝进去了基本的文件

#4.将我们操作过的容器通过commit提交为镜像!我们以后就使用我们修改过的镜像即可,这就是我们自己的修改的。

4.发布自己的镜像

1.发布到镜像仓库

Docker Hub也可以自己搭建镜像仓库

2.在我们服务器上提交自己的镜像

[root@localhost tomcat]# docker login --help

Usage:  docker login [OPTIONS] [SERVER]

Log in to a Docker 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

3.从命令行登录镜像仓库

[root@localhost tomcat]# docker login -u +账号

Password:输入密码

4.登录完毕后就可以推送镜像了

docker push

[root@localhost tomcat]# docker push 账号名/镜像:版本号

Using default tag: latest

The push refers to repository [docker.io/library/centos]

......

[root@localhost tomcat]#

小结:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黑马金牌编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值