以下操作在centos7下执行
安装
1.docker依赖于系统的一些必要的工具,安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
2.添加软件源信息
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3.更新yum缓存
yum makecache fast
4.安装可选指定版本或最新版本安装
使用该命令可列出从高到低Docker-ce的版本
yum list docker-ce.x86_64 --showduplicates | sort -r
最新版本安装
yum -y install docker-ce
5.启动docker
systemctl start docker
6.查看docker版本
docker version
6.镜像加速
Docker国内镜像:
网易加速器:http://hub-mirror.c.163.com
官方中国加速器:https://registry.docker-cn.com
ustc的镜像:https://docker.mirrors.ustc.edu.cn
cd /etc/docker/ #进入目录
touch daemon.json #如没有该文件则新建
vi daemon.json #增加如下内容
{
"registry-mirrors": ["https://hub-mirror.c.163.com"]
}
systemctl daemon-reload #通知docker服务做出的修改
systemctl restart docker #重启docker后台服务
7.一开始yum安装报错
error: rpmdb: BDB0113 Thread/process 25515/139945191524416 failed: BDB1507 Thread died in Berkeley DB library
error: db5 error(-30973) from dbenv->failchk: BDB0087 DB_RUNRECOVERY: Fatal error, run database recovery
error: cannot open Packages index using db5 - (-30973)
error: cannot open Packages database in /var/lib/rpm
CRITICAL:yum.main:
Error: rpmdb open failed
需要重新构建rpm数据库
cd /var/lib/rpm
rm -rf __db*
rpm --rebuilddb
Docker 开启远程API
1.修改配置文件
#进入目录
cd /lib/systemd/system
# 编辑文件
vi docker.service
#修改ExecStart的值,端口自定义即可
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:5555 -H unix://var/run/docker.sock
2.重启与测试
curl -v -X GET localhost:5555/_ping
未重启前访问返回如下
systemctl daemon-reload #通知docker服务做出的修改
systemctl restart docker #重启docker后台服务
curl -v -X GET localhost:5555/_ping
重启后访问返回如下
3.浏览器访问
http://ip:port/version
部署springboot项目到docker
先在项目src/main下新建docker文件夹和Dockerfile
Dockerfile文件如下
FROM java:8
VOLUME /tmp
ADD test-0.0.1-SNAPSHOT.jar test.jar
RUN sh -c 'touch /test.jar'
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /test.jar" ]
参数解释
1.FROM 指向需要创建的容器名称 java:8 (除了注释之外,必须是第一行写,否则报错)如果是第一次打包,它会自动下载java 8的镜像作为基础镜像,以后再制作镜像的时候就不会再下载了
2.tag 不写默认取latest,可以认为是版本号
3.ADD 向容器中添加文件,主机文件,网络文件,文件夹,项目的 jar 文件作为 “test.jar” 添加到容器的
4.VOLUME 指定挂载点,主机其他容器
5.RUN 用于修改镜像命令,常用安装库,程序以及配置程序
6.ENV 设置容器的环境变量
7.CMD 启动容器默认命令
8.ENTRYPOINT 与CMD类似,与CMD配合使用
手动部署
1.在服务器新建一个docker文件夹,将maven打包好的jar包和Dockerfile文件复制到服务器的docker文件夹下
2.制作镜像(此命令后面有个点)
docker build -t springbootdockertest1 .
3.使用docker images查看镜像
4.启动
-d参数是让容器后台运行
-p是做端口映射,port(服务器端口):port(容器里程序的端口)
docker run -d -p 6789:6789 springbootdockertest1
5.访问
项目直接打包到容器部署
1.增加项目的pom配置
1.dockerHost配置自己的docker地址
2.imageName自定义
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.13</version>
<configuration>
<imageName>springbootdocker${project.artifactId}2</imageName>
<dockerDirectory>src/main/docker</dockerDirectory>
<!-- docker远程服务器地址 -->
<dockerHost>http://XXX.XXX.XXX.XXX:5555</dockerHost>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
2.这里我修改了程序端口号与手动部署的方式区分开
3.项目打包成镜像
在eclipse下的话右击项目-》run as -》maven build
clean package docker:build
3.使用docker images查看镜像
4.启动
docker run -d -p 6788:6788 springbootdockertest2