推荐个人Docker文章,讲的非常详细
【玩转Docker容器 1】Docker的详解及安装Docker官方网址: https://docs.docker.com/ 英文地址
Docker中文网址: http://www.docker.org.cn/ 中文地址
Docker是基于Go语言实现的云开源项目,诞生于2013年初,最初发起者是dotClouw公司。Docker 自开源后受到广泛的关注和讨论,目前已有多个相关项目,逐断形成了围Docker的生态体系。dotCloud 公司后来也改名为Docker Ine。
Docker是一个开源的容器引擎,它有助于更快地交付应用。 Docker可将应用程序和基础设施层隔离,并且能将基础设施当作程序一样进行管理。使用 Docker可更快地打包、测试以及部署应用程序,并可以缩短从编写到部署运行代码的周期。
在我们开发和运维的过程中,我们经常要给Linux服务器上安装各种各样的环境,比如我们要安装MySQL、Redis、Tomcat等环境,那么以及我们是如何给Linux服务器安装这些环境呢?如果安装MySQL我们就要去MySQL官网下载MySQL的linux版安装包,安装好后再进行相关的环境配置,然后使用类似的方式安装Redis、Tomcat等环境,如此Linux中环境的搭建就暂告一段落。有一天,如果我们又要去另外一台linux服务器上安装MySQL、Redis、Tomcat等环境,那么我们又要老路子走一遍,这样还是太麻烦了。那么有没有更便捷的方式呢?有,那就是使用Docker。
Docker它是支持将你已经安装并配置好后的环境(如MySQL),打包进行一个镜像文件如MySQL-Docker镜像。比如张三将自己安装并配置好的MySQL打包成一个镜像文件,如果李四想给自己的Linux服务器安装MySQL,那么他只要在自己的Linux服务器安装了Docker,然后使用Docker运行张三打包的MySQL镜像文件,最后产生MySQL容器。使用这种方式我们就可以快速将Linux服务器的环境给搭建好。
Docker支持将软件编译成一个镜像;然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使用这个镜像;
运行中的这个镜像称为容器,容器启动是非常快速的。而且现在各大云计算平台都支持Docker容器技术,如百度云,阿里云,腾讯云。所以我们很有必要将Docker学习一下。
总之Docker实现可以方便快捷安装环境,以及快捷的打包、测试以及部署应用程序
例如使用Docker可实现秒级的安装mysql、jdk等环境,例如我之前的文章安装mysql等是非常复杂的,要配置各种东西,使用Docker可完全简化安装(自定义的配置就需要自己动手啦)
1.docker主机(Host):安装了Docker程序的机器(Docker直接安装在操作系统之上);
如上图所示,local host是本机,即在本机安装Docker程序,这个本机就为docker主机,另外我们也可以在remote host远程机器上安装Docker程序。Docker主机是可以运行Docker镜像生成Docker容器。
2.docker客户端(Client):客户端通过命令行或其他工具连接docker主机进行操作;类似于我们使用SQLyog客户端连接MySQL服务器进行操作MySQL。
3.docker仓库(Registry):用来保存各种打包好的软件镜像;
4.docker镜像(Images):软件打包好的镜像;放在docker仓库中;
5.docker容器(Container):镜像启动后的实例称为一个容器;容器是独立运行的一个或一组应用。
基本流程:如Docker仓库中有张三配置好后的MySQL、Nginx、Tomcat、Redis镜像,这时我们把这些个镜像下载到local host本机,然后使用Docker命令去行动这些个镜像,镜像运行完后就会生成对应的容器。比如我们到Docker仓库中下载MySQL镜像,到local host本机,然后再使用Docker命令运行这个MySQL镜像,运行完后就会启动一个MySQL容器(就好比启动了一个MySQL)。
docker容器(Container):镜像启动后的实例称为一个容器;容器是独立运行的一个或一组应用。
安装Docker
去Docker仓库找到这个软件对应的镜像(等于应用市场,下载安装包)
(可以是公共镜像也可以是自己私有的镜像文件);
使用Docker运行这个镜像,这个镜像就会生成一个Docker容器(等于安装软件)
(每个容器是独立的,等于每个软件都是独立的)
对容器的启动停止就是对软件的启动停止;
或者创建自定义项目镜像,上传至Docker Bub仓库去,给自己或别人下次使用
总之Docker的目的就是一次构造处处运行
DOCKER-HOST(宿主机,一般为Linux)
可通与 Docker客户端之间进行通信。
Client( Docker客户端)
Docker客户端是 Docker的用户界面,它可以接受用户命令与 Docker daemon通信。图中, docker build、docker pull、docker run等都是 Docker的相关命令。
Images( Docker镜像)
Docker镜像是一个只读模板,它包含创建 Docker容器的说明。它和系统安装光盘有点像,使用系统安装光盘可以安装系统,同理,使用Docker镜像可以运行 Docker镜像中的程序。
Containers(容器集合,里面包含多个容器)
容器是镜像的运行实例,一个容器可以称为一个应用程序
Registry
Docker Registry是一个集中存储与分发镜像的服务。可以称之为应用市场,构建完 Docker镜像后,就可在当前宿主机上运行。但如果想要在其他机器上运行这个镜像,就需要手动复制。此时可借助 Docker Registry来避免镜像的手动复制。
一个 Docker Registry可包含多个 Docker仓库,每个仓库有可包含多个镜像(Images)标签,每个镜像(Images)又可运行成一个容器示例。
Docker 是一个开源的商业产品,有两个版本:社区版(Community Edition,缩写为 CE)和企业版(Enterprise Edition,缩写为 EE)。企业版包含了一些收费服务,个人开发者一般用不到
Docker 要求 CentOS 系统的内核版本在 3.10以上 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。
uname -r
yum -y update
yum remove docker docker-common docker-selinux docker-engine
为了防止报错,yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum list docker-ce --showduplicates | sort -r
sudo yum install -y docker-ce #安装的是最新稳定版
systemctl start docker
systemctl enable docker
docker version
docker version (查看版本)
systemctl start docker (启动Docker)
systemctl restart docker (重启Docker)
systemctl stop docker (停止Docker)
卸载docker
1、查询docker安装过的包:
yum list installed | grep docker
2、删除安装包
yum remove docker-ce.x86_64 docker-ce-cli.x86_64 -y
3、删除镜像/容器等
rm -rf /var/lib/docker
docker search 镜像名称(搜索镜像,去docker hub上检索镜像的详细信息)
docker pull 镜像名:tag (拉去镜像,:tag是可选的,tag为版本,默认是latest)
docker images (查看镜像文件)
docker rmi 镜像id (删除镜像)
docker ps (查看正在运行的容器)
docker ps –a (查看所有的容器)
docker rm 容器id (删除容器)
docker logs 容器id/容器名称 (查看容器运行日志)
docker exec -it 容器id bash (进入容器)
exit (退出容器)
注释:docker run相当于执行了两步操作:将镜像放入容器中(docker create),然后将容器启动,使之变成运行时容器(docker start)。
docker run --name 自定义容器名 -d 镜像模板
(示例:docker run --name redis -d redis。 -d 表示为后台运行,不加-d默认为前台启动)
docker stop 容器id 或者容器名称 (停止当前你运行的容器)
docker start 容器id 或者容器名称(启动容器)
端口映射,因为Docker容器和Linux系统的端口一个在内一个在外,所以要映射到外部Linux系统的端口上,如果不映射就只能在容器中使用
-p 6379:6379
示例:docker run -d -p 6379:6379 --name redis
第一个端口号为Linux的端口号,第二个端口号为容器内部的端口号