微服务Docker

目录

Docker

认识docker

安装Docker

spring boot项目制作成镜像

Docker的基本操作

镜像操作

容器操作

数据卷(容器数据管理)

Docker-compose

Docker Compose安装

私有镜像仓库

镜像仓库概念

搭建私有镜像仓库

方式1

方式2


 

Docker

认识docker

解决开发、测试、生产环境有差异的问题

如何解决

  • 将应用、依赖、函数库、配置一起打包,形成可移植镜像,可以迁移到任意Linux操作系统
  • 应用运行在容器中,使用沙箱机制,相互隔离

快速交付应用、运行应用的技术(优势)

启动、移除都可以通过一行命令完成,方便快捷

Docker和虚拟机的区别

  • docker是一个系统进程;虚拟机是在操作系统中的操作系统
  • docker体积小、启动速度快、性能好;虚拟机体积大、启动速度慢、性能一般

镜像和容器

  • 镜像:将应用程序及其所需的依赖、函数库、环境、配置等文件打包在一起
  • 容器:镜像中的应用程序运行后形成的进程就是容器

DockerHub

一个镜像托管的服务器,类似的还有阿里云镜像服务,统称为DockerRegistry

Docker架构

  • 服务端:接收命令或远程请求,操作镜像或容器
  • 客户端:发送命令或者请求到Docker服务端

安装Docker

(https://docs.docker.com/engine/install/centos/)

1.如果之前有安装过docker,可以进行卸载

yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

2.安装一些依赖工具

  1. yum install -y yum-utils
  2. 修改yum源

3.修改yum软件仓库地址

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

4.在线安装docker

yum install -y docker-ce

5.启动docker

systemctl status docker
systemctl start docker 
systemctl stop docker 
systemctl restart docker

6.配置阿里云的镜像加速器

  • 安装好docker以后,在docker中下载镜像,从dockerhub中下载,速度比较,一般配置aliyun的镜像加载器;
  • 访问地址     https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
  • 登录阿里云
  • sudo mkdir -p /etc/docker
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
      "registry-mirrors": ["https://72myvpdh.mirror.aliyuncs.com"]
    }
    EOF
    sudo systemctl daemon-reload
    sudo systemctl restart docker

spring boot项目制作成镜像

Dockerfile 文本文件,可以编写命令
docker可以根据这些命令创建镜像

  1. 编写Dockerfile文件
  2. spring boot项目打成jar包
  3. docker build -t 镜像名称 .

Docker的基本操作

镜像操作

镜像名称

  • 一般分两部分组成:[repository]:[tag]
  • 没有指定tag时,默认是latest,代表最新版本的镜像

镜像命令

构建镜像:docker build

拉取镜像:docker pull 镜像名

推送镜像:docker push 镜像名

查看镜像:docker images

保存镜像:使用docker save导出镜像到磁盘

                docker save -o [保存的目标文件名称] [镜像名称]

        例子:docker save -o nginx.tar nginx:latest

导入镜像:使用docker load加载镜像

                docker load -i nginx.tar

删除本地的nginx镜像:docker rmi nginx:latest

容器操作

docker run:创建并运行一个容器,处于运行状态

docker run --name 容器名 -p 8080:80 -d nginx(镜像)
                    docker run :创建并运行一个容器
                    --name : 给容器起一个名字,比如叫做mn
                    -p :将宿主机端口与容器端口映射,冒号左侧是宿主机端口,右侧是容器端口
                    -d:后台运行容器
                    - nginx:镜像名称,例如nginx

docker pause:让一个运行的容器暂停

docker unpause:让一个容器从暂停状态恢复运行

docker stop:停止一个运行的容器

docker start:让一个停止的容器再次运行

docker rm:删除一个容器
                -f  容器名

docker logs  
                查看容器日志的命令
                添加 -f 参数可以持续查看日志

docker ps
                查看容器状态
                -a 查看所有容器,包括已经停止的

三个状态
                运行:进程正常运行
                暂停:进程暂停,CPU不再运行,并不释放内存
                停止:进程终止,回收进程占用的内存、CPU等资源

进入容器,修改文件

