Docker容器

1.什么是Docker?

1.为什么会出现docker?

我们写的代码会接触到好几个环境:开发环境、测试环境以及生产环境等等。多种环境去部署同一份代码,由于环境原因往往会出现软件跨环境迁移的问题(也就是“水土”不服)‘

也就是说如果在不同环境下跑相同代码,但JDK或TomCat等不一致,那么就可能出现报错等问题。

 针对这种情况 ,我们可以将工程及此工程依赖的所有软件打包到一个容器中统一部署

 

 2.docker概念

  • Docker 是一个开源的应用容器引擎

  • Docker 可以让开发者打包他们的应用以及依赖打包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上。

  • 诞生于 2013 年初,基于 Go 语言实现, dotCloud 公司出品(后改名为Docker Inc)

  • 容器是完全使用沙箱机制,相互隔离

就是相当于linux系统中起好多容器,每个容器都是相互隔离的

  • 容器性能开销极低。

  • Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版)

docker是一种容器技术,解决软件跨环境迁移问题。

 2.安装docker

Docker可以运行在MAC、Windows、CentOS、UBUNTU等操作系统上,

官网:Docker: Accelerated, Containerized Application Development

# 1、yum 在线安装 
yum install docker -y 
#2、启动docker
systemctl start docker   启动
systemctl stop docker    停止
systemctl restart docker  重启
#3、查看docker状态
systemctl status docker

 虚拟机要联网下载

3.docker架构

 镜像:一个独立软件的各种组成文件

 容器:执行镜像会产生容器,一个镜像可以生成多个容器

 仓库:镜像的来源    docker提供的应用商店

 镜像加速: 从docker hub上下载docker镜像太慢,一般都会配置镜像加速

 1.配置镜像加速:

默认从   Docker Hub  下载  这里配置中科大镜像  https://docker.mirrors.ustc.edu.cn

 在linux中打开:/etc/docker/daemon.json文件,并导入镜像地址

直接 vi /etc/docker/daemon.json

{
 "registry-mirrors":["https://docker.mirrors.ustc.edu.cn"]
}

4.docker相关的命令

#重启
systemctl restart docker
#查看docker信息
docker info

#启动docker服务:
systemctl start docker 
#停止docker服务:
systemctl stop docker 
#重启docker服务:
systemctl restart docker
#查看docker服务状态:
systemctl status docker 
#设置开机启动docker服务:
systemctl enable docker

5.从docker仓库下载镜像到宿主机--镜像相关的命令

#1 查看镜像: 查看本地所有的镜像
docker images

#2 搜索镜像:从网络中查找需要的镜像
docker search 镜像名称

#3 拉取镜像:从Docker仓库下载镜像到本地,镜像名称格式为 名称:版本号
如果版本号不指定则是最新的版本。如果不知道镜像版本,可以去docker hub 搜索对应镜像查看。
地址:https://hub.docker.com/
docker pull 镜像名称:版本号  /  docker pull 镜像名称(默认的版本号是latest)
		docker pull mysql:5.7  /  docker pull mysql

#4 删除镜像: 删除本地镜像
docker rmi 镜像id # 删除指定本地镜像

以上内容是操作docker的流程

6.通过镜像启动生成容器环境--容器相关命令  *****

#查看容器
docker ps # 查看正在运行的容器
docker ps -a #查看所有容器,包括未运行的容器

#创建并启动容器  
docker run -id --name=自定义容器名称 -p 映射端口:镜像端口 镜像名称 
run:启动
-id/-di:  创建容器
--name:  为创建的容器起别名
-p: 端口映射

#停止容器
docker stop 容器名称
#删除容器(容器是停止状态才能删除)
docker rm 容器名称

#启动容器
docker start 容器名称

7. 数据卷(linux中的文件夹)****

1.什么是数据卷?

数据卷是宿主机中的一个目录或文件,当容器目录和数据卷目录绑定后,对方的修改会立即同步,一个数据卷可以被多个容器同时挂载,一个容器也可以挂载多个数据卷。

 数据卷的作用:容器数据持久化、容器之间数据交换

 2.配置数据卷:  创建启动容器时,使用 –v 参数 设置数据卷

#先在root目录先创建一个文件夹 ,因为要做数据卷映射
cd ~
mkdir data
#启动容器,挂载数据卷
docker run -di --name=自定义容器名称 -p 33307:3306 -v /root/data/:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456  mysql:5.7 

