自己研究了几天Ddocker,总结了一下,补充了文章《30分钟入门系列》。我们不会重复在互联网上找到的Docker 定义。 Docker是一个虚拟化的Linux容器,是对当前流行的SpringBoot和微服务框架的补充。从开发到部署的整个过程变得真正灵活。这里需要重点关注三个关键词:Linux容器、SpringBoot、敏感性。首先,Docker不能用来部署本地应用程序(如果你曾经开发过基于Qt的桌面应用程序,你就会知道不一致的执行环境是开发人员的噩梦)。其次,虽然本篇博客是针对Java开发者的,但是Docker的使用场景并不仅限于此。最后,敏捷意味着你可能需要对你的开发方法进行调整,一旦你了解了如何使用Docker,就应该认真考虑这一点。
1、环境改善
我个人的测试环境是VirtualBox、CentOS7、以及最新版本的Spring Boot。首先,以最小模式安装CentOS。
我们建议在安装阶段默认打开网络链接.然后等待20分钟让虚拟机安装。
这是最小安装,因此我们建议在完成后安装一些基本命令。
1.百胜更新
2. yum install -y net-tools vimcurl wget
即使您已经创建了上述测试环境,请从下面开始安装Docker。当我访问官方网站时,我发现了精心准备的安装教程。现在您可以登录Docker的官方网站,在这里您还可以找到基于Centos的安装说明。不过,为了以防万一,我会把它记录在我的博客上。如果您无法使用英语或发现阅读困难,请按照以下步骤操作:
1.卸载系统中以前的版本
$ sudo yum 删除docker \
码头工人客户端\
docker-客户端-最新\
Docker常见\
码头工人最新\
docker-最新-logrotate \
docker-logrotate \
码头工人塞利纳克斯\
Docker 引擎- Selinax\
码头引擎
2、安装工具
$ sudo yum install -y yum-utils \
设备映射器持久数据\
LVM2
3、配置Docker安装yum源
$ sudo yum-config-manager\
--添加存储库\
https://download.docker.com/linux/centos/docker-ce.repo
4.安装Docker CE
$ sudo yum 安装docker-ce
5.启动Docker
$ sudo systemctl 启动docker
6.运行Hello World
$ sudo docker 运行hello-world
7 配置国内图片加速。
卷曲-sSL https://get.daocloud.io/daotools/set_mirror.sh sh -s http://57326c54.m.daocloud.io
2. 操作指南
有关详细说明,互联网上有许多可用的docker 命令,并且可以在更可靠的位置找到。这里仅列出并解释了一些最重要的命令。
1.查看镜像列表:docker images
您不需要那么多镜子,但至少需要一个hello-world。是的,这是您之前下载的测试图像。
2、查看容器列表:docker ps -a
您应该只看到一个hello-world 容器。
这里我们触及了关于Docker 的第一个重要概念:镜像和容器。不过,我们暂时不讨论这两个概念。可以重复执行。
$ sudo docker 运行hello-world
接下来,查看容器列表。
是的,如果多次运行同一个映像,您将看到只下载了一个映像,但出现了多个容器。更准确地说,运行几次hello-world 将生成多个容器。
3.停止并删除容器:docker stop/rm [container_id]
当我把所有的helloworld容器都拿掉后,整个世界瞬间变得更加美丽了。
4.删除镜像:docker rmi [image_id]
去掉hello-world的图像后,世界终于又安静了。
现在你已经感性地理解了它,你可以解释图像和容器的概念了。
镜像就像一个iso文件,docker需要使用该镜像作为源。镜像可以重复使用;每次通过镜像启动docker,就变成一个容器,容器之间是隔离的。当您删除容器时,容器内的所有更改都会丢失。
最经典的图就是用来表示镜像和容器之间的关系。
是的,完整的Docker 项目如下所示:本地系统(boosfs)上可以有多个镜像(image),它们之间有继承关系,执行环境的最顶层就是容器。容器)。 )。所有修改操作仅发生在容器内。容器关闭时数据会丢失,除非将容器写入新的镜像层。然而,还有更好的方法来存储数据,但我们今天不讨论它们。
5. 获取镜像:docker pull [image_name]
****************************************************** ******
确保配置了国内图像加速。
vim /etc/docker/daemon.json
作品:
{
'注册表镜像': ['http://57326c54.m.daocloud.io']
}
重新启动Docker:systermctl 重新启动docker
****************************************************** ******
首先查看CentOS相关镜像
docker搜索sentos
第一个看起来很“官方”
docker拉centos:最新
下载完成后,首先验证镜像docker镜像没有问题。
6. 交互式启动镜像: docker run -it [image_name] [args.]
docker run -it centos /bin/bash
啊?似乎一切都没有改变。仔细查看命令提示符是否已更改。
是的,您进入了容器,进入了容器的CentOS操作界面。
7.安装MySQL
$ sudo yum install -y wget
$ sudo wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
$ sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm
$ sudo yum 安装mysql-community-server
作品
$ sudo mysql_install_db --user=mysql --ldata=/var/lib/mysql
开始
$ sudo mysqld_safe
8.离开容器:Ctrl+q、Ctrl+p
此组合键用于退出容器并使其在后台运行。
9. 重新登录容器: docker exec -it [container_id] [args.]
docker exec -it 21f99e364fb1 bash
授予MySQL root 用户远程连接权限。
# mysql -u 根目录
mysql UPDATE mysql.user SET 密码=PASSWORD('12345678') WHERE user='root';
使用GRANT 选项将mysql *.* 上的所有权限授予“12345678”标识的“root”@“%”。
mysql flash 权限。
10.提交镜像:docker commit [container_id] [myimage_name:tag]
要提交您自己的映像,您必须首先终止当前容器。
出口
docker提交21f99e364fb1 centos:mysql
11.端口映射: docker run -p [local_port]:[docker_port] -it [image_name] [args.]
docker run -p 3307:3306 -it centos:mysql /bin/bash
这样就可以在本地操作系统中访问虚拟机的3307端口来访问自己部署在docker上的mysql服务了。
3. 为您的SpringBoot项目构建Docker镜像
如果到目前为止一切顺利,您就已经掌握了使用docker 的基础知识。上面的mysql 安装实际上只是熟悉docker 基本命令的入门。在实际开发中,很少将mysql部署到docker上。更常见的开发场景是从SpringBoot项目生成Docker镜像。现在我们正式进入实战阶段。
1.首先在本地构建SpringBoot项目
通过SpringBoot官方网站生成一个基础项目。
接下来,通过您喜欢的IDE 导入并打开项目,并将依赖项添加到pom.xml 文件。
依赖
groupIdorg.springframework.boot/groupId
artifactIdspring-boot-starter-web/artifactId
/依赖
插入
groupIdcom.spotify/群组ID
artifactIddocker-maven-plugin/artifactId
版本1.0.0/版本
作品
imageName${docker.image.prefix}/${project.artifactId}/imageName
dockerDirectory src/main/docker/dockerDirectory
资源
资源
目标路径//目标路径
目录${project.build.directory}/directory
include${project.build.finalName}.jar/include
/资源
/资源
/作品
/插入
创建控制器文件。
@RestController
公共类DockerController {
@RequestMapping('/')
公共字符串你好(){
返回“你好,Docker!”
}
}
然后在本地运行看看是否有问题。如果一切正常,请继续下一步。
2.接下来需要将项目放入Docker环境中进行打包。
(1)在虚拟机上安装jdk
yum -y 安装java-1.8.0-openjdk*
(2) 设置环境变量如下。
vim /etc/配置文件
导入JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-0.b14.el7_4.x86_64
导出PATH=$PATH:$JAVA_HOME/bin
(3)从Apache官网下载最新版本的maven。
tar vxf apache-maven-3.5.4-bin.tar.gz
mv apache-maven-3.5.4 /usr/local/maven3
(4) 设置环境变量,如下图所示。
导入MAVEN_HOME=/usr/local/maven3
导出PATH=PATH:MAVEN_HOME/bin
(5)启用环境变量
源/etc/profile
(6)编写DockerFile文件
在主目录下添加docker目录,并创建DockerFile文件。 文件内容如下。
来自openjdk:8-jdk-alpine
体积/温度
添加hellboot-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ['java','-Djava.security.egd=file:/dev/./urandom','-jar','/app.jar']
(7) 接下来,在项目路径中使用Maven包。
mvn 包docker:build
如果构建中途失败,可能是因为你的项目名称和我的不同。通常,您可能会在初始构建期间看到各种错误消息。只需将其放在互联网上并查找即可。
构建完成后,您可以通过Docker镜像查询镜像列表。
是的,第一张图片是我们的项目。让我们启动此映像并将其映射到服务器上的端口80。
docker run -p 80:8080 -t springboot/helloboot
最后,当你看到“Hello Docker!”时,直接从本地浏览器访问虚拟机的IP。
描述使用Docker 成功部署Spring Boot 项目。
版权声明:本文转载于网络,版权归作者所有。如有侵权,请联系本站编辑删除。