原创头条号:码农code之路,作者:潘吉祥,转载请标明出处

上一篇我们学习了如何使用Dockerfile制作自己的镜像,不过这种方式更像纯粹的运维方式,作为开发者来说,未免有些小繁琐,一个不小心写错些命令就执行失败,我们还不知道错误在哪,这着实有些……

放心,今天的东西会帮你解决这个问题!再次之前,我觉得有必要先对之前的东西稍微做一下回顾,以免混淆:

查看镜像:docker images查看正在运行的容器:docker ps查看所有的容器:docker ps -a删除镜像:docker rmi 镜像名(id)删除容器:docker rm 容器名(id)

我们可以创建自己的镜像,也可以从公共仓库下载现成的镜像;

容器的创建依赖对应的镜像(我们可以把镜像比作一个安装包,把容器看做运行的对应的软件)

下面进入今天的正题:

为了跟切近真实开发场景,笔者使用了自己开发的一个小项目来进行演示

事实上在企业开发中,我们都会把自己的微服务镜像打包到我们自己的docker的私有仓库,所以这里还要简单地介绍关于私有仓库呦:

1. 私有仓库也很简单,操作都是基本的,首先拉取私有仓库镜像,有了它就可以创建私有仓库容器:

docker pull registry

2.创建启动私有仓库容器:

docker run -id --name=my_registry -p 5000:5000 registry

可以看到,我们使用下载到的registry创建并运行了my_registry容器!

此时我们可以使用浏览器查看我们的私有仓库:

格式:http://docker宿主机ip:5000/v2/_catalog

我们可以看到json格式的输出:表示我们现在的私有仓库没有任何镜像。

注意:ip是虚拟机的ip,不是物理机的ip。

3. 此时我们的私有仓库只是启动了,但是并没有与我们的docker建立联系,我们还需要修改配置文件:

vim /etc/docker/daemon.json添加以下配置,让docker与我们的私有仓库建立联系。"insecure-registries":["192.168.1.23:5000"]

这个配置文件是不是有点熟悉?没错,之前是用来配置docker下载镜像加速的,注意,多个配置之间以逗号分隔。

4. 然后重启docker服务:

我们可以测试一下我们的私有仓库是否可以使用了,上传一个镜像我们试试:

标记为此私有仓库的镜像:docker tag 镜像名(id) 私有仓库ip端口/自定义名字

此操作只是标记这个镜像要上传到的私有仓库,push的时候docker能识别它要上传到定义的仓库。

5. 可以看到我们标记的镜像,这样我们就可以把它上传到我们的私有仓库了,不过刚才我们重启了docker,因此registry容器需要重新运行起来

docker start my_registrydocker push 我们标记的镜像

可以看到,上传了哈!

好了,前奏工作完成之后进入今天的重点环节。

DockerMaven

我们部署微服务的方式有两种:

第一种:通过源码打包之后手动上传到虚拟机然后再复制到jdk容器里;

第二种:也是开发使用的方式,避免上面太过繁琐的方法,采用更加自动化的maven插件部署。

下面来看具体的步骤:

1. 修改docker配置,让它可以让程序远程访问:

vim /lib/systemd/system/docker.service找到ExecStart,在它后面添加配置 -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

这是没修改之前的配置

修改之后:

2. 修改之后,刷新配置,重启docker即可:

systemctl daemon-reloadsystemctl restart dockerdocker start registry

3. 在服务工程pom文件里添加插件配置

        app                                    org.springframework.boot                spring-boot-maven-plugin                                        com.spotify                docker-maven-plugin                0.4.13                                    192.168.1.23:5000/${project.artifactId}:${project.version}                    jdk1.8                    ["java", "-jar","/${project.build.finalName}.jar"]                                                                        /                            ${project.build.directory}                            ${project.build.finalName}.jar                                                                http://宿主机ip:2375                                        

其实插件的本质也是使用Dockerfile,以上插件生成的Dockerfile文件如下:

FROM jdk1.8ADD app.jar /ENTRYPOINT ["java","‐jar","/app.jar"]

4. 使用maven命令打包并上传:

在服务工程目录下执行:

mvn clean package docker:build -DpushImage

过程可能会下载一些依赖,然后就可以看到上传了:

此时再查看私有仓库和我们的docker镜像:

5.这时就可以创建容器了:

这里的端口是server:port

docker run -id --name=literature -p 9000:9000 192.168.1.23:5000/literature:1.0-SNAPSHOT

我们的服务已经成为容器运行起来的!

可以访问哦!

注意:如果是自己的测试环境,服务的数据库配置文件连接的是localhost,要改成本机的真实在打包上传;

还有我这里是一个非常耦合的工程,没有依赖工程,如果是在微服务开发,MySQL和中间件等服务制成了容器运行在docker,那么在打包上传私有仓库之前打包的工程所依赖的服务都开启了。

至此,docker入门教程已经结束了!初学者还是要自己亲自动手实践才好啊!

