Docker

Docker的介绍和作用

1. 是一个快速交付应用,运行应用的技术

  • Docker分为 CE(社区版,免费) 和 EE(企业版,付费) 两个版本。
  • Docker CE分为 Stable、test、Nightly 三个更新频道

2. 项目部署的问题

  • 大型项目组件较多,允许环境也较为复杂,部署时会碰到一些问题
  • 依赖关系复杂,兼容性问题
  • 开发、测试、生成环境由差异 在这里插入图片描述

二、Docker如何解决依赖的兼容问题

  • 将应用的Libs(函数库)、Deps(依赖)、配置与应用一起打包
  • 将每个应用放到一个隔离容器去允许,使用沙箱机制,避免互相干扰
  • Docker镜像中包含完整的运行环境,包括系统函数库。
  • Docker允许到不同的操作系统时(Linux内核的系统),直接基于打包的库函数,借助于系统的Linux内核来允许
    在这里插入图片描述

三、Docker与虚拟机

  • Docker是一个系统进程,体积小,启动速度快,性能好
  • 虚拟机是在操作系统中的操作系统,体积大,启动速度慢,性能一般
    在这里插入图片描述

四、Docker架构

1. 镜像和容器

  • 镜像(Image):Docker将应用程序及其所需的依赖、函数库、环境、配置文件打包在一起,称为镜像
  • 容器(Container):镜像中的应用程序运行后形成的进程就是容器,只是Doker会给容器做隔离,对外不可见
    在这里插入图片描述

2. Docker和DockerHub

  • DockerHub:DockerHub是一个Docker镜像的托管平台,这样的平台称为 Docker Registry
  • 国内的 Docker Registry:阿里云镜像库,网易云镜像服务等。
  • 也可自己搭建一个私有的Docker Registry (私有云)
    在这里插入图片描述

3. Docker是一个CS加构程序,由两部分组成

  • 服务端(server):Docker守护进程,负责Docker指令,管理镜像,容器等
  • 客户端(client):通过命令或RestApi向Docker服务端发送指令,可以在本地或远程向服务端发送指令
    在这里插入图片描述

CentOS安装Docker

安装Docker

方式一:阿里云安装教程
方式二:oschina教程

配置镜像加速

  • docker官方镜像仓库网速较差,我们需要设置国内镜像服务:

参考阿里云的镜像加速文档:阿里云的镜像加速文档

Docker命令总结

Docker操作

  • 启动docker:
	systemctl start docker
  • 关闭docker
	systemctl stop docker
  • 重启docker
	systemctl restart docker
  • docker设置随服务启动而自启动
	systemctl enable docker
  • 查看docker 运行状态(如果是在运行中 输入命令后 会看到绿色的active)
	systemctl status docker 

镜像操作

  • 拉取镜像
	docker pull 镜像名
  • 查看镜像
	docker images
  • 删除单个镜像(-f 强制删除)
	docker rmi -f  镜像名
  • 推送镜像
	docker push 
  • 保存镜像
	docker save -o 保存的名称.tar 要被保存的镜像名
  • 读取一个tar文件到镜像
	docker load -i 被读取的tar文件.tar

容器操作

  • 创建一个容器并运行
	docker run --name 容器名称 (起一个容器名) 
				-p 宿主机端口:容器端口 (端口映射) 
				-v xxx/xxx/xxx(这里为linux目录,也可以为一个数据卷):xxx/xxx/xxx(容器中需要被挂载的目录)  (目录挂载,将容器的一些文件,映射到linux的目录中) 
				-e (环境变量)
				-d (后台运行容器) 
				镜像名
  • 启动容器
	docker start 容器ID
  • 查看所有运行的容器及状态
	docker ps
  • 查看所有的容器
	docker ps -a
  • 查看容器运行的日志
	docker logs -f(持续日志输出,实时刷新) 容器ID
  • 进入容器
	docker exec -it(创建标准输入输出终端) 容器ID bash(进入容器后执行的命令)
  • 停止容器
	docker stop 容器ID
  • 暂停容器
	docker pause 容器ID
  • 暂停后恢复运行
	docker unpause 容器ID
  • 删除指定容器
	docker rm -f(强制删除) 容器ID
  • 删除所有镜像和容器
	docker system prune -a
  • 删除所有镜像,不删除容器
	docker rmi `docker images -q`

操作数据卷

**数据卷的作用:**将容器与数据分离,解耦合,方便操作容器内数据,保证数据安全

docker volume [COMMAND]

docker volume命令是数据卷操作,更具命令后跟随的commmand来确定下一步的操作

  • 创建一个volume
	create
  • 显示一个或多个volume的信息
	inspect		
  • 列出所有的volume
	ls		
  • 删除未使用的volume
	prune		
  • 删除一个或多个指定的volume
	rm

七、Dockerfile自定义镜像

镜像结构

  • 镜像是将应用程序及其需要的系统函数库,环境,配置,依赖打包而成
    在这里插入图片描述

Dockerfile语法

Dockerfile就是一个文本文件,其中包含指令(Instruction),用指令来说明要执行说明操作来构建镜像。每一个指令都会形成一层Layer

指令

  • 指定基础镜像: FROM
	FROM centos:7
  • 设置环境变量,可在后面指令使用: ENV
	ENV key value
  • 拷贝本地文件到镜像的指定目录: COPY
	COPY ./mysql-5.7.rpm /tmp
  • 执行Linux的shell命令,一般是安装过长的命令: RUN
	RUN yum install gcc
  • 指定容器运行时监听的端口,是给镜像使用者看的: EXPOSE
	EXPOSE 8080
  • 镜像中应用的启动命令,容器运行时调用: ENTRYPOINT
	ENTRYPOINT java -jar xx.jar

更新详细语法说明,请参考官方文档:点击跳转

八、DockerCompose

  • Docker Compose 可以基于Compose文件快速部署分布式应用,无需手动一个个的创建和允许容器!
  • Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。

安装:

# 安装
curl -L https://github.com/docker/compose/releases/download/1.23.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

修改文件权限:

# 修改权限
chmod +x /usr/local/bin/docker-compose

Base自动补全命令:

# 补全命令
curl -L https://raw.githubusercontent.com/docker/compose/1.29.1/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose

如果这里出现错误,需要修改自己的hosts文件:

echo "199.232.68.133 raw.githubusercontent.com" >> /etc/hosts

DockerCompose 部署微服务集群

编写Compose文件

version: "3.2"

services:
  nacos:
    image: nacos/nacos-server
    environment:
      MODE: standalone
    ports:
      - "8848:8848"
  mysql:
    image: mysql:5.7.25
    environment:
      MYSQL_ROOT_PASSWORD: 123
    volumes:
      - "$PWD/mysql/data:/var/lib/mysql"
      - "$PWD/mysql/conf:/etc/mysql/conf.d/"
  userservice:
    build: ./user-service
  orderservice:
    build: ./order-service
  gateway:
    build: ./gateway
    ports:
      - "10010:10010"

使用如下命令启动

docker-compose up -d
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我好帅啊~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值