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

来源:

www.imooc.com

图灵学院

零基础用Docker部署微服务的更多相关文章

  1. Docker部署微服务

    部署时需要注!意!: 打开防火墙对应的应用端口!!用于外部访问!!内部互访问则不需要. 和对应数据库,缓存,消息中间件服务等的端口(当然这些服务必须先开启,它们也可使用docker部署开启) ,用于容 ...

  2. 使用docker部署微服务

    https://my.oschina.net/silenceyawen/blog/1819472 http://jvm123.com/2019/08/docker-shi-yong.html 从201 ...

  3. docker部署微服务遇到的问题二

    自己尝试将微服务部署到docker上面,期间按照周立的微服务架构实战13章进行学习 按照书上的步骤,一切部署成功之后,尝试访问,一直没有成功访问,周五部署了两遍 折腾了一下 还是没有找到为啥,周一继续 ...

  4. Docker部署微服务项目

    测试包准备工作 1.spring.io或者ide创建demo工程 spring官网 2.本地demo代码,打包成jar包 使用Dockerfile构建微服务镜像 3.将jar包上传到你的vps lin ...

  5. docker微服务部署之:六、Rancher管理部署微服务

    docker微服务部署之:五.利用DockerMaven插件自动构建镜像 一. 什么是Rancher Rancher是一个开源的企业级容器管理平台.通过Rancher,企业再也不必自己使用一系列的开源 ...

  6. docker入门与部署微服务--学习笔记

    最近公司进一步去windows,走向 linux+云化. 原来的一大坨windows虚拟机服务器都要转向linux, 既然走向linux的话,那么docker肯定是要涉足的. 故学习了docker入门 ...

  7. Docker实战 | 第二篇:IDEA集成Docker插件实现一键自动打包部署微服务项目,一劳永逸的技术手段值得一试

    一. 前言 大家在自己玩微服务项目的时候,动辄十几个服务,每次修改逐一部署繁琐不说也会浪费越来越多时间,所以本篇整理通过一次性配置实现一键部署微服务,实现真正所谓的一劳永逸. 二. 配置服务器 1. ...

  8. Devops 开发运维高级篇之Jenkins+Docker+SpringCloud微服务持续集成——部署方案优化

    Devops 开发运维高级篇之Jenkins+Docker+SpringCloud微服务持续集成--部署方案优化 之前我们做的方案部署都是只能选择一个微服务部署并只有一台生产服务器,每个微服务只有一个 ...

  9. 【译文】用Spring Cloud和Docker搭建微服务平台

    by Kenny Bastani Sunday, July 12, 2015 转自:http://www.kennybastani.com/2015/07/spring-cloud-docker-mi ...

随机推荐

  1. CF1133E K Balanced Teams(DP)

    /* 排序之后每个点往前能选择的是一段区间, 所以我们实际上转移位置是确定的 然后f[i][j]表示到了i选了j段的最大贡献, 显然状态数是O(n^2)的, 转移是O(1)的 */ #include& ...

  2. DRF 视图组件代码

    序列化器代码 # 声明序列化器from rest_framework import serializersfrom djangoDome.models import Book class Publis ...

  3. python学习之----Lambda表达式

    Lambda 表达式本质上就是一个函数,可以作为其他函数的变量使用:也就是说,一个函 数不是定义成f(x, y),而是定义成f(g(x), y),或f(g(x), h(x)) 的形式. Beautif ...

  4. hadoop/etc/hadoop 下没有mapred-site.xml,只有mapred.xml.template

    默认情况下,/usr/local/hadoop/etc/hadoop/文件夹下有mapred.xml.template文件,我们要复制该文件,并命名为mapred.xml,该文件用于指定MapRedu ...

  5. 【3-24】css样式表分类、选择器、样式属性

    一.css样式表分类: (一)内联样式表:代码写在标签内的样式表  控制精确 代码重用性差  优先级最高 格式:<p style="样式属性">内容</p> ...

  6. spark核心原理

    spark运行结构图如下: spark基本概念 应用程序(application):用户编写的spark应用程序,包含驱动程序(Driver)和分布在集群中多个节点上运行的Executor代码,在执行 ...

  7. pycharm 使用print不打印结果问题解决

    参考 http://blog.csdn.net/olfisher/article/details/52486368 参考2 http://www.imooc.com/qadetail/122734 问 ...

  8. NFS服务基本配置及使用

    操作系统:redhat 7.2 参考链接:https://www.cnblogs.com/dscode/p/6146409.html NFS:Network File System 一.服务器端配置 ...

  9. Nginx 设置负载均衡

    1. 在nginx配置文件目录下另外单独创建一个文件用于管理负载均衡配置,这里起名为 fzjh.conf vim /etc/nginx/fzjh.conf #在文件下添加以下内容 upstream m ...

  10. react-native react-navigation StackNavigator android导航栏 标题下居中

    navigationOptions:({ navigation }) => ({ , textAlign:'center' }}) 如上设置即可,如果有返回箭头,那么右边也要加一个 占位的或者设 ...