入门Docker

网友投稿 580 2022-11-17

入门Docker

入门Docker

Docker简介(构建、安装、运行、任何应用在任何地点) 是什么   解决了运行环境和配置问题软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术   Docker三要素:仓库Docker Hub存放镜像、镜像、容器 能干嘛   有了容器,就可以将软件运行所需的资源环境打包到一个隔离的容器中   容器内没有自己的内核,而且也没有进行硬件虚拟,因此容器要比传统虚拟机更轻便   缩小版浓缩版Linux系统   虚拟机的缺点:资源占用多、冗余步骤多、启动慢,   Linux容器不是模拟一个完整操作系统,而是对进程进行隔离, 去哪下

Docker安装   前提条件:运行在CentOS-7上,要求系统为64位,系统内核版本为3.10以上 查看版本:uname -r   运行在CentOS-6.5或更高的版本上,要求系统为64,内核版本为2.6.32-431或更高版本 Docker架构   Client Containers / Images Registry(阿里云、网易云)   docker build 容器Redis 镜像含 仓库中含   docker pull 容器Nginx Redis、Nginx Redis、Nging   docker run 容器Rs+Nx 镜像 镜像/容器/仓库   镜像就是一个只读的模板,镜像可以创建多个Docker容器,如:类和对象/容器好比是镜像的一个个实例   容器可以看做简易版Linux环境(中包括root用户权限、进程空间、用户空间、网络空间)和运行在其中的应用程序;Docker版CentOS仅为170M,只用了Linux内核   仓库分为公开库和私有库两种形式,国内公开库一般使用阿里云和网易云   有镜像才能创建容器,这是根本 安装步骤(CentOS-6.8)   yum install -y epel-release   yum install -y docker-io   安装后的配置文件:/etc/sysconfig/docker   启动Docker后台服务:service docker start   验证:docker version

安装步骤(CentOS-7)

docker run hello-world运行后会提示:Pulling from hello-world表示:本地没有改镜像,会自动-hello-world镜像并在容器内运行。 Docker是怎么工作的?   Docker是Client-Server结构的,Docker守护进程运行在主机上,   通过Socket连接从客户端访问守护进程,接收命令并管理运行在主机上的容器

为什么Docker运行比vm快?   镜像较大 镜像小   面向硬件的 面向软件的   虚拟机是分钟级的,Docker是秒级的不需要硬件虚拟,而不像vm需要处理cpu/内存消耗 Docker常用命令   技术都是想通的、万变不离其宗   命令分类:镜像命令、容器命令、帮助命令 帮助命令:   docker version 版本   docker info 版本描述   docker --help 帮助命令   (Linux:man帮助、marik创建目录、touch创建文件、pwd当前位置) 镜像命令(好几层!,分层)   docker images 列出本地所有镜像:REPOSITORY:标识镜像的仓库源,TAG镜像的标签,IMAGEID镜像ID,CREATED镜像创建时间,SIZE:镜像大小   -a 列出本地所有镜像的(中间层)   -q 只显示镜像ID   --digests   --no-trunc、   docker search 某个xxx镜像名称:如tomcat   -s 30 tomcat 过滤列出超过点赞数量的   docker pull tomcat -下来   docker rmi -f hello-world:3.2 (-f:强制删除)   docker rmi -f hello-world nginx (-f:删除多个) 容器命令   docker run -it centos 新建并启动交互式容器     --name mycentos0115 centos 容器别名     -i 以交互模式运行容器     -t 为容器分配终端, 通常和-i同时使用     -d 后台运行容器,返回容器ID,即为守护式容器     -P 随机端口映射     -p 指定端口映射,有以下四种格式       ip:hostPort:containerPort       ip::containerPort       hostPort:containerPort       containerPort   docker ps 查看已启动的容器     -a 历史运行记录     -l 上一次运行的     -n 3 上3次运行的     -q 只显示容器编号   exit 容器退出停止   Ctrl+P+Q 容器退出不停止   docker start 容器ID编号, 启动容器

docker restart 容器ID编号,重启容器   docker stop 容器ID编号,关闭容器   docker kill 容器ID编号,强制关闭容器

docker rm 容器ID编号,删除容器

