Docker是一个开源的应用容器引擎,是一个轻量级容器技术。Docker支持将软件编译成一个镜像,然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使用这个镜像,运行中的这个镜像称为容器,容器启动是非常快速的。
# 1.检查centos内核版本,必须是3.10及以上 uname -r # 升级内核(选做) yum update # 2.安装docker,输入y确认安装 yum install docker # 3.启动docker systemctl start docker # 4.开机启动docker systemctl enable docker # 5.停止docker systemctl stop docker # 6.查看版本 docker -v
# 镜像命令 # 1.搜索(我们经常去https://hub.docker.com上检索镜像的详细信息,如镜像的tag) docker search 关键字 # 2.拉取(:tag是可选的,tag表示标签,多为软件的版本,默认是latest最新版本) docker pull 镜像名:tag # 3.列表(查看所有本地镜像) docker images # 4.删除 docker rmi image-id # 容器命令 # 1.运行 # -d 后台运行 # -p 指定端口映射 # -e 设置参数 # -v 目录挂载 # --name 自定义容器名 # image-name 指定镜像模版 docker run -d -p 主机端口:容器内部端口 --name container-name image-name # 2.列表 # 查看所有容器 docker ps -a # 查看所有运行中的容器 docker ps # 3.启动 docker start container-id # 4.停止 docker stop container-id # 5.删除 docker rm container-id # 其它命令 # 1.查看日志 # -f 跟踪日志输出 # -t 显示时间戳 docker logs container-id/container-name # 2.进入容器 # 进入容器后开启一个新的终端,可以在里面操作 docker exec -it container-id/container-name /bin/bash # 3.退出容器 exit # 4.重启容器 docker restart container-id/container-name # 4.查看版本 docker -v
# 拉取指定版本5.7 # MYSQL_ROOT_PASSWORD=admin表示root的初始密码 docker pull mysql:5.7 docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=1234 --name mymysql mysql:5.7
docker pull redis docker run -itd -p 6379:6379 --name myredis redis # 连接redis客户端 docker exec -it myredis /bin/bash redis-cli
docker pull rabbitmq:management docker run -d --name myrabbitmq -p 15672:15672 -p 5672:5672 rabbitmq:management
docker pull docker.elastic.co/elasticsearch/elasticsearch:6.3.2 docker run -d --name myelasticsearch -p 9200:9200 -p 9300:9300 docker.elastic.co/elasticsearch/elasticsearch:6.3.2 # 安装ik分词器(可选) docker exec -it myelasticsearch /bin/bash ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.3.2/elasticsearch-analysis-ik-6.3.2.zip # 配置文件修改(可选,需要修改或查看时执行) docker exec -it myelasticsearch /bin/bash vi /usr/share/elasticsearch/config/elasticsearch.yml
有了上面这些环境后,接下来就可以部署我们的SpringBoot项目了,以我的博客项目为例:
在服务器中创建一个blog文件夹;
本地使用idea编译打包项目后得到blog-web-0.0.1-SNAPSHOT.jar,上传至服务器blog文件夹中;
本地创建一个Dockerfile文件,内容如下:
FROM java:8 EXPOSE 8089 VOLUME /tmp ENV TZ=Asia/Shanghai RUN ln -sf /usr/share/zoneinfo/{TZ} /etc/localtime && echo "{TZ}" > /etc/timezone ADD blog-web-0.0.1-SNAPSHOT.jar /app.jar RUN bash -c 'touch /app.jar' ENTRYPOINT ["java","-jar","/app.jar"] # 说明: # FROM java:8 表示基于jdk8环境; # EXPOSE 8089 表示对外暴露的端口是8086 # VOLUME /tmp 表示挂载到/tmp目录 # ADD blog-web-0.0.1-SNAPSHOT.jar /app.jar 表示把jar包复制到镜像服务里面的根目录,并改名为app.jar # RUN bash -c 'touch /app.jar' 表示执行创建app.jar # ENTRYPOINT ["java","-jar","/app.jar"] 表示执行启动命令java -jar
将Dockerfile文件上传至服务器blog文件夹中;
构建镜像并启动容器,在blog文件夹下执行。
# 构建镜像,注意后面有个点 docker build -t blog-web . # 启动容器 docker run -p 8089:8089 --name blog-web -d -e JAVA_OPTS="-Xms1024m -Xmx1024m" blog-web # 查看日志 docker logs -f blog-web # 如果想要重新打包构建的话需要停止容器,删除镜像,再重新构建启动就好了
这样就完成啦,是不是很简单!