docker笔记

docker 三要素:
    镜像(images):
        只读模板,用于创建docker容器。一个镜像可以创建多个容器
        
    容器(container):
        独立运行的一个或一组应用。是用镜像创建的运行实例,每个容器都是相互隔离的。
        
        
    仓库:
        集中存放镜像文件的地方。仓库分为公开仓库和私有仓库
        最大公开仓库:Docker Hub https://hub.docker.com
        仓库和仓库注册服务器的区别:
            仓库注册服务器:放置多个仓库,每个仓库中包含多个镜像,每个镜像有不同的标签。
    
    
    阿里云镜像加速:
        进入阿里云容器镜像服务中的镜像加速器,选择相应的系统。复制加速地址。
        
        设置本机docker加速配置:
            1. vim /etc/docker/daemon.json
            
            2.把阿里云中的配置案例复制下来,修改其中的配置信息:
                例如:
                    {
                        "registry-mirrors": ["复制的个人加速地址"]
                    }
                    
            3.重新加载:systemctl daemon-reload
            
            4.重启docker:systemctl restart docker
            
            5.查看docker在本机的进程信息:ps -ef|grep docker


    docker命令:
        
        帮助命令:
            
            docker version
                说明: 
                    查看docker版本
            
            docker info
                说明: 
                    查看docker信息            
            
            docker --help
                说明: 
                    查看docker的帮助

        镜像命令:
            docker images
                说明: 
                    查看本地所有镜像
                    PEPOSITORY:镜像仓库源
                    TAG:镜像标签
                    IMAGE ID:镜像id
                    CREATE:镜像创建时间
                    SIZE:镜像大小
                
                参数:
                    -a:列出班底所有镜像(包括中间映像层)
                    -q:只显示镜像ID
                    --digests:显示镜像的摘要信息
                    --no-trunc:显示完整镜像信息
                
            docker search [参数] 镜像名
                说明: 
                    查询镜像
                    
                参数:
                    -s:收藏数不小于指定值的镜像
                    --automated:只列出automated build类型的镜像
                    --no-trunc:显示完整镜像信息

            docker push 镜像名[:TAG]
                说明: 
                    下载镜像
                    
                参数:
                    -s:收藏数不小于指定值的镜像
                    --automated:只列出automated build类型的镜像
                    --no-trunc:显示完整镜像信息

            docker rmi [参数] 镜像名1[:TAG] 镜像名2[:TAG]...
                说明: 
                    删除一个或多个镜像
                    
                参数:
                    -f:强制删除

            docker rmi [参数] $(docker images -qa)
                说明: 
                    删除全部镜像
                    
                参数:
                    -f:强制删除


            
                

docker
    组成:
        docker client 客户端
        docker daemon   守护进程
        docker image 镜像
        docker container 容器
        
    基本操作:
        docker inspect 镜像名
            说明:
                查看镜像名的配置
        
        docker start [-i] 镜像名
            说明:
                启动镜像,-i参数是以交互式启动
                
        docker attach 镜像名
            说明:
                进入正在运行的镜像
                
                
        netstat  -anp  |grep 端口号
            说明:
                查看端口占用
     
     
    守护式进程:
        运行:
            docker run -i -t 镜像名 /bin/bash
            ctrl+p ctrl+q 退出交互式容器,但后台还继续运行
            
        查看运行镜像中的进程:
            docker top 镜像名
        
        在运行的镜像中启动新进程:
            docker exec [-d] [-i] [-t] 镜像名 [command] [arg....]
        
        停止守护容器:
            docker stop  镜像名
            docker kill 镜像名
            
    
    容器端口映射:
        docker run [-P|-p] -i -t 镜像名
            -P:publish-all=true | false (默认) 暴露所有端口
            -p:publish=[] 指定端口映射
                格式:
                    1.指定容器端口:
                        docker run -p 端口号 -i -t  镜像名 /bin/bash
                    
                    2.主机端口:容器端口
                        docker run -p 主机端口:容器端口 -i -t  镜像名 /bin/bash
                    
                    3.ip地址::容器端口
                        docker run -p ip地址::容器端口 -i -t  镜像名 /bin/bash
                    
                    4.ip地址:主机端口:容器端口
                        docker run -p ip地址:主机端口:容器端口 -i -t  镜像名 /bin/bash
            
            
            
    
    
docker run [参数] 镜像名 [command] [arg...]
	说明:
		option:
			--name="容器新名字"  :为容器指定一个名称
			-d:后台运行容器,并返回容器id,启动守护式容器(ps -a 查不出 此类的)
			-i:以交互式模式运行容器,通常与-t同时使用
			-t:为容器重新分配一个伪输入终端,通常与-i使用
			-P(大写):随机端口映射,通常与-t使用
			-p(小写):指定端口映射,有以下四种方式:
				1.	ip:主机端口 容器端口
				2.	ip:容器端口
				3.	主机端口:容器端口
				4. 	容器端口
			
Ctrl p + q:退出容器,但后台继续运行容器
eixt:退出容器,容器停止运行

