Docker(cenos6.8)

系列文章目录

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
例如:第一章 Python 机器学习入门之pandas的使用


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


前言

提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

一、docker使用

                 1),yum install -y epel-release

                          

                 2),Yum install -y docker-io

                         

                         

                 3),安装后的配置文件:/etc/sysconfig/docker

                 4),启动docker后台服务:service docker start

                 5),docker version验证

二、安装镜像

              阿里云镜像加速

                

                

               

                

               运行docker run hello-world

               

                

                 

三、docker命令

    

  1. docker version

Docker version

Docker --help

Docker images:列出本地的主机上的镜像

        

        

      Docker search 某个xxx镜像名字

      

     

Docker pull 某个xxx镜像名字

Docker pull tomcat

Docker rmi某个xxx镜像名字

删除镜像

删除单个:docker rmi -f 镜像ID

删除多个:docker rmi -f 镜像名1:TAG 镜像名2:TAG

删除全部:docker rmi-f $(docker images -qa)

2.容器命令:

有镜像才能创建容器,这是根本前提:docker pull centos

新建并启动容器:

               

             

              

列出当前所有正在运行的容器:

Docker ps 【OPTIONS】

         

          

退出容器:

Exit 容器停止退出

Ctrl+P+Q 容器不停止退出

启动容器:docker start 容器id或者容器名

重启容器:docker restart 容器id或者容器名

停止容器:docker stop容器id或者容器名

 

强制停止容器:docker kill容器id或者容器名

删除已停止容器:docker rm 容器id 一次性删除多个容器:

        

      

重要:

启动守护容器:docker run -d 容器名

            

            

查看容器日志:docker logs -f -t --tail 容器ID

-t是加入时间戳

-f 跟随最新的日志打印

-tail 数字显示最后多少条

查看容器内运行的进程:docker top 容器ID

                 

                 

查看容器内部细节:docker inspect 容器ID

进入正在运行的容器并以命令行交互:

Docker exec -it 容器ID bashShell

重新进入docker attach 容器ID

    

       (第一种)Attach 直接进入容器命令的终端,不会启动新的进程

                  

                  

                  (第二种)Exec 是在容器中打开新的终端,并且可以启动新的进程

                  

                  

                  

           从容器内拷贝到主机上:docker cp 容器ID :容器内路径 目的主机路径

                  

               docker常用命令总结

                   

                  

                   

                    

                   

           镜像是一种轻量级的,可执行独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有的内容,包括代码,运行时,库,环境变量和配置文件。

四、docker镜像

1. 含义:unionFS(联合文件系统)

              Docker 镜像加载原理

               

               

               分层的镜像

               

               为什么docker镜像要采用这种分层结构呢

              

              

             特点:docker镜像都是只读的 ,当容器启动时一个新的可写层被加载到镜像的 顶部。这一层通常被称作“容器层”,“容器层”之下的都叫“镜像层”。

 Docker镜像commit操作补充:

                

               

步骤对应上图的数字

  1. 下载并运行docker run -it -p 8080:8080 tomcat:

-p主机端口:docker容器端口

-p随机分配端口

I:交互

t:终端

                       

               在浏览器访问localhoost:8888会出现tomacat界面 表示启动成功!!!

                        

          大写P表示随机分配

                      

         

                2,故意删除上一步镜像生产tomcat容器的文档

                 

                 

                  

              3.也即当前的tomcat运行实例是一个没有文档内容的容器,以她为模板commit一个没有doc的tomcat新镜像atguigu/tomcat02:

                 

                 

         

4,启动我们的新镜像并和原来的对比:

启动atguigu/tomcat02,他没有docs

新启动tomcat,他有docs

                     

                     

                 5,容器数据卷:

                     含义

                       

                  做什么:容器的持久化和容器间继承+共享数据

                       

                   

数据卷:容器内添加:

直接命令添加--------

