1、什么是docker?
Docker是一个开源的应用容器引擎,基于go语言开发。
可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到
任何流行的Linux服务器,也可以实现虚拟化。
2、为什么docker越来越受欢迎
容器化越来越受欢迎,因为容器是:
灵活:即使是最复杂的应用也可以集装箱化。
轻量级:容器利用并共享主机内核。
可互换:您可以即时部署更新和升级。
便携式:您可以在本地构建,部署到云,并在任何地方运行。
3、镜像和容器(contalners)
通过镜像启动一个容器,一个镜像是一个可执行的包,其中包括运行应用程序所需要的所有内容包含代码,运行时间,库、环境变量、和配置文件。
容器是镜像的运行实例,当被运行时有镜像状态和用户进程,可以使用docker ps 查看。
4、虚拟机和容器
容器时在linux上本机运行,并与其他容器共享主机的内核,它运行的一个独立的进程,不占用其他任何可执行文件的内存,非常轻量。
虚拟机运行的是一个完成的操作系统,通过虚拟机管理程序对主机资源进行虚拟访问,相比之下需要的资源更多。
VM(VMware)在宿主机器、宿主机器操作系统的基础上创建虚拟层、虚拟化的操作系统、虚拟化的仓库,然后再安装应用;
Container(Docker容器),在宿主机器、宿主机器操作系统上创建Docker引擎,在引擎的基础上再安装应用。
那么问题来了,没有操作系统,怎么运行程序?
可以在Docker中创建一个Centos的镜像文件,这样就能将Centos系统集成到Docker中,运行的应用就都是Centos的应用
5、了解docker三个重要概念
1)image镜像
docker镜像就是一个只读模板,比如,一个镜像可以包含一个完整的centos,里面仅安装apache或用户的其他应用,镜像可以用来创建docker容器,另外docker提供了一个很简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接从其他人那里下载一个已经做好的镜像来直接使用。
2)container容器
docker利用容器来运行应用,容器是从镜像创建的运行实例,它可以被启动,开始、停止、删除、每个容器都是互相隔离的,保证安全的平台,可以把容器看做是要给简易版的linux环境(包括root用户权限、镜像空间、用户空间和网络空间等)和运行再其中的应用程序
3)repository仓库
仓库是集中存储镜像文件的场所
仓库分为两种,公有参考,和私有仓库,最大的公开仓库是docker Hub,存放了数量庞大的镜像供用户下周,国内的docker pool。
使用上的区别:
Startup:
Docker在宿主机器的操作系统上创建Docker引擎,直接在宿主主机的操作系统上调用硬件资源,而不是虚拟化操作系统和硬件资源,所以操作速度快。
比方:安装一个Centos的虚拟机和拉取一个Docker的Centos镜像文件,运行一下就知道了,区别很明显,虚拟机开一下大概得2分多钟,而Docker只需要几秒钟。
6、Docker常用操作命令
下载镜像:pull
上传镜像:push
导出镜像:save
导入镜像:load
查看容器信息:docker ps
查看镜像列表:docker images
查看镜像制作历史:docker history
查看镜像底层信息:docker inspect
删除本地镜像:docker rmi ##启动容器时删除镜像会提示错误
搜索镜像:docker search
修改镜像名称和标签:docker tag
容器常用命令:
Docker run ##运行
Docker ps ##查看列表 (-a所有容器列表 -aq仅显示容器ID)
Docker stop ##关闭
Docker start ##开启
Docker restart ##重启
Docker inspect ##底层信息
Docker top ##进程列表
Docker rmi ##删除容器 对于正在运行的容器,要关闭容器后再删除。
Docker attach ##进容器,退出会导致容器关闭。
Exec ##进容器,退出不会导致容器关闭。
7、关于宿主机和容器里面目录CP操作方法
docker从容器里面拷文件到宿主机或从宿主机拷文件到docker容器里面
1、从容器里面拷文件到宿主机?
答:在宿主机里面执行以下命令
docker cp 容器名:要拷贝的文件在容器里面的路径 要拷贝到宿主机的相应路径
示例: 假设容器名为testtomcat,要从容器里面拷贝的文件路为:/usr/local/tomcat/webapps/test/js/test.js, 现在要将test.js从容器里面拷到宿主机的/opt路径下面,那么命令应该怎么写呢?
答案:在宿主机上面执行命令
docker cp testtomcat:/usr/local/tomcat/webapps/test/js/test.jsp /opt
2、从宿主机拷文件到容器里面
答:在宿主机里面执行如下命令
docker cp 要拷贝的文件路径 容器名:要拷贝到容器里面对应的路径
3、主机卷的映射及端口映射
将宿主机目录挂载到容器中提供持久化存储
Docker -v(持久化存储) Docker -p(端口映射)
8、使用Dockerfile文件创建一个新的镜像文件
Dockerfile语法格式:
– FROM:基础镜像
– MAINTAINER:镜像创建者信息(说明)
– EXPOSE:开放的端口
– ENV:设置环境变量
– ADD:复制文件到镜像
– RUN:制作镜像时执行的命令,可以有多个
– WORKDIR:定义容器默认工作目录
– CMD:容器启动时执行的命令,仅可以有一条CMD