本文能完成:搭建docker环境;并使用docker容器部署Springboot应用。
本文参考文档:docker docs
首先我们看一下机器上是否安装过docker:
yum list installed | grep docker
我这里显示无,如果有的话执行下面命令卸载掉旧版本的docker:
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
sudo yum install -y yum-utils \device-mapper-persistent-data \lvm2
sudo yum-config-manager \--add-repo \https://download.docker.com/linux/centos/docker-ce.repo
首先查看可安装的docker各版本列表:
yum list docker-ce --showduplicates | sort -r
选择一个版本进行安装:
sudo yum install docker-ce-18.06.1.ce
安装过程中,需要确认两次安装,最后安装成功后,输入
docker -v
docker就已经安装好了。
systemctl start docker
启动docker以后,就会生成/etc/docker目录,没有启动的话没有这个目录。
再把docker设置为开机启动:
systemctl enable docker
首先我们登陆阿里云,进入后台后:
然后把上面的地址配置docker到镜像地址:
vim /etc/docker/daemon.json
然后重启docker:
systemctl restart docker
重启过后,可以搜索一下镜像库里面的资源来看看,以jdk为例:
docker search jdk
可以拉取一个jdk8到本地:
docker pull openjdk:8-jdk-alpine
看到镜像库里面就有了这个jdk8的镜像了。
首先在项目目录下新建一个Dockerfile文件:
vim Dockerfile
然后编写内容如下:
FROM openjdk:8-jdk-alpine
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
EXPOSE 8012
ENTRYPOINT ["java","-jar","/app.jar"]
稍微解释一下这里的内容:From 指的是基础镜像;AGR 用来定义一个变量,接受外面传进来的值;COPY 拷贝文件到容器中去,不会主动解压;EXPOSE 容器映射的端口号;ENTRYPOINT 配置容器启动后执行的命令;
具体的dockerfile文件的详细配置解析可以参考:https://www.cnblogs.com/panwenbin-logs/p/8007348.html
这里就不展开详细说明了。
完成后jar包和Dockerfile是在同一目录下的:
然后执行命令:
docker build --build-arg JAR_FILE=demoofjk-0.0.1-SNAPSHOT.jar -t demo:v0.0.1 .
docker images
可以看到镜像已经存在仓库中了。
docker run -di -p 8012:23333 demo:v0.0.1
然后查看docker容器
docker ps
这里说明一下这个命令:
-di 表示后台运行
-p 8012:23333 表示机器上的8012端口映射到docker容器暴露的端口23333
后面 demo:v0.0.1 是镜像的name:tag
访问机器的8012端口:可以看到访问成功
好了,到这里就完成了docker的安装与基本的使用。后面会整合Jenkins实现自动化部署。
docker images //查看本地仓库中镜像
docker search [镜像名称] //搜索镜像 例如 docker search openjdk
docker pull [镜像名字] //远程拉取镜像到本地仓库 例如 docker pull openjdk:8-jdk-alpine
docker rmi -f [镜像名字] //删除本地仓库中的镜像 例如 docker rmi -f openjdk:8-jdk-alpine
docker build... //由于参数太多,请参考 https://www.runoob.com/docker/docker-build-command.html
docker run -di -p 8012:23333 demo:v0.0.1
docker ps //查看运行着的docker容器
docker ps -a //查看所有的docker容器
docker logs -f [容器名字或者id] //查看容器内应用日志 例如docker logs -f 331b32db2457
docker stop/start/restart [容器名字或者id] //停止、开启、重启容器
docker rm -f [容器名字或者id] //删除容器 docker rm -f 331b32db2457