简介
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,
然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。
我们spring boot项目,什么地方需要用到dockers呢?我们最后项目发布,发到服务器上面,环境怎么搭建?如果就用Linux命令会很麻烦,用Docker,简单的几行命令就可以了。
服务器其实就是一个操作系统,我们的项目跑在上面也是需要环境的,我们本地是windows系统,跑项目需要环境,服务器现在一般都是centOS系统,当然也需要环境。
核心概念
- docker镜像(images):Docker镜像用于创建Docker容器的模板
- docker容器(container):Docker容器是独立运行的一个或者一组应用
- docker客户端(client):客户端通过命令或者其他工具一起使用docker api与docker守护进程
- docker主机(host):一个物理或者虚拟的机器用于执行docker守护进程和容器
- docker仓库(registry):docker仓库用来保存镜像,可以理解为代码控制中的代码仓库。docker hub提供了庞大的镜像集合供使用
举个例子,我们一般操作流程是这样的:
- 先用VirtualBox启动一个虚拟机,启动的是centOS系统,装上docker程序(docker主机)。这个对应的就是我们项目最后发布的服务器。
- 然后,用SecureCRT连上我们这个虚拟机。(docker客户端)。
- 接着,通过docker从docker 仓库中下载我们需要的镜像,比方说:mysql镜像,redis镜像等等。
- 最后,启动这个镜像,就相当于创建一个容器。启动镜像,就相当于配置好了环境。比方说:启动一个mysql镜像,就相当于创建了一个mysql容器,就可以用mysql数据库了。可以启动的那个多个镜像,并且,每个镜像都是独立运行的,互不干扰(沙箱机制)。
Docker安装
查看centOS版本:
1 | //docker要求CentOS系统内核版本要高于3.10 |
升级软件包及内核:
1 | //因为,我们安装的docker是最新版本的 |
安装docker
1 | yum install docker |
卸载docker
1 | yum remove docker-* |
启动docker
1 | systemctl start docker |
将docker作为开机启动
1 | systemctl enable docker |
常用操作
名称 | 命令 | 说明 |
---|---|---|
检索 | docker search 关键字(eg:docker search redis) | 我们经常去docker hub上检索镜像的详细信息,不用再本地敲命令搜索。如镜像的TAG |
拉取 | docker pull 镜像名:tag | :tag是可选的,tag表示标签,多为软件的版本,默认是latest版本 |
列表 | docker images | 查看所有本地镜像 |
删除 | docker rmi image-id | 删除指定的本地镜像,镜像id可以通过列表查看 |
运行 | docker run -d –name 自定义名字 安装的容器名字(eg:docker run –d –name myredis redis) | –name:自定义容器名 -d:后台运行 |
列表 | docker ps(查看运行中的容器) | 加上-a;可以查看所有容器 |
停止 | docker stop container-name/container-id | 停止当前你运行的容器 |
启动 | docker start container-name/container-id | 启动容器 |
删除 | docker rm container-id | 删除指定容器 |
端口映射 | -p 6379:6379 | -p: 主机端口(映射到)容器内部的端口 |
容器日志 | docker logs container-name/container-id |
PS:我们docker run的时候一般都是跟上端口映射,不然访问不到。