文章目录
已实践,待更新!
Windows电脑安装docker
第一步确定windows版本:
Docker支持在mac、windows、linux上安装。但是在windows系统中Docker目前仅有win10专业版和企业版的安装包。
不同版本下载地址:
Win10专业版下载
Win10专业版下载地址,专业版点击下载,下载后运行exe即安装完成
Docker 有专门的 Win10 专业版系统的安装包,需要开启 Hyper-V,请检查是否开启
默认安装路径是c盘,如果不想让c盘爆炸请往下看。
默认为c盘,为节省c盘空间,修改存放位置
其实docker只是一个外壳,本质上还是借助与windows平台的hyper-v创建虚拟机,所有pull到本地的image都会存放在虚拟机中(C:\Users\Public\Documents\Hyper-V\Virtual hard disks),要改变路径的话只需在hyper-v管理器里设置虚拟硬盘位置就可以了。操作如下:
打开Hyper-V管理器
分别操作这两个:
Hyper-V设置:
DockerDesktopVM设置
设置DockerDesktop
右键小图标选择Setting
到此就完成了,总结在一张图就是:
win7/win8/win10家庭版下载
win7/win8/win10家庭版需要通过docker toolbox来安装。注:国内可以使用 阿里云镜像来下载,点击即可家庭版点击下载
安装比较简单,双击运行,点下一步即可,可以勾选自己需要的组件:
注:docker toolbox 是一个工具集,它主要包含以下一些内容
Docker CLI - 客户端,用来运行 docker 引擎创建镜像和容器。
Docker Machine - 可以让你在 Windows 的命令行中运行 docker 引擎命令。
Docker Compose - 用来运行 docker-compose 命令。
Kitematic - 这是 Docker 的 GUI 版本。
Docker QuickStart shell - 这是一个已经配置好Docker的命令行环境。
Oracle VM Virtualbox - 虚拟机。
下载完成之后直接点击安装,安装成功后,桌边会出现三个图标,如下图所示:
点击 Docker QuickStart 图标来启动 Docker Toolbox 终端
如果系统显示 User Account Control 窗口来运行 VirtualBox 修改你的电脑,选择 Yes
$ 符号那你可以输入以下命令来执行
$ docker run hello-world
Unable to find image 'hello-world:latest' locally
Pulling repository hello-world
91c95931e552: Download complete
a8219747be10: Download complete
Status: Downloaded newer image for hello-world:latest
Hello from Docker.
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker Engine CLI client contacted the Docker Engine daemon.
2. The Docker Engine daemon pulled the "hello-world" image from the Docker Hub.
(Assuming it was not already locally available.)
3. The Docker Engine daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker Engine daemon streamed that output to the Docker Engine CLI client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
For more examples and ideas, visit:
https://docs.docker.com/userguide/
https://blog.csdn.net/weixin_39494923/article/details/85856098 (安装windowsdocker环境及部署)
https://www.csdn.net/gather_22/MtjaUgxsODM3MjQtYmxvZwO0O0OO0O0O.html (windows下安装做迁移)
https://blog.csdn.net/qq_37131345/article/details/106215562 (windows下安装做迁移)
https://www.cnblogs.com/pandaly/p/12929187.html (镜像加速器)https://lmksjhfd.mirror.aliyuncs.com
https://blog.csdn.net/qq_22313643/article/details/82901296 (解决不能连接本地的问题 DESK_HOST)
https://blog.csdn.net/lvyuan1234/article/details/69255944
修改配置docker镜像
首先找自己的加速器地址,每个人都不一样的,操作如下:
加速器地址
点击阿里云官网
点击控制台:
登录,没有账号的注册一个
搜索镜像
点击容器镜像服务,就有了自己的加速器,每个人的都不一样。。。
配置Docker镜像
右键小图标,选择Setting:
配置Docker Engine即可
构建打包应用实现部署
1)使用docker-maven-plugin
docker-maven-plugin 插件默认连接本地 Docker 地址为:localhost:2375,所以我们需要先设置下环境变量。(不设置会报错的:Maven构建Docker镜像报错Connect to localhost:2375 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed:)
三种方式:
-
docker小图标打开Setting
-
DOCKER_HOST=tcp://:2375 其中:改为你上传的服务ip,本地就写127.0.0.1
给你个链接,哈哈 -
注意:如果没有设置 DOCKER_HOST 环境变量,可以命令行显示指定 DOCKER_HOST 来执行,如我本机指定 DOCKER_HOST:DOCKER_HOST=unix:///var/run/docker.sock mvn clean install docker:build。
打包时maven的pom文件
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<!-- configuration 自己加的-->
<configuration>
<!-- 指定程序入口 (需要注意的地方)-->
<mainClass>com.example.myprojectspringboot.MyprojectSpringbootApplication</mainClass>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- 添加docker-maven插件 -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.13</version>
<configuration>
<imageName>${project.artifactId}:${project.version}</imageName>
<baseImage>java</baseImage>
<entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
<!--覆盖已存在的标签 镜像-->
<forceTags>true</forceTags>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins>
</build>
接下来命令行进入项目的文件夹(DockerDeskTop有自己的工具PowerSheel):
D:\myself\myselfFiles\project\myproject-springboot
<build>
<plugins>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.13</version>
<configuration>
<forceTags>true</forceTags> <!--覆盖相同标签镜像-->
<imageName>my/eureka:0.0.1</imageName> <!--指定镜像名称 仓库/镜像名:标签-->
<baseImage>lwieske/java-8</baseImage> <!--指定基础镜像,相当于dockerFile中的FROM<image> -->
<dockerHost>http://192.168.10.72:2375</dockerHost> <!-- 指定仓库地址 -->
<entryPoint>["java","-jar","/${project.build.finalName}.jar"]</entryPoint> <!-- 容器启动执行的命令,相当于dockerFile的ENTRYPOINT -->
<resources>
<resource> <!-- 指定资源文件 -->
<targetPath>/</targetPath> <!-- 指定要复制的目录路径,这里是当前目录 -->
<directory>${project.build.directory}</directory> <!-- 指定要复制的根目录,这里是target目录 -->
<include>${project.build.finalName}.jar</include> <!-- 指定需要拷贝的文件,这里指最后生成的jar包 -->
</resource>
</resources>
</configuration>
</plugin>
</plugins>
</build>
使用maven构建镜像并push到私有仓库
执行命令打包到本地镜像
mvn clean package docker:build -Dmaven.test.skip=true
注:(-Dmaven.test.skip=true不执行测试用例,也不编译测试用例类)
(-DskipTests,不执行测试用例,但编译测试用例类生成相应的class文件至target/test-classes下)
查看镜像是否成功:
docker images
运行镜像
docker run -d -p 8090:8090 myproject-springboot:0.0.1-SNAPSHOT
备注:-p表示端口映射,冒号左边为docker容器外的端口号,右边为容器内的端口号,-d表示后台运行
至此结束,访问应用
http://localhost:8090/user/first
加上项目请求路径
2)使用DockerFile构建部署
最好使用dockerfile构建,学过docker就知道为啥了。太困了,后期再补吧。
博客
DockerFile指令详解
博客
可以了解一下Harbor私有仓库,毕竟现在已经是云原生时代了,go、docker、kubernets未来可期呀!
3)当然也可以在idea中实现
备注一些命令
构建其他服务并打包(依赖,以及配置正确是关键)
1)如果依赖其它服务或者module查看是否依赖是否正确,否则会报 Could not resolve dependencies for project
解决:优先在最外层项目上打包 执行clean install -Dmaven.test.skip=true 把依赖打到本地仓库
2)继续执行2的打包镜像操作
其中docker常用命令:
1.查看所有镜像:#docker images
2.查看所有容器(包含状态):#docker ps -a
3.查看正在启动的容器: #docker ps
4.终止一个运行中的容器 #docker stop $CONTAINER_ID
5.启动一个容器:#docker start $CONTAINER_ID
6.重启一个容器:#docker restart $CONTAINER_ID
7.查看Container的映射的端口 #docker port < container name or id>
8.查看Container的IP地址 #docker inspect < container name or id>| grep IPAddress
9.查看容器运行日志:#docker logs < container name or id>
10.实时查看docker容器日志:#docker logs -f -t --tail 行数 < container name or id>
11.删除docker容器:docker rmi < container name or id>
注意点:
1. 删除前需要保证容器是停止的 stop
2. 需要注意删除镜像和容器的命令不一样。 docker rmi < container name or id> ,其中 容器(rm) 和 镜像(rmi)
3. 顺序需要先删除容器
12.如果想要把镜像存出到本地文件,可以使用docker save命令#docker save –o /data/testimage.tar testimage:latest (以testimage镜像名称为例)
13.从文件载入镜像可以使用Docker load命令# docker load < testimage.tar
14 进入容器#docker exec -it < container name or id> /bin/bash
参考:https://blog.csdn.net/weixin_39494923/article/details/85856098
推荐
https://blog.csdn.net/JENREY/article/details/84493812 dockerToolbox和docker for windows的区别
https://blog.csdn.net/tina_ttl/article/details/51372604 不一样的安装教程
https://blog.csdn.net/novanova2009/article/details/86529949 docker desktop使用入门
开启Hyper-V之后,电脑上边的VMware就不能启动了。若想再启动VMware参考:
https://www.cnblogs.com/enddark/p/13554194.html
注
此处我仅仅执行了四步:
关闭了HV 主机服务,
取消Hyper-V的勾选,
执行了bcdedit /set hypervisorlaunchtype off命令(cmd管理员执行,使用powershell执行会失败)
重启计算机