重点   docker run -d centos 启动容器守护进程 (有些需要运行后台或前台,Docker容器后台运行,必须有一个前台进程)     docker run -d centos /bin/sh -c"while true;do echo hello zzyy;sleep 2;done"     docker logs -t -f --tail 3 容器ID编号, 查看容器日志     docker top 容器ID编号,查看容器内运行的进程

Docker容器数据卷(-v 添加容器卷)     做持久化,容器间的共享数据,类似rdb,aof   特点:     数据卷可在容器之间共享或重用数据     卷中的更改可以直接生效     数据卷中的更改不会包含在镜像的更新中     数据卷的生命周期一直持续到没有容器使用它为止     容器内添加   命令:     1.docker run -it -v /宿主机绝对路径目录:/容器内目录 镜像名     docker run -it -v /myDataVolume:/dataVolumeContainer centos     2.查看数据卷是否挂载成功     docker inspect 容器ID编号     3.容器和宿主机之间数据共享     vi host.txt,同步(容器)也会创建     4.容器停止退出后,主机修改后数据是否同步     exit     vi host1.txt     是同步 5.命令(带权限)   docker run -it -v /宿主机绝对路径目录:/容器内目录:ro 镜像名   docker run -it -v /myDataVolume:/dataVolumeContainer:ro centos:只允许容器读,不可写   JavaEE Hello.java ==> Hello.class   Docker images ==> DockerFile

DockerFile方式 添加 容器数据卷   1.根目录下新建mydocker文件夹进入   2.可在Dockerfile中使用"VOLUME指令"来给镜像添加一个或多个数据卷   3.DockerFile构建     # volume test     FROM centos     VOLUME ["/dataVolumeContainer1","/dataVolumeContainer2"]     CMD echo "finished,----------success1" 打印     CMD /bin/bash   4.build后生成镜像     docker build -f /mydocker/Dockerfile -t zzyy/centos .     docker images   5.run容器     docker run -it zzyy/centos     (通过DockerFile方式没有指定宿主机目录也会默认有)     docker ps     docker inspect 容器ID编号     vi host1.txt 数据卷容器(容器间传递共享--volumes-from)   容器之间配置信息的传递,数据卷的生命周期一直持续到没有容器使用它为止!

docker run -it --name dc01 zzyy/centos(//zzyy/centos自己的新建的容器)   docker run -it --name dc02 --volumes-from dc01 zzyy/centos

docker run -it --name dc03 --volumes-from dc01 zzyy/centos

docker attach dc01   pwd   ll   父到子容器,子到父容器都可共享

DockerFile体系结构(保留字指令)   FROM 继承、当前镜像基于那个镜像   MAINTAINER 描述   RUN 容器构建时需要运行的命令,如要需-的命令   EXPOSE 容器对外暴露的端口   WORKDIR 启动时容器时的根目录,默认是:/ 根目录(pwd)   ENV 设置环境变量   ADD 拷贝压缩文件   COPY 拷贝   VOLUME 创建容器数据卷、用于数据保存/持久化工作   CMD 容器启动时运行的命令(可有多个、但只最后一个生效)   ENTRYPOINT 和CMD类似、CMD在人工写了时候会被覆盖、ENTRYPOINT会追加并不覆盖   ONBUILD 类似于触发器   自定义镜像(案例)   编写 from centos   MAINTAINER 王路凯 18303051935@163.com

ENV mypath /tmp   Workdir $mypath

RUN yum -y install vim   RUN yum -y install net-tools

Expose 80   CMD "bin/bash"   build   docker build -f /mydocker/Dockerfile2 -t mycentos:1.3   docker images   run   docker run -it mycentos:1.3   -ls (会覆盖CMD)

查看镜像生成时变更历史:  docker history 容器ID编号

案例定义tomcat9镜像   留给自己将来的作业!!!   --privileged=true//写软权限不够的话加   docker exec 容器ID编号 java -version

主机中改了项目,容器中的web项目也改(通过容器卷)   push 没讲呢(发布阿里云用)

Docker常用安装   自己安装Tomcat   自己安装Mysql   自己安装Redis

本地镜像发布到阿里云

创建镜像两种方式:Dockerfile ,commit   找脑图!

------------------------------------------------------------------------------

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

上一篇:Kubernetes之无头服务(headless)
下一篇:Kubernetes之存储
相关文章

 发表评论

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