Docker 使用
Docker是什么
-
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。
-
Docker 可以让开发者打包他们的应用(xx.jar)以及依赖包(jdk)到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。 -
Docker是一个虚拟环境容器,可以将你的开发环境、代码、配置文件等一并打包到这个容器中,并发布和应用到任意平台中。比如,你在本地用Python开发网站后台,开发测试完成后,就可以将Python3及其依赖包、Flask及其各种插件、Mysql、Nginx等打包到一个容器中,然后部署到任意你想部署的环境。
Docker的三个概念
- 镜像(Image):类似于虚拟机中的镜像,是一个包含有文件系统的面向Docker引擎的只读模板。任何应用程序运行都需要环境,而镜像就是用来提供这种运行环境的。例如一个Ubuntu镜像就是一个包含Ubuntu操作系统环境的模板,同理在该镜像上装上Apache软件,就可以称为Apache镜像。物理文件.
- 容器(Container):类似于一个轻量级的沙盒,可以将其看作一个极简的Linux系统环境(包括root权限、进程空间、用户空间和网络空间等),以及运行在其中的应用程序。Docker引擎利用容器来运行、隔离各个应用。容器是镜像创建的应用实例,可以创建、启动、停止、删除容器,各个容器之间是是相互隔离的,互不影响。注意:镜像本身是只读的,容器从镜像启动时,Docker在镜像的上层创建一个可写层,镜像本身不变。
- 仓库(Repository):类似于代码仓库,这里是镜像仓库,是Docker用来集中存放镜像文件的地方。注意与注册服务器(Registry)的区别:注册服务器是存放仓库的地方,一般会有多个仓库;而仓库是存放镜像的地方,一般每个仓库存放一类镜像,每个镜像利用tag进行区分,比如Ubuntu仓库存放有多个版本(12.04、14.04等)的Ubuntu镜像。
CentOS Docker 安装
Docker支持以下的CentOS版本:
- CentOS 7 (64-bit)
- CentOS 6.5 (64-bit) 或更高的版本
前提条件
目前,CentOS 仅发行版本中的内核支持 Docker。
Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。
Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系统为64位、系统内核版本为 2.6.32-431 或者更高版本
通过 uname -r 命令查看你当前的内核版本
本人使用CentOs 7
使用root用户执行命令: yum -y install docker
如果不用root用户可能没有权限安装
执行命令后静静等待安装
安装完成
使用 docker -v 查看版本
启动Docker服务
启动服务的方式有两种
service docker start
或者
systemctl start docker
测试docker是否开启服务
docker run hello-world
如果安装 docker run hello-world失败,需要先卸载,再安装
镜像加速
鉴于国内网络问题,后续拉取 Docker 镜像十分缓慢,我们可以需要配置加速器来解决,我使用的是网易的镜像地址:http://hub-mirror.c.163.com。
新版的 Docker 使用 /etc/docker/daemon.json(Linux)来配置 Daemon
请在该配置文件中加入(没有该文件的话,请先建一个):
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
也可以在命令中添加镜像地址
http://ovfftd6p.mirror.aliyuncs.com
http://registry.docker-cn.com
http://docker.mirrors.ustc.edu.cn
http://hub-mirror.c.163.com
docker pull ovfftd6p.mirror.aliyuncs.com/library/xxxx
Docker命令
docker –help :查看docker的命令
docker ps –help:查看docker ps 的具体用法
docker images:查看镜像库
docker ps:查看正在运行的容器
docker pa -a:查看历史容器
docker pull xxx:从远处下载镜像
docker inspect:查看镜像的底层信息
docker run -d -p 11111:2222 --name Name xxx:后台运行指定端口的镜像,-d 是后台运行,-p 指定端口11111是外部访问端口 2222是linux内部运行端口,–neme指定name,之后这个name可以代替container id
docker build -t xxx:编译本地配置文件并生成镜像
docker stop {container id}:停止对应container id的容器
docker restart {container id}:重启对应container id的容器
将springboot项目打包放入服务器运行
-
使用maven中的package打包jar
-
编写dockerfile文件
# Docker image for springboot file run
# VERSION 0.0.1
# Author: knowno
# java8镜像
FROM openjdk:8
# 作者
MAINTAINER 作者 <作者邮箱>
# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名为app.jar
ADD demo-docker-0.0.1-SNAPSHOT.jar app.jar
# 运行jar包
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
#指定运行端口
# PORT(如果不指定,tomcat默认8080)
EXPOSE 80
如果在尾部加入 expose端口为80,要确保项目配置的启动端口也是80.
使用xftp连接服务器将打包好的jar和dockerfile文件上传到服务器中
进入docker文件夹执行以下命令:
docker build -t sb4docker . (看好,最后面有个"."点! sb4docker是自己取的名字)
等待生成镜像
生成镜像后使用命令启动容器: docker run -d -p 8888:8080 sb4docker
通过浏览器访问:http://服务器ip:8888/路径