(精华)2020年10月3日 微服务 Docker详解

举报
愚公搬代码 发表于 2021/10/18 23:10:04 2021/10/18
【摘要】 1、Docker版本 17.03版本之后 1、CE(Community Edition: 社区版) ---- 免费 2、EE(Enterprise Edition: 企业版)---- 收费 123 ...

1、Docker版本 17.03版本之后

1、CE(Community Edition: 社区版) ---- 免费

2、EE(Enterprise Edition: 企业版)---- 收费

  
 
  • 1
  • 2
  • 3

2、windows 安装

条件

1、windows 10

2、开启Hyper-V

3、安装Toolbox

最新版 Toolbox 下载地址: https://www.docker.com/get-docker
点击 Download Desktop and Take a Tutorial,并下载 Windows 的版本

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

3、linux安装

1、centos7.0 以上的版本

2、安装docker 版本仓库 docker版本

	2.1 设置仓库

        sudo yum install -y yum-utils device-mapper-persistent-data lvm2	

	2.2  稳定仓库

      sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo 

3、安装docker(默认安装最新版本)

  sudo yum install docker-ce docker-ce-cli containerd.io

  如果要安装其他版本

       要安装特定版本的 Docker Engine-Community,请在存储库中列出可用版本,然后选择并安装:

       1、列出并排序您存储库中可用的版本。此示例按版本号(从高到低)对结果进行排序。

          yum list docker-ce --showduplicates | sort -r

                docker-ce.x86_64  3:18.09.1-3.el7                     docker-ce-stable
                docker-ce.x86_64  3:18.09.0-3.el7                     docker-ce-stable
                docker-ce.x86_64  18.06.1.ce-3.el7                    docker-ce-stable
                docker-ce.x86_64  18.06.0.ce-3.el7                    docker-ce-stable

            2、通过其完整的软件包名称安装特定版本,该软件包名称是软件包名称(docker-ce)加上版本字符串(第二列),                     从第一个冒号(:)一直到第一个连字符,并用连字符(-)分隔。例如:docker-ce-18.09.1。

  sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io

4、docker启动

 sudo systemctl start docker

5、docker 运行(判断是否安装成功)

  sudo docker run hello-world

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40

4、docker 管理命令介绍

builder Manage builds 管理构建
config Manage Docker configs 管理配置
container Manage containers 管理容器
context Manage contexts 管理上下文
engine Manage the docker engine 管理引擎
image Manage images 管理镜像
network Manage networks 管理网络
node Manage Swarm nodes 管理节点(集群)
plugin Manage plugins 管理插件
secret Manage Docker secrets 管理密钥
service Manage services 管理服务
stack Manage Docker stacks 管理
swarm Manage Swarm 管理集群
system Manage Docker管理系统
trust Manage trust on Docker images 管理信任
volume Manage volumes 管理数据挂载(数据持久化 === 永久保存)

5、docker上部署aspnetcore

条件:

1、vs2019 asp.net core项目

2、Dockerfile文件

3、mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim 镜像

4、mcr.microsoft.com/dotnet/core/sdk:3.1-buster镜像

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

6、dockerfile的指令:

FROM:指定基础镜像(FROM是必备的指令,并且必须为第一条指令)。

RUN: 用来执行命令行命令。其基本格式:

shell格式: RUN <命令> ,输入在bash环境中的命令即可,一个dockerfile允许使用RUN不得超过127层,所以,使用一次RUN, 使用 ‘ \ ’ 换行,使用‘ && ’执行下一条命令。一般使用此种格式;

exec格式: RUN <“可执行文件”, “参数1”, “参数2”>,此种方式像是函数调用中的格式;

COPY: 复制文件。 其基本格式:

格式1:COPY <源路径>…<目标路径>

格式2:COPY [“<源路径1>”,…"<目标路径>"]

ADD: 更高级的复制文件,在COPY的基础上增加了一些功能,如果复制的是压缩包的话,会直接解压,而不需要在使用RUN解压;

CMD:容器启动命令。其基本格式:

shell格式: CMD <命令>

exec格式: CMD [“可执行文件”, “参数1”, “参数2”…]

参数列表格式: CMD [“参数1”, “参数2”…],在指定了ENTRYPOINT指令后,用CMD指定具体的参数

