1、 部署环境(docker安装步骤参考之前的博客)
JDK1.8、Docker1.13.1、CentOS7.0
2、docker开启远程访问
[root@xinglinglove ~]# vim /lib/systemd/system/docker.service
红色部分为新增内容
[Unit]
Description=Docker Application Container Engine
Documentation=http://docs.docker.com
After=network.target rhel-push-plugin.socket registries.service
Wants=docker-storage-setup.service
Requires=docker-cleanup.timer
[Service]
Type=notify
NotifyAccess=all
EnvironmentFile=-/run/containers/registries.conf
EnvironmentFile=-/etc/sysconfig/docker
EnvironmentFile=-/etc/sysconfig/docker-storage
EnvironmentFile=-/etc/sysconfig/docker-network
Environment=GOTRACEBACK=crash
Environment=DOCKER_HTTP_HOST_COMPAT=1
Environment=PATH=/usr/libexec/docker:/usr/bin:/usr/sbin
ExecStart=/usr/bin/dockerd-current \
--add-runtime docker-runc=/usr/libexec/docker/docker-runc-current \
--default-runtime=docker-runc \
--exec-opt native.cgroupdriver=systemd \
--userland-proxy-path=/usr/libexec/docker/docker-proxy-current \
--seccomp-profile=/etc/docker/seccomp.json \
-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock \
$OPTIONS \
$DOCKER_STORAGE_OPTIONS \
$DOCKER_NETWORK_OPTIONS \
$ADD_REGISTRY \
$BLOCK_REGISTRY \
$INSECURE_REGISTRY \
$REGISTRIES
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=1048576
LimitNPROC=1048576
LimitCORE=infinity
TimeoutStartSec=0
Restart=on-abnormal
MountFlags=slave
KillMode=process
[Install]
WantedBy=multi-user.target
3.重启docker
[root@xinglinglove ~]# systemctl daemon-reload [root@xinglinglove ~]# systemctl restart docker.service
4.测试是否生效
curl http://140.143.0/126:2375/info
返回如下信息代表开启成功
{"ID":"27LC:PLU7:B5DF:H3KS:QGUH:TABJ:5YJC:DNEV:NEZL:L33Y:BOWB:KOZV","Containers":6,"ContainersRunning":5,"ContainersP aus ed":0,"ContainersStopped":1,"Images":10,"Driver":"overlay2","DriverStatus":[["Backing Filesystem","extfs"],["Supports d_ type","true"],["Native Overlay Diff","true"]],"SystemStatus":null,"Plugins":{"Volume":["local"],"Network":["bridge","hos t","macvlan","null","overlay"],"Authorization":null},"MemoryLimit":true,"SwapLimit":true,"KernelMemory":true,"CpuCfsPeri od":true,"CpuCfsQuota":true,"CPUShares":true,"CPUSet":true,"IPv4Forwarding":true,"BridgeNfIptables":true,"BridgeNfIp6tab les":true,"Debug":false,"NFd":50,"OomKillDisable":true,"NGoroutines":44,"SystemTime":"2019-03-26T16:42:23.723116602+08:0 0","LoggingDriver":"journald","CgroupDriver":"systemd","NEventsListener":0,"KernelVersion":"3.10.0-693.el7.x86_64","PkgV ersion":"<unknown>","OperatingSystem":"CentOS Linux 7 (Core)","OSType":"linux","Architecture":"x86_64","IndexServerAddre ss":"https://index.docker.io/v1/","IndexServerName":"docker.io","RegistryConfig":{"InsecureRegistryCIDRs":["127.0.0.0/8" ],"IndexConfigs":{"docker.io":{"Name":"docker.io","Mirrors":null,"Secure":true,"Official":true}},"Mirrors":[]},"NCPU":1, "MemTotal":1928822784,"DockerRootDir":"/var/lib/docker","HttpProxy":"","HttpsProxy":"","NoProxy":"","Name":"xinglinglove ","Labels":null,"ExperimentalBuild":false,"ServerVersion":"1.13.1","ClusterStore":"","ClusterAdvertise":"","Runtimes":{" docker-runc":{"path":"/usr/libexec/docker/docker-runc-current"},"runc":{"path":"docker-runc"}},"DefaultRuntime":"docker- runc","Swarm":{"NodeID":"","NodeAddr":"","LocalNodeState":"inactive","ControlAvailable":false,"Error":"","RemoteManagers ":null,"Nodes":0,"Managers":0,"Cluster":{"ID":"","Version":{},"CreatedAt":"0001-01-01T00:00:00Z","UpdatedAt":"0001-01-01 T00:00:00Z","Spec":{"Orchestration":{},"Raft":{"ElectionTick":0,"HeartbeatTick":0},"Dispatcher":{},"CAConfig":{},"TaskDe faults":{},"EncryptionConfig":{"AutoLockManagers":false}}}},"LiveRestoreEnabled":false,"Isolation":"","InitBinary":"dock er-init","ContainerdCommit":{"ID":"","Expected":"aa8187dbd3b7ad67d8e5e3a15115d3eef43a7ed1"},"RuncCommit":{"ID":"N/A","Ex pected":"9df8b306d01f59d3a8029be411de015b7304dd8f"},"InitCommit":{"ID":"N/A","Expected":"949e6facb77383876aeff8a6944dde6 6b3089574"},"SecurityOptions":["name=seccomp,profile=/etc/docker/seccomp.json"],"Registries":[{"Name":"docker.io","Secur e":true}]}
5.在自己的spring-boot项目的pom中添加插件
<plugin>
<groupId>com.spotify</groupId>
<artifactId>
docker-maven-plugin
</artifactId>
<version>0.4.14</version>
<configuration>
<imageName>website</imageName>
<dockerDirectory>src/main/docker</dockerDirectory>
<dockerHost> http://140.143.0.126:2375</dockerHost>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory} </directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
6.在工程中新建src/main/docker目录和Dockerfile文件
# 基于哪个镜像
FROM java:8
# 将本地文件夹挂载到当前容器
VOLUME /tmp
# 拷贝文件到容器,xinglinglove-website-0.0.1-SNAPSHOT.jar这里是maven打包后的名字
ADD xinglinglove-website-0.0.1-SNAPSHOT.jar app.jar
RUN bash -c 'touch /app.jar'
# 配置容器启动后执行的命令
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
7.构建镜像并上传至docker使用maven运行如下命令
clean package docker:build -DskipTests
8.上传成功后,在服务器输入docker imgaes查看镜像是否上传成功
[root@xinglinglove nginx]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
website latest 875823024f38 42 minutes ago 715 MB
9.新建容器,启动项目
[root@xinglinglove nginx]# docker run -t -d -p 8888:8888 website /bin/bash
10.访问项目地址,验证成功(登陆页有点丑,请见谅)
http://140.143.0.126:8888/login