Docker学习笔记

本文介绍了Docker的发展原因和优势,强调了它相对于虚拟机的轻量级特性。Docker通过镜像、容器和仓库构成其核心组件,简化了应用的部署和运维。文章详细阐述了Docker的安装、镜像操作命令、容器管理和数据持久化方法,并举例说明了如何使用Docker运行Nginx和MySQL。此外,还提到了Dockerfile用于构建镜像以及容器网络和数据共享的实现。
摘要由CSDN通过智能技术生成

1、Docker发展原因:
(1)以前开发人员开发项目,环境由运维部署,现在有开发人员开发并打包环境上传
(2)很多集群环境很难配置
Docker过程:
java-jar(环境)-打包项目带上环境镜像-Docker仓库(商店)-下载发布的镜像-直接运行即可
2、Docker是基于Go语言开发的。(可以把它看做一个简易的虚拟机,linux系统下)
3、虚拟机技术的缺点:
资源占用十分多、冗余步骤多、启动很慢。
4、Docker和虚拟机技术的不同:
(1)传统虚拟机:虚拟出一条惊险、运行一个完整的操作系统,然后在这个系统上安装和运行软件。
(2)容器内的应用直接运行在宿主机的内容,容器是没有自己的内核的,也没有虚拟硬件,所以就轻便了
(3)每个容器是互相隔离,每个容器内都有一个属于自己的文件系统,互不影响
5、DevOps(开发、运维)优点:
(1)应用更快速的交付和部署
传统:一堆帮助文档,安装程序;Docker:一键运行打包镜像,发布测试
(2)更便捷的升级和扩容
项目打包为一个镜像,扩展 服务器A、B
(3)更简单的系统运维,在容器化之后,我们的开发测试环境都是高度一致的
(4)更高效的计算资源利用:
Docker是内核级别的虚拟化,可以在一个物理机上运行很多的容器实例,服务器的性能可以压缩到极致。
6、docker的基本组成
(1)镜像(image):相当于模板,可以通过这个模板来创建容器服务,通过这个镜像可以创建多个容器(最终服务运行或项目运行都是在容器中的)
(2)容器(container):Docker利用容器技术,独立运行一个或一组应用,通过镜像来创建,启动停止删除基本命令,目前就可以把这个容器理解为一个简易的linux系统。
(3)仓库(repository):仓库就是存放镜像的地方,仓库分为公有和私有,Docker Hub,阿里云…都有容器服务
7、安装Docker:CentOS,使用Xshell连接远程服务器进行操作。

8、docker镜像操作命令
docker version#显示版本信息
docker info #显示系统信息,包括镜像和容器的数量
docker 命令 --help #万能命令
docker images#查看所有本地的主机上的镜像
#REPOSITORY 仓库的镜像源
#TAG 镜像的标签
#IMAGE ID 镜像的ID
#CREATED 镜像的创建时间
#SIZE 镜像的大小
可选项
-a --all #列出所有镜像
-q --quiet #只显示镜像的ID

docker search搜索镜像
可选项
–filter=STARS=3000#搜索出来的镜像就是STARS大于3000的

docker pull 镜像名[:tag]
#下载镜像,如果不写tag,默认就是下载最新版的

docker rmi -f 容器ID
#删除镜像

docker rmi -f $(docker images -aq)
docker ps -a -q|xargs docker rm
#删除全部的容器

9、docker常见命令
(1)新建容器并启动
docker pull cenos
docker run [可选参数] image
#参数说明
–name=“Name” 容器名字Tomcat01 Tomcat02 ,用来区分容器
-d 后台方式运行
-it 使用交互式方式运行,进入容器查看内容
-p 主机端口:容器端口 指定容器的端口,-p 8080:8080
-p 随机指定端口
#测试,启动并进入容器
docker run -it centos /bin/bash
ls查看容器内的centos

#exit退出容器并停止
#ctrl+P+Q容器不停止退出

#列出运行的容器
docker ps
-a 列出当前正在运行的容器,带出历史运行过的容器
-n=数字 显示最近创建的容器
-q 只显示容器的编号

#启动和停止容器的操作
docker start 容器id #启动容器
docker restart 容器id #重启容器
docker stopt 容器id #停止当前正在运行的容器
docker kill 容器id #强制停止当前容器

#后台启动容器
docker run -d 镜像名

#查看日志
docker logs -f -t --tail
#显示日志
-tf #显示日志
–tail number #显示日志条数

#查看容器的进程信息
docker top 容器ID

#查看镜像的元数据(显示很多它支持的命令)
docker inspect 容器id