docker kill 容器名称
	说明:
		强制停止容器的运行
				

docker logs -f -t --tail 容器id
	说明:	
		查看容器运行日志
		-f:跟随最新的日志打印
		-t:加入时间戳
		--tail:数字,显示最后多少条
		
docker top 容器id
	说明:	
		查看容器内运行的进程
		
		

docker inspect 容器id
	说明:	
		查看容器内部细节 


docker attach 容器id
	说明:
		直接进入容器启动命令的终端,不会启动新的进程

docker exec -it 容器id bashshell
	说明:
		在容器中打开新的终端,并启动新的进程
		

docker cp 容器id:容器内路径   目的主机的路径
	说明:
		从容器中拷贝文件到主机上




docker镜像
	联合文件系统:
		分层,轻量级高性能的文件系统,对文件系统的修改作为一次提交来一层层的叠加
		
		特性:
			一次同时加载多个文件系统
			
	镜像都是只读的
	
	docker commit [参数] 镜像id 要创建的目标镜像名:[标签名]
		说明:	
			提交容器副本使之成为一个新的镜像
		
		参数:
			-m:提交的描述信息
			-a:作者

		例如:
			docker commit -a="zhangxiaosan" -m="it is tomcat which is haven't doct" e9bd0c5f0a37 zhangxiaosan/tomcat:9


docker容器数据卷
	做数据持久化+容器数据共享
	
	直接命令添加主机和容器文件夹绑定
		docker run -it -v /主机绝对路径目录:/容器内目录:[权限] 镜像名
		权限:
			ro:read only 只读
			wo:wirte only 只写


dockerFile
	镜像的构建文件,是由命令和参数组成的脚本
	
	构建镜像
		docker build -f Dockerfile所在目录 -t 构建的镜像标识/构建的镜像名
		例如:	
			docker build -f /mydocker/Dockerfile -t zhangxiaosan/myDockerfileDemo1

	dockerFile解析过程:
		注意:
			1.每条保留字指令必须为大写且之后跟有至少一个参数
			2.指令从上往下顺序执行
			3.#表示注解
			4.每条指令都会创建一个新的镜像层,并对镜像进行提交
		过程:
			1.docker从基础镜像运行一个容器
			2.执行一条指令并对容器进行修改
			3.执行类似的docker commit 的操作提交一个新的镜像层
			4.docker再基于刚提交的镜像运行一个新的容器
			5.执行dockerFile中的下一条指令,直到所有的指令都执行完成

	dockerFile保留字指令:
		FROM:
			基础镜像,当前新的镜像是基于哪个镜像
		
		MAINTAINER:
			镜像维护者的姓名和邮箱
		
		RUN:
			容器构建时需要运行的命令
		
		EXPOSE:
			当前容器暴露的端口号
		
		WORKDIR:
			指定容器创建后,终端登录进来的工作目录,未指定时工作目录为根目录
			
		ENV:
			用来在构建镜像过程中设计的环境变量
			
		ADD:
			将宿主机目录下的文件拷贝到镜像,且ADD命令会自动处理URL和解压tar压缩包
		
		COPY:
			类似ADD,拷贝镜像或目录到镜像中。
			将从构建上下文目录中<源路径>的文件或目录复制到新一层的镜像内<目标路径>的位置
			用法:
				方式1.COPY src dest
				方式2.COPY ["src","dest"]
		
		VOLUME:
			容器数据卷,用于保存数据和持久化工作
			
		CMD:
			指定一个容器启动时需要运行的命令。
			Dockerfile中可以有多个CMD指令,但只有最后一个生效,CMD会被docker run 之后的参数替换

		ENTRYPOINT:
			指定一个容器启动时需要运行的命令。
			与CMD类似,可以有多个,但是不会像CDM会被docker run 之后的参数替换,而是被追加。
			
		ONBUILD:
			当构建一个被继承的Dockerfile时运行命令,父镜像在被子镜像继承之后父镜像的ONBUILD被触发
			
	构建自定义的DockerFile镜像
		docker build -f DockerFile路径 -t 新镜像名:标签版本 .
		说明:
			末尾的点 . 代表当前的路径
		例如:docker build -f DockerFile_MyCenterOS -t mycenteros:1.0 .
			
	案例1:
		自定义centeros
			dockerfile(DockerFile_MyCenterOS):
				FROM centos
				
				#设置环境变量
				ENV MYPATH /tmp
				#设置默认工作目录
				WORKDIR $MYPATH
				
				#运行安装vim和net-tools
				RUN yum -y install vim
				RUN yum -y install net-tools
				
				#暴露端口
				EXPOSE 80
				
				CMD bin/bash
				
			
容器间数据共享
	docker run -it -name 容器1别名  --volumes-from -name 容器2别名 容器2 
	实现数据共享,
	例如:	
		容器2,3继承容器1
		删除容器1,容器2,3数据依然存在,且容器2,3数据依然共享

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小张帅三代

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

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

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

打赏作者

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

抵扣说明:

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

余额充值