docker registry push 覆盖_原创 | 全网最实在的docker入门教程四相关推荐

  1. docker 镜像修改的配置文件自动还原_原创 | 全网最实在的docker入门教程四

    作者:潘吉祥 上一篇我们学习了如何使用Dockerfile制作自己的镜像,不过这种方式更像纯粹的运维方式,作为开发者来说,未免有些小繁琐,一个不小心写错些命令就执行失败,我们还不知道错误在哪,这着实有 ...

  2. docker registry push 覆盖_docker容器和镜像操作 - 恋恋风辰

    基于本地模板导入镜像 假如本地有一个ubuntu系统模板压缩包, 可以通过import导入生成新的镜像 cat ubuntu-18.04.tar.gz | docker import - ubuntu ...

  3. 原创 | 全网最实在的docker入门教程一

    作者:潘吉祥 为什么学习docker 近年来微服务架构真的是非常流行了,作为开发者,即时你没有做过微服务,但肯定谈论过它或者听别人谈论过它.那么我们的docker和微服务之间究竟有着什么联系呢? 众所 ...

  4. docker desktop ubuntu镜像_原创 | Docker入门,看了不理解,假一赔命

    写在前面 这篇博客适合谁? 对于Docker并不了解,只是有一点模糊的感觉,觉得Docker可以当成虚拟机用之类的 只是下载了Docker软件,对于怎么配置,怎么玩,第一步干什么,完全一无所知 其二, ...

  5. docker registry http api v2(原创请注明出处)

    author: zqh date: 2016-5-24 docker registry v2版本的http api 一直没有找到合适的,自己通过阅读官方文档整理了一下. 概要 method path ...

  6. docker image name 更改_将前端应用打包成docker镜像并部署?仅需一个脚本就搞定

    1.前言 前段时间,自己搞了个阿里云的服务器.想自己在上面折腾,但是不想因为自己瞎折腾而污染了现有的环境.毕竟,现在的阿里云已经没有免费的快照服务了.要想还原的话,最简单的办法就是重新装系统.而一旦重 ...

  7. 服务器运维浏览器,本机浏览器如何访问docker容器的内容_网站服务器运行维护,浏览器,docker...

    docker无法下载镜像怎么办_网站服务器运行维护 docker无法下载镜像的解决方法是:1.运行命令[systemctl stop firewalld]关闭防火墙:2.运行命令[date -s xx ...

  8. sql数据库教程百度云_【推荐】零基础水彩画入门教程|零基础水彩教程百度云...

    零基础水彩画入门教程|零基础水彩教程百度云! 照着教程画却总是画不好,这些水彩技法你真的学会了吗? 盲目地照着葫芦画瓢,不懂控制确实很难学会,可以关注一下公众号:每日学绘画,可以领取水彩电子书和全套视 ...

  9. 全网首份Nas-tool详细入门教程(包含一些问题的处理方法)

    前言: 何为Nas-tool 对于影音爱好者来说,一般观看影片需要这么几个步骤,寻找资源→使用BT工具(QBTR)进行下载→资源命名整理→硬链接→使用emby.jellyfin.plex等进行资源信息 ...

最新文章

  1. 关于SAP BW提示“Carry out repairs in non-original only
  2. post基础-百度翻译接口测试
  3. 洛谷 4364 [九省联考2018]IIIDX——“预留”的思路
  4. java正则 找出数字_Java使用正则表达式实现找出数字功能示例
  5. 使用amap-js引入高德地图AMap及其UI组件AMapUI
  6. iOS - 富文本AttributedString
  7. Lua协程Coroutine是什么
  8. 视频教程-大数据编程语言scala讲座-其他
  9. flutter插件出现英文
  10. Android面试准备复习之Android知识点大扫描
  11. 第十三章:相关方管理
  12. 快速破解IDEA(2017)
  13. 使用VS2019配置EDK2安装教程
  14. android中小数怎么定义,android 如何保留数据两位小数
  15. Molecular Psychiatry:对四种主要精神疾病间的白质微结构改变的大型mega分析
  16. 华为发生工商变更,瞄准5G车联网大蛋糕!(附产业重要数据下载)
  17. js数组的方法和扩展运算符
  18. keyshot聚光灯_KeyShot 6使用技巧
  19. spring中的hibernate-validate数据校验
  20. [乐意黎翻译]JavaScript命令之Console大全

热门文章

  1. 说实话,写了这么多程序了,还从来没有用JUnit作为单元测试工具测试过,今天就来学习一下
  2. Spark基础学习笔记11:Scala运算符
  3. MyBatis框架笔记04:MyBatis关联数据查询
  4. 如何设置省略号对其序号 html,html – 包含省略号和垂直对齐中间的框中的多行...
  5. 【英语学习】【Daily English】U14 Transportation L04 I'm going to go screen
  6. 【英语学习】【WOTD】circadian 释义/词源/示例
  7. 域名中主机名是第几个_CentOS7系统如何修改主机名
  8. mysql的缓存机制是什么意思_MySQL缓存机制详解
  9. 条码生成 SDK - Zint 教程及示例
  10. JavaScript面向对象--继承 (超简单易懂,小白专属)...