#容器通常使用后台运行,需要进入容器,修改一些配置
docker exec -it 容器id /bin/bash
docker attach 容器id
区别:
docker exec 进入容器后开启一个新的终端,可以再里面操作(常用)
docker attach 进入容器正在执行的终端,不会启动新的进程

#从容器内将文件拷贝到主机上
docker cp 容器ID:/home/test.java/home

10、docker中的Nginx镜像(念法:ngks),nginx是一个代理,端口默认是80
docker run -d -p 80:80 --name nginx nginx#启动
11、docker中的es镜像,ES是一个高度可伸缩的开源的全文检索和分析引擎,它允许你以近实时的方式快速存储、搜索、分析大量数据,ES是基于Lucence开发,隐藏其复杂性,提供了简单易用的restful api接口、Java api接口 为什么是近实时,是因为从写入数据到数据可以被搜索到有一个小延迟(大概1秒),基于es执行搜索和分析可以达到秒级”,es非常耗内存。

12、portainer:Docker图像化界面管理工具,提供一个后台面板供我们使用。
13、镜像:一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容。
如何得到镜像:
(1)从远程仓库下载
(2)朋友拷贝
(3)自己制作一个镜像DockerFile
14、commit镜像
docker commit提交容器作为一个新的副本
docker commit -m=“提交的描述信息” -a=“作者” 容器id 目标镜像名,[TAG]

15、容器数据卷:容器的持久和同步操作,容器间也可以数据共享
(如果数据都在容器中,那么容器删除,数据就会丢失,所以docker容器中产生的数据,要同步到本地,即卷技术)
每次改nginx配置文件,都需要进入容器内部,所以可在在容器外提供一个映射路径,达到在容器修改文件名,容器内部就可以自动修改,-v数据卷,挂载起来,以后修改只需要在本地内修改即可,容器会自动更新。
请添加图片描述

16、mysql的数据持久化问题,
#获取镜像
docker pull mysql:5.7
#运行容器,需要做数据挂载
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-p -d mysql:tag
#解释
-d 后台运行
-p 端口映射
-v 卷挂载
-e 环境配置
–name 容器名字

17、具名挂载、匿名挂载
#匿名挂载(-v 只写了容器内的路径,没有容器外的路径)
docker run -d -p --name nginx01 -v /etc/nginx ngnix
#具名挂载:能够很方便的找到这个卷
docker run -d -p --name nginx02 -v juming-nginx:/etc/nginx nginx
指定路径挂载、具名挂载和匿名挂载的区别:
-v 容器内路径 #匿名挂载
-v 卷名:容器内路径 #具名挂载
-v /宿主机路径::容器内路径 #指定路径挂载

#ro rw改变读写权限(ro只读,只能通过宿主机概念,容器内部无法改变)
docker run -d -p --name nginx02 -v juming-nginx:/etc/nginx:ro nginx

18、多个mysql实现数据共享
–volumes-from

20、dockerfile 是用来构建docker镜像的文件,命令参数脚本
通过这个脚本可以生成镜像,镜像是一层一层的,脚本一个一个的命令,每个命令都是一层
构建步骤:
(1)编写一个dockerfile文件
(2)docker build 构建成为一个镜像
(3)docker run 运行镜像
(4)docker push 发布镜像(dockerhub、阿里云仓库)

21、dockerfile构建过程
创建一个dockerfile文件
FROM centos
VOLUME[“volume01”,“volume02”]
CMD echo “----end----”
CMD /bin/bash

22、dockerimages:通过dockerfile构建成的镜像,最终发布和运行的产品,原来是jar war
docker容器:容器就是镜像运行起来提供服务器

23、dockerfile的指令
请添加图片描述

24、CMD和ENTRYPOINT区别
CMD 指定这个容器启动时要运行的命令,只有最后一个会生效
ENTRYPOINT 指定这个容器启动时要运行的命令,可以追加命令

25、发布自己的镜像:
docker push kuangshen/diytomcat:01

26、Docker0网络
#查看容器内部网络地址 ip addr ,发现容器启动时候回得到一个eth0@if262 的ip地址,docker分配的。
每启动一个docker容器,docker就会给docker容器分配一个ip,我们只要安装了docker,就会有一个网卡docker0,桥接模式,使用的是evth-pair技术。
evth-pair就是一对虚拟设备接口,它们都是成对出现的,一端连着协议,一段彼此相连。所以它充当着桥梁,连接各种虚拟网络设备。

27、容器互联–link
28、请添加图片描述请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值