1,你常用的docker命令有哪些?
拉取镜像:docker pull IMAGE(镜像名) 例如:docker pull nginx 部署启动容器:docker run --name NAME(容器名) -p PORTS(要使用的端口) IMAGE(镜像名) 查看容器的运行状态:docker ps -a (该命令可以查看容器是否运行,及已创建的容器名称) 进入运行中的容器: docker exec -it CONTAINER_ID/NAME(容器id或者是容器名) bash eg:docker exec -it sc_nginx2 /bin/bash -i :交互式进入容器 -t : 开启一个终端 sc_nginx : 是容器名 /bin/bash : 进入容器的程序 查看docker里有哪些镜像:docker images 删除/启动/停止 容器 :docker rm/start/stop CONTAINER_ID/NAME 启动docker服务:systemctl start docker 设置开机启动:systemctl enable docker2,Dockerfile是什么?Dockerfile里有哪些内容?
Dockerfile 是用来构建自定义镜像的文本文档 Dockerfile 里包含的信息主要有: 基础镜像 镜像元信息 镜像操作指令 容器启动时执行的命令 ----------------------------------------------------------- 具体指令: 1 FROM IMAGE(镜像名):version (版本) 基础镜像 eg: FROM mysql:5.6 eg: FORM python (不指定版本,默认最新版本) 2 ENV 用来设置环境变量 eg:ENV NAME World 3 WORKDIR:用来指定工作目录 eg: WORKDIR /app 4 ADD 用于将本地文件添加到镜像中 eg: ADD ./app 5 CMD 构建容器后执行的命令,即在容器启动时执行的命令 eg: CMD ["python","app.py"] 6 EXPOSE 指定与外界进行交互的端口 eg: EXPOSE 80 7 VOLUME 定义匿名卷 用于创建挂载点 我们可以利用VOLUME 将源代码、数据或其他内容添加到镜像中,而又不需要提交到镜像中,并且可以使多个容器共享这些内容 eg: VOLUME ["/data_flask"] 8 RUN 构建镜像时执行的命令 eg:RUN pip install -i https://pypi.douban.com/simple/ -r requirements.txt退出容器后,通过docker ps 命令查看不到,数据会丢失吗?
可以用 docker ps -a 来查看 如果仅仅是退出容器的话,数据是不会丢失的,重启容器后,数据依然在 如果删除容器的话,但数据做了持久化存储,也不会丢。 容器删除,那数据也会一起被删除docker 的优点
资源隔离:比如限制应用最大内存使用量,或者资源加载隔离等。 低消耗:虚拟化本身带来的损耗需要尽量的低。 Docker 很好的权衡了两者,即拥有不错的资源隔离能力,又有很低的虚拟化开销。docker的应用场景
1 可以简化配置 不同的软件可能需要不同的运行环境,docker可以将运行环境和配置放在代码中,然后部署,同一个docker可以在不同的环境中使用 2. 简化代码流水线(Code Pipeline) 代码从开发者的机器到最终在生产环境上的部署,需要经过很多的中间环境。而每一个中间环境都有自己微小的差别,Docker给应用提供了一个从开发到上线均一致的环境,让代码的流水线变得简单不少。 3. 提高开发效率 这就带来了一些额外的好处:Docker能提升开发者的开发效率,不同的开发环境中,我们都想把两件事做好。一是我们想让开发环境尽量贴近生产环境,二是我们想快速搭建开发环境。理想状态中,要达到第一个目标,我们需要将每一个服务都跑在独立的虚拟机中以便监控生产环境中服务的运行状态。然而,我们却不想每次都需要网络连接,每次重新编译的时候远程连接上去特别麻烦。这就是Docker做的特别好的地方,开发环境的机器通常内存比较小,使用虚拟机的时候,我们经常需要为开发环境的机器加内存,而Docker可以轻易的让几十个服务在Docker中跑起来。 4. 隔离应用 有很多种原因会让你选择在一个机器上运行不同的应用,比如之前提到的提高开发效率的场景等。 5. 整合服务器 正如通过虚拟机来整合多个应用,Docker隔离应用的能力使得Docker可以整合多个服务器以降低成本。由于没有多个操作系统的内存占用,以及能在多个实例之间共享没有使用的内存,Docker可以比虚拟机提供更好的服务器整合解决方案。 6. 调试能力 Docker提供了很多的工具,这些工具不一定只是针对容器,但是却适用于容器。它们提供了很多的功能,包括可以为容器设置检查点、设置版本和查看两个容器之间的差别,这些特性可以帮助调试Bug。 8. 快速部署 在虚拟机之前,引入新的硬件资源需要消耗几天的时间。Docker的虚拟化技术将这个时间降到了几分钟,Docker只是创建一个容器进程而无需启动操作系统,这个过程只需要秒级的时间。这正是Google和Facebook都看重的特性。你可以在数据中心创建销毁资源而无需担心重新启动带来的开销。通常数据中心的资源利用率只有30%,通过使用Docker并进行有效的资源分配可以提高资源的利用率。容器的网络类型有哪些?
bridge :默认 host:容器和宿主机共享ip地址,端口号要区别开 none:只有lo接口,没有其他的接口 container:很多容器共享一个ip地址compose 是什么?
容器编排工具 例如:我们现在需要启动10个容器,其中3个nginx,2个redis,3个mysql,1个zabbix,1个ansible,有些容器需求先启动,有容器需要后启动,在启动的时候是有先后顺序的。 这时候需要批量启动容器,而且启动的时候容器之间是有依赖关系,需要考虑启动顺序的 我们可以将编排的内容全部写到一个yaml文件里,docker 的compose根据这个yaml文件里的安排去启动容器。