命令:docker run -it -v/宿主机绝对路径目录:/容器内目录 镜像名

                     

           查看数据卷是否挂载成功

                    

                    

               容器和宿主机之间数据共享       

                      

               容器停止退出后,主机修改后数据是否同步

                     

                      

             命令(权限):docker run -it -v /宿主机绝对路径目录:/容器内目录:ro镜像名

                    

                      

                        

                         

                   

以上就是通过docker主机和容器之间数据共享的过程

(第二种方式:)DockerFile添加--------

               

        使用指令:

                       

        

Vim Dockerfile

File构建

         

Build后生成镜像

          

     

      

                     

              打开新建的两个容器卷       

                     

             打开容器

                     

             此时主机和容器内数据依旧保持同步

                     

            备注:

                    

             

数据卷容器:以上一步新建的镜像zzyy/centos为模板并运行容器dc01/dc02/dc03;他们已经具有容器卷:/dataVolumeContainer1和/dataVolumeContainer2

含义:命名的容器挂载数据卷,其它容器通过挂载这个(父容器)实现数据共享,挂载数据卷的容器,称之为数据卷容器。

容器间传递共享:(--volumes-from):-----------

  1. 先启动一个父容器dc01 :在dataVolumerContainer2新增内容

                   

             Touch dc01_add.txt   

                    

            2,dc02/dc03继承dc01 :volumes-form;命令(

                    

                   

              

Dc03和dc02继承dc01,dc03和dc02新增之后dc01也会新增(各自添加都能共享)

查dc01:

                  

            

):dc02/dc03分别在dataVolumeContainer2各自新增内容

3, 回到dc1可以看到02/03各自添加的都能共享了

4, 删除dc01,dc02修改后dc03可访问

删除后dc02不受影响;修改dc02后,dc03也跟着修改

5,删除dc02后dc03可访问

新建dc04继承dc03后

      

            6, 新建dc04继承dc03后再删除dc03

                    

           

            7,结论:容器之间配置信息的传递,数据卷的生命周期一直持续到没有容器使用它为止。

五、DockerFiler解析

               

含义:dockerfile是用来构建docker镜像的构建文件,是由一系列命令和参数构成的脚本。

构建三步骤:编写dockerfile文件-docker build-docker run。

        

        

1,        Dockerfile内容基础知识:

每条保留字指令都必须为大写字母且后面要跟随至少一个参数

指令按照从上到下,顺序执行

#表示注释

每条指令都会创建一个新的镜像层,并对镜像进行提交

2,         Docker执行dockerfile的大致流程

Docker从基础镜像运行一个容器

执行一条指令并对容器做出修改

执行类似docker commit的操作提交一个新的镜像层

Docker再基于刚提交的镜像运行一个新容器

执行dockerfie中的下一个指令直到所有指令都执行完成

3,       总结:

               

              

              

DockerFile体系结构:-----------------------------

FORM:基础镜像,当前新镜像是基于哪个镜像的

MAINTAINER:镜像维护者的姓名和邮箱地址

RUN:容器构建时需要运行的命令

EXPOSE:当前容器对外暴露出的端口

WORKDIR:指定在创建容器后,终端默认登陆的进来工作目录,一个落脚点

ENV:用来构建镜像过程中设置环境变量

       

       

ADD:将宿主机目录下的文件拷贝到镜像且ADD命令会自动处理URL和解压tar压缩包

COPY:类似ADD,拷贝文件和目录到镜像中。将从构建上下文目录中《源路径》的文件/目录复制到新的一层的镜像内的《目录路径》位置 copy src dest copy[“src”,“dest”]

VOLUMN:容器数据卷,用于数据保存很持久化工作

CMD:指定一个容器启动时要运行的命令;dockerfile中科院有多个cmd指令,但只有最后一个生效,cmd会被docker run 之后的参数替换

       

ENTRYPOINT:指定一个容器启动时要运行的命令;ENTRYPOINT的目的和CMD一样,都是在指定容器启动程序及参数

