系列文章目录
提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
例如:第一章 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命令
- 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操作补充:
步骤对应上图的数字
-
下载并运行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):-----------
-
先启动一个父容器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----------------------------------
- 编写: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--------------------------
-
docker hub上面查找mysql镜像
2. 从docker hub 上(阿里云加速拉取mysql镜像到本地标签为5.6)
3. 使用mysql5.6镜像创建容器(也叫运行镜像)
使用mysql镜像:
外部win10也来连接运行在docker上的mysql服务
数据备份
安装redis
-
从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提供了大量能使我们快速便捷地处理数据的函数和方法。