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 或者更高版本
使用 yum 安装(CentOS 7下)
Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。
通过 uname -r 命令查看你当前的内核版本
查看Linux内核
是否在3.10版本以上,否则需要重装centOS
[root@localhost ~]# uname -r
如果进程在休眠,可以使用kill这个进程
安装Docker
yum -y install docker
检查安装版本
启动docker服务
service docker start
或者
systemctl start docker
运行hello-world镜像
运行镜像会先在本地找hello-world镜像,如果没有会从远程找这个镜像,并下载到本地
docker run hello-world
可以再执行一次,程序找到了hello-world镜像,所以直接运行
docker run hello-world
查看已有的镜像文件
docker images
使用 docker 构建一个 web 应用程序
前面我们运行的容器并没有一些什么特别的用处。
接下来让我们尝试使用 docker 构建一个 web 应用程序。
我们将在docker容器中运行一个 Python Flask 应用来运行一个web应用
载入新的镜像文件
远程载入一个镜像
docker pull training/webapp
再次查看镜像文件
会发现多了一个镜像文件
docker images
运行一个 Python Flask 应用来运行一个web应用
docker run -d -P training/webapp python app.py
(-d让容器在后台运行 将容器内部使用的网络端口映射到我们的)
查看正在运行的容器
docker ps
centors浏览器访问
localhost:32768
或者windows浏览器输入 ip地址:32768
这边是http://192.168.56.129:32768
关闭容器
查看container ID
docker ps
停止容器
docker stop ——+CONTAINER ID
查看关闭后的结果
docker ps -a
镜像和容器的区别?
镜像是实际存在的,一旦程序运行了镜像,就变成了容器
那么,如何自己写镜像?
新建springboot项目,选择web支持
创建控制器
新建controller类
@RestController
public class DockerController {
@GetMapping("docker")
public String dc() {
return "hello,docker,imkak";
}
}
将springboot项目打包为:jar
打包后,观察目录:target
编写dockerfile文件
新建txt文件,写入以下信息后,删除后缀名
# Docker image for springboot file run
# VERSION 0.0.1
# Author: knowno
# java8镜像
FROM java:8
# 作者
MAINTAINER knowno <knowno@foxmail.com>
# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名为app.jar——这边的jar文件要换成你自己的jar包
ADD demo-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"]
VOLUME 指定了临时文件目录为/tmp。其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp。改步骤是可选的,如果涉及到文件系统的应用就很有必要了。/tmp目录用来持久化到 Docker 数据文件夹,因为 Spring Boot 使用的内嵌 Tomcat 容器默认使用/tmp作为工作目录
项目的 jar 文件作为 “app.jar” 添加到容器的
ENTRYPOINT 执行项目 app.jar。为了缩短 Tomcat 启动时间,添加一个系统属性指向 “/dev/./urandom” 作为 Entropy Source
如果是第一次打包,它会自动下载java 8的镜像作为基础镜像,以后再制作镜像的时候就不会再下载了。
复制【上传】jar文件和dockfile文件到服务器
可以使用Xftp上传,先建一个docker文件夹,复制粘贴
在服务器新建一个docker文件夹,将maven打包好的jar包和Dockerfile文件复制到服务器的docker文件夹下
制作镜像
先cd到刚刚建的文件夹下
cd /usr/local/docker
执行下面命令, 看好,最后面有个"."点!
docker build -t springbootdocker .
查看镜像
docker images
启动容器
docker run -d -p 8888:8090 springbootdocker
选——看或者可以在dockerfile文件后添加,
EXPOSE 8090
这样就可以大P来启动容器了,不过记得重新build才生效
docker run -d -P springbootdocker
注:
-d参数是让容器后台运行
-p 是做端口映射,此时将服务器中的8080端口映射到容器中的8888(项目中端口配置的是8080)端口
-P 自动映射
打开浏览器访问
http://192.168.56.129:8888/docker
8888是刚刚上面映射出来的地址,docker是我们控制器里面方法的地址
在centOS中也一样