#最终 -加权限
docker run -id --name=mymysql888 --privileged=true -p 33308:3306  -v /root/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456  mysql:5.7 

 注意:

        1.目录必须是决定路径

        2.如果目录不存在,会自动创建

        3.可以挂载多个数据卷

 

查看mysql的日志会发现有权限不足的问题:docker logs my_mysql

--privileged :容器内的root拥有真正的root权限.否则,容器内的root只是外部的一个普通用户权限

docker run -id --name=mymysql888 --privileged=true -p 33308:3306  -v /root/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456  mysql:5.7   

 8.Docker服务编排

服务编排:批量管理所有容器进行统一启动/统一停止且统一删除

8.1 服务编排

微服务架构的应用系统中一般包含若干个微服务,每个微服务一般都会部署多个实例,如果每个微服务都要手动启停,维护的工作量会很大。

  • 要从Dockerfile build image 或者去dockerhub拉取image

  • 要创建多个container

  • 要管理这些container(启动停止删除)

服务编排:按照一定的业务规则批量管理容器

8.2 Docker Compose(服务编排) 概述

Docker Compose是一个编排多容器分布式部署的工具,提供命令集管理容器化应用的完整开发周期,包括服务构建,启动和停止。使用步骤:

  1. 利用 Dockerfile 定义运行环境镜像

  2. 使用 docker-compose.yml 定义组成应用的各服务

  3. 运行 docker-compose up 启动应用

 8.3安装

# Compose目前已经完全支持Linux、Mac OS和Windows,在我们安装Compose之前,需要先安装Docker。下面我 们以编译好的二进制包方式安装在Linux系统中。(以安装) 
curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
# 查看版本信息 
docker-compose -version
# 设置文件可执行权限 
chmod +x /usr/local/bin/docker-compose

卸载Docker Compose

# 二进制包方式安装的,删除二进制文件即可
rm /usr/local/bin/docker-compose

 案例:

通过docker compose进行容器批量管理:一次性启动三个容器(nginx,tomcat,redis)

步骤:

(1) 定义一个Docker Compose配置文件

  • docker-compose.yml

  • 定义需要的容器

  • 每个容器的配置

(2) 进入docker-compose.yml所在的目执行docker-compose up -d 命令批量执行

操作:

创建docker-compose目录

mkdir ~/docker-compose
cd ~/docker-compose 

 定义docker-compose.yml 文件  vi docker-compose.yml 内容如下

version: '3'
services: 
  nginx:
   container_name: my_nginx
   image: nginx
   ports:
    - 80:80
    
  tomcat:
   container_name: my_tomcat
   image: tomcat:8.5
   ports:
    - 8080:8080    
  
  redis:
   container_name: my_redis
   image: redis
   ports:
    - 6379:6379   

  启动容器   

执行此命令的时候,需要和配置文件再同一个目录下

docker-compose up -d

关闭容器并且删除

docker-compose down 
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Docker容器是一种轻量级、可移植的虚拟化技术,用于在操作系统级别隔离应用程序和其依赖的运行环境。通过使用Docker容器,可以将应用程序及其所有依赖项打包到一个独立的、可移植的容器中,然后在任何支持Docker的环境中运行。 以下是一些常见的Docker容器相关概念和工具: 1. Docker镜像(Docker Image):Docker镜像是一个只读的模板,包含了运行应用程序所需的所有文件和依赖项。可以通过Docker镜像创建Docker容器。 2. Docker容器Docker Container):Docker容器Docker镜像的运行实例。每个Docker容器都是相互隔离的,具有自己的文件系统、进程空间和网络接口。 3. Docker引擎(Docker Engine):Docker引擎是Docker的核心组件,负责管理和运行Docker容器。它包括了一个守护进程(dockerd)和一组命令行工具(docker命令)。 4. Docker Compose:Docker Compose是一个用于定义和管理多个Docker容器的工具。通过编写一个YAML文件来描述应用程序的各个组件及其依赖关系,然后使用docker-compose命令来启动、停止和管理这些容器。 5. Kubernetes:Kubernetes是一个用于自动化部署、扩展和管理容器化应用程序的开源平台。它可以与Docker结合使用,提供了更高级的容器编排和管理功能。 6. Docker Hub:Docker Hub是一个公共的Docker镜像仓库,可以从中获取各种预构建的Docker镜像。同时,也可以将自己构建的镜像推送到Docker Hub上进行分享和存储。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

華同学.

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

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

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

打赏作者

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

抵扣说明:

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

余额充值