类似集装箱的机制,可以将应用以及依赖包打包到一个容器中,然后发布到任何流行的Linux机器上,实现虚拟化
Docker容器是完全使用沙箱机制,相互之间不会有任何接口,几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言,框架或系统。
可以看到
1.Docker有比虚拟机更少的抽象层
2.docker利用的是宿主机的内核,而虚拟机需要Guest OS
所以,当新建一个容器的时候,docker不需要像虚拟机一样重新加载一个操作系统的内核。虚拟机需要加载Guest OS,这个过程是分钟级别的,而docker是利用宿主机的操作系统(Host OS),省略了重新加载内核的开销,秒级!
在window上面安装Docker的话,会给出一个教程,讲述docker运行过程
docker run --name repo alpine/git clone http://github.com/docker/getting-strated.git
###啥意思?
docker cp repo:/git/getting-strated/ .
###
cd getting-started
###打开这个目录
docker build -t docker101tutorial .
###用这个目录下的 Dockerfile 构建出一个镜像?应该是的
docker run -d -p 80:80 --name docker-tutorial docker101tutorial
### 使用当前目录的Dockerfile创建镜像 标签为runoob/ubuntu:v1
### docker build -t runoob/ubuntu:v1 .
run之后的流程:
docker tag docker101tutorial pkapkaever/docker101tutorial
### 标记为这个 docker101tutorial
docker push pkapkaever/docker101tutorial
### 推送到我的 dockerhub中
Docker的常用命令
docker version
#查看dicker版本信息
docker info
#查看docker系统信息,包括镜像和容器的数量
docker [命令] --help
#帮助命令
可以看到docker info之后,显示了服务器的信息 容器输了和镜像(image)数量以及他们的运行情况
可以查询docker文档
镜像命令
docker images
#查看所有镜像
因为我下载的是window Desktop Docker,有图形界面直接可以点击image
可以看到里面有三个镜像(可以理解为 不同的镜像 image(环境版本)相当于一个class类,而容器 container 相当于实例化了的一个对象)
那么这些镜像从哪里来的呢?
就是从DockerHub中,DockerHub相当于一个商店
我们可以在DockerHub搜索这些镜像,比如ubuntu
也可以用命令行去搜索 !(window用户可以直接在cmd里面使用docker命令!超级方便!)
docker search ubuntu
#相当于在DockerHub上搜索ubuntu
docker pull ubuntu#后面是镜像名称哈
#下载镜像 默认最新版
在下载镜像的时候可以看到,docker是分层下载的,在下载mysql5.7时,由于之前下载mysql latest版本,已经下载过一些层了。所以有Already exists。这些镜像下载过的层可以共用,极大节省了内存!
docker rmi -f ${IMAGE ID}
#删除指定的镜像
docker rmi -f $(docker images -aq)
#可以递归删除(将查询到的images 的ID作为参数传入)
说明:有了镜像才能创建容器。
docker pull centos
#使用docker来拉取centos镜像
新建容器并启动
docker run [可选参数] image
#参数说明
--name="Name" 容器名称
-d 后台方式运行
-it 使用交互方式运行,进入容器查看内容
-p 指定容器端口 -p 8080:8080
-p 主机端口:容器端口 (常用的)
-p 容器端口
容器端口
#测试,启动并进入容器
docker run -it centos /bin/bash
#容器内就是自己的一个环境
exit
#退出容器
列出所有运行的容器
docker ps
退出容器
删除容器
启动和停止容器的操作
常用的其他命令
查看镜像的元数据
docker inspect 容器ID
进入当前正在运行的容器
将文件内容拷贝到主机上
因为容器是不互通的
所以如果希望将容器内的东西拷贝到主机上可以使用`
docker cp 容器id:文件目录 主机目标目录