【Docker】
1、什么是Docker?
开发人员利用 Docker 可以消除协作编码时“在我的机器上可正常工作”的问题。
它是目前最流行的 Linux 容器解决方案。Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了 Docker,就不用担心环境问题。
Docker 的接口相当简单,用户可以方便地创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样。
容器除了运行其中应用外,基本不消耗额外的系统资源,使得应用的性能很高,同时系统的开销尽量小。
2、Docker vs VM
VM是一个运行在宿主机之上的完整的操作系统,VM运行自身操作系统会占用较多的CPU、内存、硬盘资源。Docker不同于VM,只包含应用程序以及依赖库,基于libcontainer运行在宿主机上,并处于一个隔离的环境中,这使得Docker更加轻量高效,启动容器只需几秒钟之内完成。由于Docker轻量、资源占用少,使得Docker可以轻易的应用到构建标准化的应用中。
Docker 在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护。使得 Docker 技术比虚拟机技术更为轻便、快捷。
Docker 对系统资源的利用率很高,一台主机上可以同时运行数千个 Docker 容器。
3、相关概念。
Docker是CS架构,主要有两个概念:
- Docker daemon: 运行在宿主机上,Docker守护进程,用户通过Docker client(Docker命令)与Docker daemon交互
- Docker client: Docker 命令行工具,是用户使用Docker的主要方式,Docker client与Docker daemon通信并将结果返回给用户,Docker client也可以通过socket或者RESTful api访问远程的Docker daemon
了解了Docker的组成,再来了解一下Docker的三个主要概念:
- Docker image:镜像是只读的,镜像中包含有需要运行的文件。镜像用来创建container,一个镜像可以运行多个container;镜像可以通过Dockerfile创建,也可以从Docker hub/registry上下载。
- Docker container:容器是Docker的运行组件,启动一个镜像就是一个容器,容器是一个隔离环境,多个容器之间不会相互影响,保证容器中的程序运行在一个相对安全的环境中。
- Docker hub/registry: 共享和管理Docker镜像,用户可以上传或者下载上面的镜像,官方地址为
https://registry.hub.docker.com/
,也可以搭建自己私有的Docker registry。
4、安装 Docker。
yum install docker // 安装 service docker start // 启动 chkconfig docker on // 开机启动 docker version // 查看docker版本,或测试docker是否启动
5、感受 Docker。
Docker 中国官方镜像加速可通过registry.docker-cn.com
访问。该镜像库只包含流行的公有镜像,私有镜像仍需要从美国镜像库中拉取。
修改系统中docker对应的配置文件即可,如下:
vi /etc/docker/daemon.json #添加后 { "registry-mirrors": ["https://registry.docker-cn.com"], "live-restore": true }
下载镜像,并运行窗口。
docker pull library/hello-world //下载镜像 docker images // 查看镜像 #显示结果 REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/hello-world latest f2a91732366c 3 months ago 1.848 kB docker run hello-world // 运行镜像 #显示结果 Hello from Docker! This message shows that your installation appears to be working correctly. ...
6、Docker 常用命令。
docker pull image_name // 摘取镜像 docker images // 查看已下载的镜像 // 删除镜像 docker rmi docker.io/tomcat:7.0.77-jre7 或者 docker rmi b39c68b7af30 docker ps // 查看运行中的容器 docker ps -a // 查看所有容器 // 启动、停止、重启容器 docker start container_name/container_id docker stop container_name/container_id docker restart container_name/container_id // 进入容器 docker attach container_name/container_id // 删除容器 docker rm container_name/container_id docker info // 查看 Docker 信息 // 从 Docker 上下载某个镜像 docker pull centos:latest docker pull centos:latest