docker以前学习过,不过如果不经常打docker命令的话容易忘记,故总结了此篇文章作为备忘,同时先手看完这篇文章也会大概了解docker是什么以及docker的作用。
一. docker是什么
docker是一个软件运行的容器,就像docker logo一样,一条鲸鱼上背着一个个互相隔离的集装箱,docker就是这条鲸鱼,软件就是一个个的集装箱,你可以在docker这条鲸鱼上面随意组装你的集装箱。
二. docker的作用
docker在java开发中最主要的作用 ,就是组建微服务架构。通过多个容器,一台机器可以跑多个服务,因此在本机就可以模拟出微服务架构。同时,docker上安装redis,mysql,tomcat等环境十分方便。也支持将你安装好的环境打包成镜像,发布到其他机器上去运行,就不需要没一台机器上都做重复繁琐的安装步骤了,这跟Jvm、Java的“一次编写、到处运行”的理念一致。
三. docker基本概念
以下将docker和java的概念进行类比。
docker主机(Host)
:就是docker软件,安装在linux、win等操作系统之上。类似jvm,只要安装了jvm,jar包就可以在jvm上运行,而无需关心底层操作系统是linux还是windows。
docker镜像(Images)
:docker镜像是用于创建docker容器的模板。类似你编写的java代码,只要有这份代码在,你就可以打包无数个jar包。
docker容器(Container)
:容器是独立运行的一个或一组应用。类似jar包,jar包由java编码编译而来,docker容器也是由docker镜像来创建。docker容器中运行着一个或一组应用,如我们java web应用运行了tomcat、mysql、rabbitmq,其都可以放置在一个容器中运行。
docker客户端(Client)
:客户端通过命令行或其他工具使用docker。就像java -jar命令行运行jar包一样。
docker仓库(Repository)
:docker仓库用来保存镜像,可以理解为版本控制中的版本仓库。git有github来保存java代码,可以从github上来代码来本地运行。docker也类似,docker有docker hub,可以在docker hub上拉取镜像来运行,生成容器。
四. docker操作流程
如上的docker架构图,一般的操作流程为:从docker hub上拉取docker image镜像到本地,本地运行docker image生成docker container容器。容器运行成功后,即可访问容器中的服务,如redis、mysql等。
五. docker常用命令
image镜像相关命令
搜索docker仓库:docker search 关键字
,如docker search tomcat搜索docker hub上的tomcat镜像。以下为我的windows上执行的结果图。标红的为docker官方版redis镜像。
拉取镜像:
docker pull 镜像名
,如docker pull tomcat,默认拉取最新版,即tomcat:lastest,如果需要指定版本,可以上docker hub网站查询需要的版本号,使用docker pull tomcat:版本号
拉取即可查看本地镜像:
docker images
删除本地镜像:
docker rmi 镜像id
,镜像id(image_id)可以使用docker images
查询
container容器相关命令
启动容器:docker run --name 容器名 -d tomcat
,从tomcat镜像启动一个容器,--name为容器命名,-d 后台运行,不过,这种启动方式没有暴露端口,外部无法访问tomcat的端口。一般使用这个命令启动,多加几个参数:docker run --name 容器名 -p 8888:8080 -d tomcat
,-p 8888:8080表示将主机Host的8888端口映射到容器的8080端口,此时访问主机的8080端口即可访问容器内的tomcat。查看docker 主机ip的命令:docker-machine ip
。也可使用docker-machine ls
查看可管理的虚拟机,其中附有ip地址。如图,此时浏览器访问192.168.99.100:8888即可访问docker容器中的tomcat
查看docker主机的ip:docker-machine ip
查看运行中的容器:docker ps
停止运行中的容器:docker stop 容器id
启动停止的容器:docker start 容器id
查看所有容器的:docker ps -a
删除容器:docker rm 容器id
删除所有容器:docker rm `docker ps -a -q`
查看日志:docker logs 容器id