docker 本地环境安装流程和基本指令
安装流程
本地 window10环境,计划通过虚拟机部署一套linux系统,然后安装对应的docker服务器环境。
流程如下:
1.安装虚拟机软件
2.导入linux系统
3.在linux下安装对应的docker服务器环境
注:此处虚拟机软件选用的是Oracle VM VirtualBox、linux选用的镜像版本为CentOS-7,docker通过yum下载的最新版本。
vm和linux导入过程此处跳过。
docker安装环节指令
1.检查linux内核版本、更新yum、下载docker、启动docker指令
--检查内核版本,必须是3.10及以上`
uname -r
--更新系统内核版本
yum update
--下载并安装docker
yum install docker
--启动docker
systemctl start docker
--查看docker版本
docker -v
--设置开机启动docker
systemctl enable docker
--停止docker
systemctl stop docker
--查看本地ip
ip addr
--查看防火墙状态
service firewalld status
--关闭防火墙
service firewalld stop
2.docker常用指令
2.1镜像操作
-- 查询镜像XX
docker search XX
-- 下载镜像XX
docker pull XX
-- 查看本地仓库下镜像
docker images
-- 删除本地仓库下镜像
docker rmi XX-id
2.2容器操作
-- 启动容器,安装镜像,指定别名,做端口映射,后台运行
-- --name 别名
-- -p 容器内端口:外部端口
-- -d 后台运行(默认非后台运行)
-- XX:version 镜像版本,默认为最新
docker run --name 别名 -p 8888:8080 -d XX:version
-- 查看容器状态
-- -a 所有容器(默认只查看运行中容器)
docker ps -a
-- 启动容器
docker start YY-id
-- 删除容器
docker rm YY-id
-- 查看容器的日志
docker logs container-name/container-id
2.3镜像安装
镜像安装的流程和指令,主要参考dockerhub对应镜像的指导即可
仅这里的知识是否已经足够了呢?答案是不够的。除非镜像本身的自恰已经非常完善,并不需要从外部接入修改,否则,定制化配置、指定路径映射这些操作也是需要的。(后续再开章节介绍)
2.4 Tomcat挂载应用方法(如何进入容器内部以及如何部署)
-- 容器启动
docker start XX-id
-- 进入容器内部(找webapps目录,查看需要挂载的路径)
-- /bin/bask 是固定写法
docker exec -it XX-id /bin/bash
-- 删除旧容器,通过挂载的方式启动新容器
docker run -d -p 8090:8080 -v /root/tomcat01/webapps/:/usr/local/tomcat/webapps --name tomcat01 tomcat
如果是SpringBoot项目要通过Tomcat容器部署,另外两个要点是(感觉这里只是一种方式,应该还有更优雅的方式);另外一点要注意的是,用这种方式,application.properties中的port设置将失效,以tomcat的端口为对外端口。
1.尽量通过maven插件来打包(通过开发工具导出的包貌似有点问题)
<build>
<finalName>springboot-deploy</finalName>
<plugins>
<!-- 配置war打包插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
<!-- 禁止当项目中web.xml不存在时抛出异常 -->
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
<!-- 配置编译插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
2.启动类用特定的方式
@SpringBootApplication
public class DemoApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(DemoApplication.class);
}
}
3.安装过程中遇到的问题
1.Job for docker.service failed because the control process exited with error code.
https://blog.csdn.net/w1316022737/article/details/83692701
2.SELinux is not supported with the overlay2 graph driver on this kernel
https://blog.csdn.net/java_kider/article/details/80242091
3.默认仓库连接不稳定导致mysql下载不下来(解决办法为切换成国内的公开仓库)
http://mirrors.ustc.edu.cn/help/dockerhub.html?highlight=docker
4.还遇到了一个mysql和本地navicat版本加密规则不兼容的问题
通过容器内修改解决办法为:
https://www.cnblogs.com/yy-cola/p/11226924.html
https://www.cnblogs.com/zhurong/p/9898675.html
解决时考虑后续可能还要被其他客户端连接,所以实际解决时是升级本地navicat版本来解决的。