零基础用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 ...
随机推荐
- CPU Rings, Privilege, and Protection.CPU的运行环, 特权级与保护
原文标题:CPU Rings, Privilege, and Protection 原文地址:http://duartes.org/gustavo/blog/ [注:本人水平有限,只好挑一些国外高手的 ...
- 外网访问内网的FTP服务器-原理解析
1. 背景简介 最近研究如何在内网搭架FTP服务器,同时要保证外网(公网)能访问的到.终成正果,但走了一些弯路,在此记下,以飨后人. 2. 基础知识 FTP 使用 2 个端口,一个数据端口和一个命令端 ...
- Python 文件的操作
新建 # ==================新建==================# 新建文件夹,若倒数第二层文件夹不存在则会报错os.mkdir(r"/home/python" ...
- 初步认识Angulajs
Angulajs是一个MVC前段框架,项目中使用Angulajs必须按照框架的写法编写代码,可以统一代码规范易于后期代码的维护. M Model 模型-数据,V View 视图-表现层 HTML/C ...
- android 开发 实现一个ListView套嵌GirdView的滚动布局
效果图 实现思维: 首先要处理管理好需要导入的数据,我们这里创建class来处理这些数据并且便于管理它们. 创建一个主activity的布局,里面需要一个ListView控件. 创建一个class继承 ...
- Javascript学习笔记5 - 滑动Slides
开始之前:http://docs.jquery.com/ 是jQuery文档的网站, https://jsfiddle.net/是js的在线验证工具 在html中,有这几个标签: javascript ...
- PathUtil
public String getParentPath(final String originalPath) { boolean isSplitRequired = true; int lastSla ...
- 《GPU高性能编程CUDA实战》第六章 常量内存
▶ 本章介绍了常量内存的使用,并给光线追踪的一个例子.介绍了结构cudaEvent_t及其在计时方面的使用. ● 章节代码,大意是有SPHERES个球分布在原点附近,其球心坐标在每个坐标轴方向上分量绝 ...
- python中的reverse
reverse()将列表中的所有元素位置反转,举个例子: a = [1, 2, 3, 4, 5] a.reverse() print(a) 输出结果: [5, 4, 3, 2, 1]
- django之register_model(self, app_label, model):
前面在阅读apps_install源码时,一直不明白app的model是什么时候导入的,今天在看modelbase源码时,看到了new_class._prepare() new_class._meta ...