什么是docker?
docker是目前linux最流行的容器技术,Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样 优点:占用资源小,启动快,体积也小
docker容器与虚拟机有什么区别?
虚拟机(virtual machine)就是带环境安装的一种解决方案,本质上是一个文件夹 虚拟机运行的时候独占系统资源,因为它运行的环境是一个完整的操作系统,我们在运行之前会给虚拟机提前配置相应的物理机的硬盘,cpu和内存等资源,一旦虚拟机运行起来,这些资源他将独自占有 缺点:占用资源多,操作复杂,启动慢
docker和虚拟环境virtualenv有什么区别?
virtualenv只是针对python的隔离工具,是借助语言层面的虚拟机来实现的,不具有通用性。Docker是更底层的虚拟化技术,它是进程级的,也就是说不管什么语言编写的程序都会得到相应的服务
Docker 的主要用途,目前有三大类。
(1)提供一次性的环境。比如,本地测试他人的软件、持续集成的时候提供单元测试和构建的环境。
(2)提供弹性的云服务。因为 Docker 容器可以随开随关,很适合动态扩容和缩容。
(3)组建微服务架构。通过多个容器,一台机器可以跑多个服务,因此在本机就可以模拟出微服务架构。
Image
docker运行前的docker叫做image,Docker 把应用程序及其依赖,打包在 image 文件里面,image也就是docker容器的镜像文件,也可以说是模板,一个image可以生成多个不同的docker实例,image像类一样可以继承
Docker的常用操作
docker version 查看本地docker的版本
docker image ls 列出本地镜像列表
docker image rmi [imageName] 删除镜像
docker image pull library/hello-world 从仓库抓取镜像到本地(由于Docker 官方提供的 image 文件都放在library组里面,可以写成:docker image pull hello-world)
docker container ls -a 列出所有状态的容器实例(运行状态和未运行状态都会列出来)
docker container run hello-world 生成docker实例(如果本地不存在hello-world镜像,则会从仓库自动抓取)
docker container start [containerID] 开始一个停止的docker实例
docker container stop [containerID] 让docker容器停止运行服务
docker container kill [containerID] 让docker容器停止运行服务
docker container logs [containerID] 查看 docker 容器的输出
docker container exec 进入一个正在运行的 docker 容器
例如:$ docker container exec -it [containerID] /bin/bash 一旦进入了容器,就可以在容器的 Shell 执行命令了。
docker container cp 从正在运行的 Docker 容器里面,将文件拷贝到本机
例如:$ docker container cp [containID]:[/path/to/file] . #注意看后面有个点哟
添加国内docker镜像源,让我们拉取镜像变得更快
sudo vim /etc/docker/daemon.json 然后添加下面代码: { "registry-mirrors": ["https://y0qd3iq.mirror.aliyuncs.com"] }
docker info|grep Mirrors -A 1 查看镜像源是否成功添加 docker search mysql 从docker镜像源查看是否有mysql
更多docker命令请参考https://github.com/KeKe-Li/docker-directive
>>>>下一篇构建自己的docker容器,并且上传至DockerHub>>>>