docker入门精简版
Docker基础:https://blog.csdn.net/huangjhai/article/details/118854733
目录:
1.镜像
2.容器
3.数据持久化
4.网络
5.容器脚本
6.项目脚本
第一关:镜像和容器
名词:
镜像:服务样品
仓库:存放镜像的远程服务器
容器:实际的服务应用
帮助:https://blog.csdn.net/qq_45637155/article/details/109901965
镜像常用:
查看:docker images
搜索:docker search
下载:docker pull
删除:docker rmi
容器常用:
生成并运行:docker run 镜像名 --name="自定义名" [如果容器什么都不做,容易被自动停掉]
列出容器:docker ps -a
删除容器:docker rm 容器id
操作容器:docker start/restart/stop/kill 容器id
跳出:Ctrl + p + q
退出:exit
容器交互:
进入:docker exec -it 容器id /bin/bash
进入:docker attach 容器id
文件贴出:docker cp 容器id:文件路径 目标路径
docker相关:
运行状态:docker stats
容器信息:docker inspect 容器id
挂载信息:docker volume ls
联合文件系统:镜像文件分层处理,底层共用。
自制镜像:底层都是共用的,只读的。自定义的部分都是在顶端一层累加的。
提交镜像:docker commit -a="" -m="" 容器id 镜像名:版本号
[将一个修改过的docker容器做成images,存放在本地]
第二关:数据与脚本
容器数据卷:
匿名挂载:docker run -v 主机目录:容器目录
docker run -d -v /html:/usr/share/nginx/html --name nginx01 -p 3335:80 nginx
具名挂载[推荐]:docker run -v 卷名:容器目录 [区别:是不是/开头]
卷名地址:/var/lib/docker/volumes/卷名
跟随别人的卷:相互共享-v信息,并无关系
--volumes-from 容器名
DockerFile:构建docker镜像的脚本
步骤:
1.编写脚本文件
dockerfile{
FROM 基础镜像名
MAINTAINER author<xxx@qq.com>
#自动解压放在某处
ADD xxx.tar.gz /path
COPY xxx.jar /path/xxx.jar
ENV MYPATH /usr/local
WORKDIR $MYPATH
VOLUME ["/var/www", "/var/log/apache2", "/etc/apache2"]
RUN yum -y install vim
RUN yum -y install net-tools
EXPOSE 80 443
CMD ["--server.port=8080"]
ENTRYPOINT ["java","-jar","/app.jar"]
}
照抄脚本:docker history 镜像id
CMD与ENTRYPOINT:
都可以指定shell或exec函数调用的方式执行命令;
当存在多个CMD指令或ENTRYPOINT指令时,只有最后一个生效;
差异1:CMD指令指定的容器启动时命令可以被docker run指定的命令覆盖,而ENTRYPOINT指令指定的命令不能被覆盖,而是将docker run指定的参数当做ENTRYPOINT指定命令的参数。
差异2:CMD指令可以为ENTRYPOINT指令设置默认参数,而且可以被docker run指定的参数覆盖;
2.构建成镜像
docker build -f dockerfile.path -t images.name:tags 目标路径[通常是个.]
如果脚本名叫 Dockerfile,官方指定名的话。
docker build -t images.name:tags .[*重点*]
3.运行镜像:run
4.发布镜像:push
总结:
docker build 脚本构建镜像
docker run 运行镜像
docker start/stop/restart 操作镜像
docker commit 容器构建镜像
docker save/load 镜像打包
docker push/pull 镜像上传
第三关:网络
docker0:linux下ip addr,有个叫docker0的网卡
安装docker后,会新增一个docker0的网卡
每个docker容器运行后,容器内会有个分配的网卡,容器外会同时多出一个对应容器内的新网卡。
docker0,和容器内虚拟的网卡都分配在同一内网段。
问题:内网ip是分配的,解决容器内相互调用时ip的问题。
思路:springcloud中是使用服务名称代替ip的
容器互联:--link
docker run -d -P --name tomcat03 --link tomcat02 tomcat
缺点:反向不通,他的本质是改变了hosts文件[大雾],写死的,重新分配就没了。
自定义网络:抛弃docker0~!
查看docker网络:
docker network ls
创建一个内网[推荐]:
docker network create
--driver bridge
--subnet 192.168.0.0/16
--gateway 192.168.0.1 mynet
使用自创内网:
docker run -d -P --name tomcat03 --net mynet tomcat
docker exec -it 容器 ping 容器名
使用自创内网,可以利用容器名进行通讯。
多个内网,可以隔离不同集群内网
内网间通讯:将容器加入某个内网,容器两个ip
docker network connect [参数] 内网名 容器名
第四关:容器组团
DockerCompose:编写一次性启动多个容器的yaml文件
概念:
services:服务,指容器
团队成员:
Dockerfile:原来就有的
docker-compose:编写的,build当前文件夹里的Dockerfile
文件:cp过去,或者add过去
操作:在docker-compose文件上面,执行docker-compose up/down
Yaml:
#版本
version:
#服务
services:
服务1:名
build
images
network
...
服务2:名
#其他配置
volumes:
networks:
configs:
docker入门精简版相关推荐
- Docker(精简版)
文章目录 Docker初级篇 1. docker是什么 2. docker思想 3. 安装 4. 镜像 4. 镜像进阶 docker **tag指令** 5. 容器 5. 容器进阶 6. 仓库 1. ...
- Docker入门实战大全终极版
Docker入门 学习推荐 哔哩哔哩 狂神说java 本文主要学习大纲 Docker组成 Docker基本操作 Docker安装 卸载Docker 阿里云镜像加速 Docker run 运行流程图 底 ...
- Docker超详细版教程通俗易懂 -之- 入门篇
前言 学习Docker,你可以熟练的操作命令,能够把你的项目构建成Docker镜像! 是后端开发人员必备的技能!下面是自己的学习笔记,希望能帮助到需要的你! 特别感谢哔哩哔哩狂神:[狂神说Java]D ...
- 【Docker技术入门与实践(第2版)】Docker入门_学习笔记
第一章 1 Docker入门须知 1.1 Docker基本知识 Docker是基于Go语言实现的开源容器项目,诞生于2013年年初,最初发 起者是dotCloud公司.Docker自开源后受到广泛的关 ...
- Docker入门学习笔记(狂神版)
下述笔记是自己花一天时间看B站狂神说Docker视频的笔记,下列的笔记是根据自己的实践的记录下来的,若想细学掌握Docker建议自行观看(<Docker入门到精通>),去观看狂胜的视频记得 ...
- 【2018版】Docker入门视频课程-汤小洋-专题视频课程
[2018版]Docker入门视频课程-217人已学习 课程介绍 本课程以通俗易懂的方式讲解Docker容器技术,适合初学者的教程,让你少走弯路! 掌握Docker容器技术,教学全程采 ...
- [视频改]Docker技术从0到1全覆盖 docker入门向 文字版
原视频:https://www.bilibili.com/video/BV16q4y1A74h 作者:智慧少年Xenny 简介:这是一个关于docker使用的教学. 包含 docker基础使用 doc ...
- TMF单片机开发框架精简版入门
前言 无论在面向过程,还是面向对象的开发过程中,都要借助自顶向下模块化思想,按照合适的粒度,把业务需求分解成若干功能单元,然后这些功能单元转化成函数以供调用.当业务比较简单,例如某个按键被按下,我们直 ...
- 微软官方XP精简版 FLP入门版SP3截图
导读: Windows Fundamentals for Legacy PCs作为官方发布的精简版Windows XP,与XP SP2基于相同的内核. 所以它同样适用于 ...
最新文章
- IT人请注意你的身体![转]
- java导出excel(easypoi)
- SAP QM QM11显示Quality Notification List
- 图灵奖公布:高性能计算先驱、为超算铺平道路的Jack Dongarra获奖
- mongodb 导出指定数据库文件大小_大数据技术之将mongodb 数据指定字段导出,然后指定字段导入mysql 实例 及相关问题解决...
- JavaScript有限状态机实现方式
- sql查看数据库线程数_SQL Server始终在可用性组数据库上的最大辅助线程
- IIS上部署网站问题总结
- 协程asyncio_迭代器,生成器,协程
- Python雷电小游戏、战机小游戏源代码源程序
- java opts配置_JAVA_OPTS设置参数
- 系统设计师之路·第二节·看山是山,看水是水——设计师的三种境界
- The Windows account sa does not exist and cannot be provisioned as a SQL Server system administrator
- 如何使用注册表在Win10中调整屏幕亮度
- 黑客利用WordPress 插件暗中建立后门网站
- html5拖放详解,HTML5拖拽/拖放(drag drop)详解
- 基于微信小程序的在线商城设计(后台PHP)
- [DeploymentService:290066]Error occurred while downloading files from admin server for deployment re
- 看完不会的来打我!Mycat和Mysql搭建高可用企业数据库集群
- Java扫雷游戏项目-1小时编写出扫雷游戏
热门文章
- 无状态密码管理器Heimdallr
- 爱情是一个神话,流传于他人,你——并不一定能偶遇。
- 用Windows Media Service 9 实现VOD广播和点播系统(上)
- 【SpringBoot商城秒杀系统秒杀优化学习笔记】
- 百炼智能店店通数据:2020年下半年餐饮行业闭店率超30%
- 为何float有效位数只有7位?
- c语言 float定义nan,nan - [ C语言中文开发手册 ] - 在线原生手册 - php中文网
- 【转】一位36岁程序员的困惑
- UA OPTI570 量子力学31 氢原子Fine Structure简介
- 2019新展望| 掘金年度征文