ENTRYPOINT: 入口点。其基本格式分为exec和shell,

ENTRYPOINT的目的和CMD一样,都是在指定容器启动程序及参数。ENTRYPOINT在运行中可以替代,不过比CMD繁琐,需要通过docker run 的参数–entrypoint 来指定。当指定了ENTRYPOINT后,CMD的含义就发生了改变,不在是直接运行其命令,而是将CMD的内容作为参数传递给ENTRYPOINT指令。其执行时就变成了: “”

ENV: 设置环境变量。(都可以使用这里使用的变量)其基本格式:

格式1:ENV

格式2:ENV = =…

ARG: 构建参数。构建参数和ENV的效果一样,都是设置环境变量,所不同的是ARG所构建的环境变量在将来容器运行时是不存在的。其基本格式:

格式1: ARG <参数名> [=<默认值>]

格式2: 该默认值可以在构建命令 docker build 中用 --build-arg <参数名>=<值> 来覆盖

VOLUME: 定义匿名卷。 其基本格式:

格式1: VOLUME ["<路径1>", “<路径2>”…]

格式2: VOLUME <路径>

EXPOSE: 暴露端口。EXPOSE指令是声明运行时容器所提供的端口,在启动容器时不会在因为这个声明而开启端口。 其基本格式:

格式1: EXPOSE <端口1> [<端口2>…]

WORKDIR: 指定工作目录。其基本格式:

格式1: WORKDIR <工作目录路径>

USER: 指定当前用户。USER是帮助你切换到指定用户。 其基本格式:

格式1: USER <用户名>

HEALTCHECK: 健康检查,判断容器的状态是否正常。 其基本格式:

格式1: HEALTCHECK [选项] CMD <命令> :设置检查容器健康状况的命令

格式2: HEALTCHECK NONE: 如果基础镜像有健康检查指令,使用此格式可以屏蔽掉其健康检查指令

7、Dockerfile核心命令

7.1、FROM 指定基础镜像构建
	写法:
	FROM 指定基础镜像

7.2、COPY 复制命令。从上下文目录中复制文件或者目录到容器里指定路径。

	写法:

	COPY 源路径,目标路径

	COPY ["源路径","目标路径"]	

7.3、RUN运行指令。构建的时候运行的指令

	主要在于镜像构建的时候运行,运行build命令的时候 

	后面接的命令就是shell输入的命令

	写法

	RUN  shell命令 参数1 参数2

	RUN ["shell命令 ","参数1"," 参数2"]

	例如:

	RUN ["echo",">"," /usr/share/index.html"]

7.4、CMD运行指令。运行容器时候运行的指令

	主要在于镜像运行容器的时候生成,运行run的时候运行

	写法

	CMD <shell 命令> 
	CMD ["<可执行文件或命令>","<param1>","<param2>",...] 

	例如:

	CMD ["dotnet","rmcore.dll"]

	缺点:在run 命令后面可以进行覆盖

	docker run -d -P  rmcore dotnet rmcore.dll 进行覆盖掉

7.5 ENTRYPOINT运行指令。运行容器时候运行的指令(不会被覆盖)

	写法

	ENTRYPOINT ["<executeable>","<param1>","<param2>",...]

	可以和CMD动态结合,设置动态的配置参数

	例如 

	ENTRYPOINT ["nginx", "-c"] 定参

	CMD ["/etc/nginx/nginx.conf"]变参

7.6、EXPOSE暴露端口指令

	仅仅声明端口,就是指定镜像暴露的端口

	在run 的时候,通过docker run -p 会自动随机映射到EXPOSE端口

	写法

	EXPOSE 端口

	EXPOSE 端口

	例如 

	EXPOSE 5000

	EXPOSE 5001

7.7、WORKDIR工作目录指令
	用于应用在容器内的工作目录,就好比:ruanmou目录

	写法

	WORKDIR <工作目录路径>

	例如

	WORKDIR /rmcore

	或者

	WORKDIR /nginx

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91

8、docker如何构建nginx镜像?

条件:

1、nginx-1.15.2.tar.gz

2、基础镜像centos

3、nginx安装命令

4、Dockerfile文件

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