ONBUILD:当构建一个被继承的dockerfile时运行命令,父镜像在被子镜像的onbuild被触发

             

             

        案例-------------------------------------------

            

Base镜像(scratch):

Docker hub中99%的镜像都是通过在base镜像中安装和配置需要的软件构建出来的

                      

                   

自定义镜像mycentos----------------------------------

  1. 编写:hub默认centos镜像什么情况;准备编写dockerfile文件;mycentos内容dockerfile

                           

        此时已清空 docker ps

                         

                        

                       

                   

2, 构建

Docker build -t 新镜像名字:TAG

               

               

          

        3, 运行(以上最近两张图就是这个)

        4,  列出镜像的变更历史(倒序展示)

                      

               

CMD/ENTRYPOINT镜像案例---------------------------------------------------

1,都是指定一个容器启动时要运行的命令

2,Cmd:

dockerfile中可以有多个cmd指令,但只有最后一个生效,cmd会被docker run之后的参数替换

Case:tomcat:演示讲解:docker run -it -p 8888:8080 tomcat ls -l

3,ENTRYPOINT

Docker run之后的参数会被当做参数传递给ENTRYPOINT,之后形成新的命令组合

Case:

制作cmd版科院查询IP信息的容器

  

问题:如果我们希望现实HTTP头信息,就需要加上-i参数

        WHY

              

       制作ENTROYPOIN版查询IP信息的容器

              

      自定义镜像tomcat9----------------------------------------------------------------       

             

          第四步:

           

        第四步--内容:

          

          第五步(构建):

                  

                  

           直接docker build -t不加-f是因为此时就在当前指定目录。不需要可以指定目录。

                   

               第六步:

                   

                   

           验证

                   

                   

                   

            Vim web.xml

                    

               Vim a.jsp

                    

                   总结----------

                 

六、docker常用安装

          

总体步骤:搜索镜像,拉取镜像,查看镜像,启动镜像,停止容器,移除容器

安装tomcat:--------------------------------------------

1,Docker hub 上面查找tomcat镜像:docker search tomcat

2,从docker hub拉取tomcat镜像到本地:docker pull tomcat:1,官网命令2拉取完成

3,docker images 查看是否有拉取到的tomcat

               

           

使用tomcat镜像创建容器(也叫运行镜像):docker run -it -p 8080:8080 tomcat

-p 主机端口:docker容器端口

-P随机分配端口

i交互

t终端

安装mysql--------------------------

  1. docker hub上面查找mysql镜像

                   

        2.       从docker hub 上(阿里云加速拉取mysql镜像到本地标签为5.6)

                 

        3.       使用mysql5.6镜像创建容器(也叫运行镜像)

                  使用mysql镜像:

                

                

                

            

外部win10也来连接运行在docker上的mysql服务

数据备份

               

      

安装redis

 

  1. 从docker hub上(阿里云加速器)拉取redis镜像到本地标签3,2

Docker pull redis:3.2

2.          使用redis3.2镜像创建容器(也叫运行镜像)

               

             使用镜像

              

             

             

              

              

第八步:本地镜像发布到阿里云:

本地镜像发布到阿里云流程

                           

             

镜像的生成方法

1,前面的dockerfile

2,从容器创建一个新的镜像docker commit[OPTIONS] 容器ID[REPOSITORY[:TAG]]

                 

               将本地镜像推送到阿里云

                   

                   1,

                     3,

                     

                    

                     

将阿里云上的镜像下载到本地

Centos7安装

                      

             

1,

2,cat /ect/redhat-release

3,centos7能上外网;yum -y install gcc;yum -y install gcc-c++;

4,

           5,6, 

                    

           镜像换成下面的

                      

             

7,yum makecache fast

8,yum -y install docker-ce

9,systemctl start docker

10,Docker run hello-world

Docker images

11,

               

               12,

                 

总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

猜你喜欢

转载自blog.csdn.net/qq_36774734/article/details/112465192
6.8