docker进阶一些知识
容器修改后的改动需要保存:
docker ps -l 获取新改之后的最新的容器id (正在运行的容器)
docker inspect efe(id) 容器的详细信息
docker commit 698(id) learn/ping 保存对应id的容器
docker镜像环境,每修改一次就会有一次容器的版本号更新,然后通过该id进行commiting就保存了新的镜像
docker push learn/ping 发布自己运行的镜像到官方注册中
查看安装包(查看一个软件安装时所有的安装包)
yum list installed | grep docker
Docker 镜像就是一个只读的模板。
例如:一个镜像可以包含一个完整的 centos操作系统环境,里面仅安装了 Apache 或用户需要的其它应用程序。
镜像可以用来创建 Docker 容器。
镜像 包含 容器 在镜像中创建多个docker容器(镜像中的每一个容器相当于运行一个应用程序的一个vm)
仓库注册 》仓库 》镜像文件|通过tag区分
默认从docker官方下载镜像,不需要命名空间
仓库:集中存放仓库 先要注册,后登录下载(私有仓库)
docker下载数据库镜像运行后就用了数据库容器,在同一台机器下载其他应用/启动后就又有了一个容器
大名:版本别名
link就是容器直接互相通信的 --打通容器间的通信通道
指定容器的启动命令,每个Dockerfile只能有一条CMD命令,如果指定多条,只有最后一条会执行。
用户启动容器时指定运行命令,会覆盖掉Dockerfile中的CMD命令。
用dockerFile创建镜像每运行一个Dockerfile在基础镜像上加一层镜像,(可按层回复,调试)---在from的基础镜像上构建新的docker镜像
一般用这个dockerFile创建镜像的时候就是打包了基础镜像+程序所有需要的中间件容器---即可随时移植部署的成品镜像
包含基础镜像,requiredment.txt 应用程序
docker build -t web . 就用文件创建了成品镜像
DockerCompose---dockerFile组合所有需要的容器后这些容器的启动
一个服务是一个容器
定义所有需要部署的对象,各个对象之间的关系,执行顺序,文件存储位置,验证成功方式
场景:redis容器,tomcat容器,nginx容器,mysql容器,这4个容器的启动是有顺序性的,docker compose就是为了组合启动的,而不是手动来启动。
docker-compose.yml定义dockerfile中需要启动的容器,他们的端口,启动依赖关系
docker-compose up -d(后台启动)
docker swarm 集群管理工具
为了处理只有一台机器的时候,用docker-machine的时候 init manager的同时也生成了一个worker的token
创建doker虚拟机方式:
1,vagrant 创建的虚拟机有docker容器(docker虚拟机)
2,docker-machinal
这两种创建虚拟机的方式都自动带有docker
docker 一个个独立的运行环境---在一个大的服务器上
image---相应软件的数据文件---操作系统镜像(基础镜像),apache,应用程序等软件的镜像,这些镜像可以构成新的组合镜像打包,镜像之间可以通信---类
container---操作系统。一个镜像可以有多个操作系统,一个镜像可以启动多个操作系统---类的对象,一个类多个实例对象即多个容器
通过Image创建的
在Image layer之上建立(实例化)一个container layer(可读写)
类比面向对象,类和实例,容器就是实例,Image就是类
Image负责application的存储和分发(操作系统软件的代码文件)--类,Container(操作系统,软件的实例---可运行)具有实际功能的对象负责运行app
向容器中增加文件,解压文件 ADD and COPY
ENTRTYPOINT 容器启动时运行的命令
CMD 设置容器启动后默认执行的命令和参数
Dockerfile 制造镜像的文件(运行一次创建一层镜像)
DockerCompose 实例化文件中的所有涉及的镜像生成容器对象并运行的文件(组合镜像???)
docker build 建立新的镜像(用dockerFile文件)
将Dockerfile通过的build变成了dockerImage,然后通过run方法,Image转换成了container
docker run 实例化运行镜像对象---容器
docker exec -it c62d9d554853 /bin/bash 进入运行中的容器
docker container start c62d9d554 启动容器