零基础用Docker部署微服务
1. docker架构

这里的Client和DOCKER_HOST(docker server)都是在本地的,docker仓库Registry是在远程的;
Client的docker命令通过Docker daemon与docker server进行交互;
images镜像是由应用已经被docker打包好的镜像,如java、nginx的镜像,这些镜像可以运行在容器containers里;
每一个container容器都是运行在docker server(宿主机)上的,每一个container容器都是隔离的、独立的;
每一个container容器相当于一个Linux操作系统,每一个container容器都有自己的ip地址,所以可以在不同的container内部设置相同的端口号,宿主机不同的端口号映射到不同的容器。

Docker是容器化技术的实现。

2. Docker的安装

7、安装Docker
sudo yum install -y docker-ce
8、启动

systemctl start docker
如果把docker加入到开机启动 systemctl enable docker
查看docker是否运行 ps -ef | grep docker
9. 查看docker版本
docker version


3. 配置阿里云上docker加速的地址
来源:https://cr.console.aliyun.com/cn-hangzhou/mirrors

4. docker常用命令
4.1 镜像相关命令
在docker仓库查找被docker打包的镜像: docker search java

利用docker下载java8: docker pull java:8
查看本地安装的docker镜像: docker images
删除指定镜像: docker rmi java
4.2 容器相关命令
新建并启动容器
使用docker run命令即可新建并启动容器,下面是一些常用的参数:

比如新建并启动一个Nginx:
docker run -d -p 8100:80 nginx

如果当前没有nginx镜像,那么会先自动下载该nginx镜像。
通过浏览器访问:

列出当前运行容器
docker ps

如图可以看到镜像的名称IMAGE,对应的CONTAINER_ID,以及PORTS。

停止容器
docker stop CONTAINER_ID || NAMES
强制停止容器
docker kill CONTAINER_ID
启动已停止的容器
docker start CONTAINER_ID
查看容器所有信息
docker inspect CONTAINER_ID
查看容器日志
持续输出日志(展示88行)
docker logs --tail=88 -f CONTAINER_ID(OR NAMES)
docker container logs CONTAINER_ID
查看容器里的进程
docker top CONTAINER_ID
查看已经创建的容器
docker ps -a

进入运行的容器(在docker容器中使用jmap等命令查看jvm内存等信息)
docker container exec -it CONTAINER_ID /bin/bash 或 docker container exec -it CONTAINER_ID sh

退出容器
exit
重命名一个容器
docker rename old_name new_name
删除容器
docker ps -a 查看所有容器(包括未运行的容器)
docker rm CONTAINER_ID
删除镜像
docker images
docker rmi IMAGE ID
查看一个容器对应的端口映射
docker port 容器名name
4.3 Dockerfile常用命令

5. 构建一个自己定义的nginx docker镜像
创建了一个目录docker,进入该目录下
vim Dockerfile
内容如下:
# Dockerfile文件,自定义一个nginx的index.html
FROM nginx
RUN echo '<h1>This is my nginx Dockerfile<h1>' > /usr/share/nginx/html/index.html
意思是先获得nginx官方镜像,然后我将运行的container容器中nginx的目录下的index.html替换成我的内容。
在Dockerfile文件所在的目录下,执行
docker build -t nginx:mynginx .
mynginx就是一个tag,相当于版本号,"."表示Dockerfile文件所在的路径,在当前目录下。

现在,查看一下本地镜像
docker images

现在已经有本地镜像了,下一步就是新建容器并且运行
docker run -d -p 8101:80 nginx:mynginx

用浏览器访问一下

自定义nginx镜像大功告成!
6. 简单使用docker部署一个微服务项目
这里打算部署一个eureka server,端口号8200。
1. 首先把项目mvn clean install,目的是将项目和项目所依赖的jar包打成一个可执行的jar包,java -jar jar包名.jar;
2. 打成的jar包在项目的target目录下,将jar包上传至Linux服务器的eureka目录下;
3. 将jar包所在的目录创建一个Dockerfile文件 vim Dockerfile,内容为
# 基于哪个镜像 FROM java:8 # 将文件挂载到当前容器 VOLUME /tmp # 复制文件到容器根目录"/",并且命名为app.jar ADD eureka-0.0.1-SNAPSHOT.jar /app.jar
# 声明需要暴露的端口 EXPOSE 8200 # 配置容器启动后执行的命令,java -jar /app.jar ENTRYPOINT ["java","-jar","/app.jar"]
4. 在Dockerfile文件所在目录,使用docker build 命令构建镜像
docker build -t eureka-server:0.0.1 .
检查是否image构建成功: docker images
5. 新建容器并且运行
docker run -d -p 8200:8200 eureka-server:0.0.1
6. 最后访问宿主机的8200端口