9、linux中 nginx原始配置

1 安装 nginx需要工具
	 yum -y install gcc make pcre-devel zlib-devel tar zlib
2 下载nginx
	 wget  http://nginx.org/download/nginx-1.15.2.tar.gz
3 nginx解压/nginx目录
	tar -zxvf  nginx-1.15.2.tar.gz
4 切换到/nginx/nginx-1.15.2
	执行./configure
		make
		make install 进行安装
5 切换到/usr/local/nginx/sbin
	执行 ./nginx 启动nginx

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

10、配置nginx Dcokerfile

FROM centos
RUN yum -y install gcc make pcre-devel zlib-devel tar zlib
WORKDIR /nginx
COPY nginx-1.15.2.tar.gz /nginx
RUN tar -zxvf  nginx-1.15.2.tar.gz
RUN cd nginx-1.15.2 && ./configure && make && make install
EXPOSE 80
CMD /bin/bash

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

11、docker如何做容器编排

如何将nginx和rmcore同时操作?

	条件
	1、nginx Dockerfile文件
	2、rmcore Dockerfile文件
	3、services 概念
	4、docker-compose.yml配置文件
	5、docker-compose工具

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

如何做到?

1、docker-compose安装
    1.1、下载地址
	   sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-(uname -s)-(uname -m)" 
	   -o /usr/local/bin/docker-compose

	1.2、增加Compose权限
	 sudo chmod +x /usr/local/bin/docker-compose
	
	1.3、创建compose快捷方式
	sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
	
	1.4、测试安装是否成功
	docker-compose --version
	
	1.5 docker-compose使用命令
	  build              构建或重新构建容器服务
	  bundle             从compose文件生成一个Docker包
	  config             验证并查看compose文件
	  create             创建容器服务
	  down               停止并删除容器、网络、映像和卷
	  events             从容器接收实时事件
	  exec               在正在运行的容器中执行命令
	  help               帮助命令
	  images             镜像列表
	  kill               杀死容器
	  logs               查看容器的日志
	  pause              暂停容器服务
	  port               输出端口号
	  ps                 容器列表
	  pull               下载容器服务镜像
	  push               上传容器服务镜像
	  restart            容器服务重新开始
	  rm                 删除停止的容器
	  run                运行一次性命令
	  scale              设置服务的容器数量
	  start              开始容器服务
	  stop               停止容器服务
	  top                显示正在运行的进程
	  unpause            暂停容器服务
	  up                 创建并启动容器
	  version            显示Docker-Compose版本信息

 
2、docker-compose.yml文件
	
   2.1 yml文件配置
	  类似:json文件配置
      yml文件配置参考地址:https://www.runoob.com/w3cnote/yaml-intro.html
	   2.1.2 yml文件配置
		  1、对象  
				例如
				companies:{id: 1,name: company1,price: 200W}
				或
				companies:
					id: 1
					name: company1 
					price: 200W	
		  2、数组
			例如
			companies: [{id: 1,name: company1,price: 200W},{id: 2,name: company2,price: 500W}]
			或
			companies: 
				  -
					id: 1 
					name: company1
					price: 200W
				  -
					id: 2
					name: company2
					price: 500W
		  3、基本变量类型 int float string boolean date datetime null
		
	2.1 docker-compose.yml文件配置
		2.1.1 参考地址
			  https://docs.docker.com/compose/compose-file/			  
		2.1.2 核心配置
		version 指定compose版本 最好是3.0以上版本 目前最新是3.8版本
		services 配置容器[容器列表]
			nginx: #配置容器标识(唯一编号)
			   image: #配置容器镜像
			   ports: #配置容器映射端口号[数组]
			   networks: #配置容器网络[数组]
		networks 网络指定配置
			nginx-rmcore: #配置网络名称
			    external: true #网络自定义
		volumes 数据挂载配置
		extensions 扩展配置
		
	2.2 docker-compose.yml如何配置nginx和rmcore?
		1、创建docker-compose文件
		2、配置docker-compose

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91

文章来源: codeboy.blog.csdn.net,作者:愚公搬代码,版权归原作者所有,如需转载,请联系作者。

原文链接:codeboy.blog.csdn.net/article/details/108911681

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。