进入容器:docker exec -it 容器名 bash
                        docker exec :进入容器内部,执行一个命令
                        -it : 给当前进入的容器创建一个标准
                        输入、输出终端,允许我们与容器交互
                        容器名:要进入的容器的名称
                        bash:进入容器后执行的命令,bash是一个linux终端交互命令

快捷方式:docker exec -it 容器名     容器客户端(eg:redis-cli)

进入nginx的HTML所在目录 :cd /usr/share/nginx/html

修改index.html的内容:sed -i -e 's#Welcome to nginx#xx欢迎您#g' -e 's#<head>#<head><meta charset="utf-8">#g' index.html

数据卷(容器数据管理)

解决容器与数据(容器内文件)耦合带来的后果

不便修改
数据不可复用
升级维护困难

作用

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

是一个虚拟目录,指向宿主机文件系统中的某个目录

数据集操作命令

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

挂载数据卷

通过 -v 参数来挂载一个数据卷到某个容器内目录

docker run \
  --name mn \
  -v html:/root/html \
  -p 8080:80
  -d  \
  nginx \

注意这里:

-v html:/root/html :把html数据卷挂载到容器内的/root/html这个目录中

目录挂载与数据卷挂载的语法是类似

  • -v [宿主机目录]:[容器内目录]
  • -v [宿主机文件]:[容器内文件]

Docker-compose

利用compose文件一次性创建多个容器

  1. 下载docker-compose------>/usr/local/bin---->修改权限
  2. 编写docker-compose.yml
  3. docker-compose up -d

Docker Compose安装

docker-compose安装流程

  1. 下载:https://github.com/docker/compose
  2. 上传到linux服务器
  3. 将docker-compose命令移动都/usr/local/bin下:mv docker-compose /usr/local/bin
  4. 修改权限:chmod 777 /usr/local/bin/docker-compose

docker-compose文件的内容

version: '3'
services:
 mysql:
  image: mysql:5.7.25
  container_name: mysql
  ports:
   - 3307:3306
  volumes:
   - "/tmp/mysql/conf:/etc/mysql" 
   - "/tmp/mysql/data:/var/lib/mysql"
  environment:
   MYSQL_ROOT_PASSWORD: "123456"

 redis:
  image: redis:latest
  container_name: redis
  ports:
   - 6380:6379

私有镜像仓库

镜像仓库概念

镜像仓库分类:公共 私有

安装私有仓库

docker pull registry

创建容器

镜像上传私有仓库

  • 打标记:docker tag 本地镜像名称 标记名称(私有仓库地址/镜像名称)
  • 推送:docker push  标记名称(私有仓库地址/镜像名称)

从私有仓库拉取镜像

拉取镜像:docker pull 私有仓库地址/镜像名称

搭建私有镜像仓库

方式1

安装不带图形界面的

1.拉取镜像

https://hub.docker.com/_/registry

docker pull registry

2.创建容器

docker run -d --restart=always --name registry -p 5000:5000 -v registry-data:/var/lib/registry registry

3.添加信任

私有镜像仓库采用的是http协议,默认不被Docker信任,所以需要做一个配置

# 打开要修改的文件
vi /etc/docker/daemon.json
# 添加内容:
"insecure-registries":["http://192.168.200.128:5000"]
# 重加载
systemctl daemon-reload
# 重启docker
systemctl restart docker

4.访问私服查看管理镜像

http://YourIp:5000/v2/_catalog 

方式2

安装有图形界面的镜像私服

1.创建docker-compose.yml文件

2.编写内容

version: '3.0'
services:
  registry:
    image: registry
    volumes:
      - ./registry-data:/var/lib/registry
  ui:
    image: joxit/docker-registry-ui:static
    ports:
      - 8080:80
    environment:
      - REGISTRY_TITLE=传智教育私有仓库
      - REGISTRY_URL=http://registry:5000
    depends_on:
      - registry

3.执行文件

docker-compose up -d

私服采用的是http协议,默认不被Docker信任,所以需要做一个配置

# 打开要修改的文件
vi /etc/docker/daemon.json
# 添加内容:
"insecure-registries":["http://192.168.150.101:8080"]
# 重加载
systemctl daemon-reload
# 重启docker
systemctl restart docker

访问私服的管理控制台

http://192.168.200.130:8080/

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值