该微服务部署成功!
7.docker-compose
https://www.cnblogs.com/theRhyme/p/10607872.html
来源:
图灵学院
零基础用Docker部署微服务的更多相关文章
- Docker部署微服务
部署时需要注!意!: 打开防火墙对应的应用端口!!用于外部访问!!内部互访问则不需要. 和对应数据库,缓存,消息中间件服务等的端口(当然这些服务必须先开启,它们也可使用docker部署开启) ,用于容 ...
- 使用docker部署微服务
https://my.oschina.net/silenceyawen/blog/1819472 http://jvm123.com/2019/08/docker-shi-yong.html 从201 ...
- docker部署微服务遇到的问题二
自己尝试将微服务部署到docker上面,期间按照周立的微服务架构实战13章进行学习 按照书上的步骤,一切部署成功之后,尝试访问,一直没有成功访问,周五部署了两遍 折腾了一下 还是没有找到为啥,周一继续 ...
- Docker部署微服务项目
测试包准备工作 1.spring.io或者ide创建demo工程 spring官网 2.本地demo代码,打包成jar包 使用Dockerfile构建微服务镜像 3.将jar包上传到你的vps lin ...
- docker微服务部署之:六、Rancher管理部署微服务
docker微服务部署之:五.利用DockerMaven插件自动构建镜像 一. 什么是Rancher Rancher是一个开源的企业级容器管理平台.通过Rancher,企业再也不必自己使用一系列的开源 ...
- docker入门与部署微服务--学习笔记
最近公司进一步去windows,走向 linux+云化. 原来的一大坨windows虚拟机服务器都要转向linux, 既然走向linux的话,那么docker肯定是要涉足的. 故学习了docker入门 ...
- Docker实战 | 第二篇:IDEA集成Docker插件实现一键自动打包部署微服务项目,一劳永逸的技术手段值得一试
一. 前言 大家在自己玩微服务项目的时候,动辄十几个服务,每次修改逐一部署繁琐不说也会浪费越来越多时间,所以本篇整理通过一次性配置实现一键部署微服务,实现真正所谓的一劳永逸. 二. 配置服务器 1. ...
- Devops 开发运维高级篇之Jenkins+Docker+SpringCloud微服务持续集成——部署方案优化
Devops 开发运维高级篇之Jenkins+Docker+SpringCloud微服务持续集成--部署方案优化 之前我们做的方案部署都是只能选择一个微服务部署并只有一台生产服务器,每个微服务只有一个 ...
- 【译文】用Spring Cloud和Docker搭建微服务平台
by Kenny Bastani Sunday, July 12, 2015 转自:http://www.kennybastani.com/2015/07/spring-cloud-docker-mi ...
随机推荐
- ES6的学习记录
1.let命令: 基本用法: ES6新增了let命令,用来声明变量.用法类似于var,但是所声明的变量只在let命令所在的代码块内有效. { let a = 10; var b = 1; } cons ...
- Python的字典类型
Python的字典类型为dict,用{}来表示,字典存放键值对数据,每个键值对用:号分隔,每个键值对之间用,号分隔,其基本格式如下: d = {key1 : value1, key2 : value2 ...
- mongodb的Limit|skip|投影|排序|消除重复
Limit 方法limit():用于读取指定数量的文档 语法: db.集合名称.find().limit(NUMBER) 参数NUMBER表示要获取文档的条数 如果没有指定参数则显示集合中的所有文档 ...
- Ruby学习笔记7: 添加身份验证(adding Authentication)
我们已经完成了Category & Product页面内容的增删改查,再加入一个身份验证即可成为一个较完整的Rails App了.本文就来完成这个任务. We now need to give ...
- HANA私有云解决方案
在移动互联网时代,不支持在云上的部署一定会落伍的,HANA作为SAP力推的技术,对云的支持也做的很不错,今天我们就来探讨一下HANA私有云解决方案,至于公有云或者混合云,思路也是大同小异了. ...
- 《算法》第四章部分程序 part 19
▶ 书中第四章部分程序,包括在加上自己补充的代码,有边权有向图的邻接矩阵,FloydWarshall 算法可能含负环的有边权有向图任意两点之间的最短路径 ● 有边权有向图的邻接矩阵 package p ...
- Google maps javascript API
https://developers.google.com/maps/documentation/javascript/datalayer .... GeoJSON 是一种针对互联网上共享地理空间数据 ...
- mybatis四(动态sql)
<1><select id="selectUserByConditions" parameterType="user" resultType= ...
- spark 运行架构
spark 运行架构基本由三部分组成,包括SparkContext(驱动程序),ClusterManager(集群资源管理器)和Executor(任务执行过程)组成. 其中SparkContext负责 ...
- Python基础3 函数、递归、内置函数
本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数 温故知新 1. 集合 主要作用: 去重 关系测 ...