1.Docker基础
2.镜像命令
3.数据卷
4.Docker集群/快速部署
Docker简介
- Docker是一个快速交付应用,运行应用的技术
- 1.可以将程序及其依赖、运行环境打包成一个镜像,可以迁移到任意Linux系统上
- 2.运行时,可以利用沙箱机制形成隔离容器,各个应用互不干扰
- 3.启动、移除时,都可以通过任意一行命令,方便快捷
Docker与虚拟机的差异
- docker是一个系统进程,虚拟机是再操作系统中的操作系统
- docker体积小,启动快,性能好,虚拟机体积大,启动速度慢、性能一般
Docker
- 镜像:将程序的依赖、环境、配置打包在一起
- 容器:镜像运行起来就是容器,一个镜像可以启动成多个程序
- Docker结构:
- 服务端:接收命令或远程请求,操作镜像或容器
- 客户端:发送命令或请求到Docker服务端
- DockerHub:
- 一个镜像托管的服务器,类似于阿里云镜像服务,统称为DockerRegistry
安装
- 安装yum工具
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2 --skip-broken
- 设置docker镜像源
yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
yum makecache fast
- 输入命令,安装配置源
yum install -y docker-ce
- 关闭防火墙
关闭
systemctl stop firewalld
禁止开机启动防火墙
systemctl disable firewalld
- 启动
systemctl start docker # 启动docker服务
systemctl stop docker # 停止docker服务
systemctl restart docker # 重启docker服务
docker -v #查看版本
- 配置镜像加速器 阿里云的
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://jl0osa71.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
Docker 镜像命令
- 拉取镜像:docker pull xx (nginx)
- 查看镜像:docker images
- 将指定镜像保存成 tar 归档文件:docker save -o nginx.tar nginx:latest
- 删除镜像:docker rmi (nginx:latest)
- 读取tar文件变成镜像:docker load -i nginx.tar
容器的相关命令
-
启动容器: docker run --name mn -p 80:80 -d nginx
-
查看容器是否启动: docker ps
-
查看日志: docker logs mn / -f
-
进入容器 docker exec -it mn(名称) bash
-
退出容器,返回linux界面 exit
-
退出容器 docker stop 容器名称
-
删除容器 docker rm
-
查看容器状态: docker ps / -a
数据卷
- 数据卷:数据卷与容器的文件绑定,再数据卷中修改文件,容器立马可见修改的内容
-
作用:将容器与数据分离,解耦合,方便操作容器内数据,保证数据安全
-
操作方法
-
创建数据卷: docker volume create 数据卷名称
-
查看数据卷: docker volume ls
-
查看详情: docker volume inspect 数据卷名称
-
删除数据卷: docker volume rm 数据卷名称
-
删除未使用的数据卷 : docker volume prune
挂载数据卷
-
-
创建数据卷:docker volume create 数据卷名称
-
将创建数据卷挂在数据卷到容器的html目录:docker run --name mn -p 80:80 -v html:/usr/share/nginx/html -d nginx(没有数据卷注解创建)
-
查看html数据卷的位置: docker volume inspect html
-
进入该数据卷 : cd /目录
-
修改数据卷内容 : vi index
-
docker run 命令通过 -v 挂载文件或目录到之地那个容器中
-
-v 宿主机文件:容器内文件
-
-v 宿主机目录: 文件目录
-
-
数据卷挂载与目录直接挂载的区别:
-
1.数据卷挂载耦合度低,由docker来管理目录,但是目录较深不好找
-
2.布鲁挂载耦合度高,需要自己创建目录,不过目录容易查找
镜像
- 镜像是将应用程序需要的系统函数库、环境、配置、依赖打成包而成的·
自定义镜像
1 . 新建目录:mkdir docker-demo
2 .cd 到指定目录
3. 将文件上传到指定目录
4.构建镜像 : docker build -t javaweb:1.0(镜像名称) .(当前目录)
5.启动当前镜像: docker run --name web -p 8090:8090 -d javaweb:1.0
6.根据当前ip:端口进行运行
Dockerfile
1.构建镜像的过程 从0开始
2.构建镜像的过程 别人做好的镜像
Docker集群/快速部署
使用DockerCompose
步骤
- 1.上传文件
- 或通过命令下载
- curl -L https://github.com/docker/compose/releases/download/1.23.1/docker-compose-
uname -s
-uname -m
> /usr/local/bin/docker-compose - 2.# 修改权限 chmod +x /usr/local/bin/docker-compose
- 3.echo “199.232.68.133 raw.githubusercontent.com” >> /etc/hosts
- 4.curl -L https://raw.githubusercontent.com/docker/compose/1.29.1/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose
微服务集群的部署
-
编写docker-compose文件
-
修改微服务项目,将数据库、nacos地址的命名都修改未docker-compose中的服务名
-
-
使用maven打包工具,将项目中的每个微服务都打包成app.jar
-
将打包好的app.jar拷贝到对应的目录中
-
将微服务上传至虚拟机,利用docker-compose up -d 进行运行
-
重新启动微服务 docker-compose restart gateway userservice orderservice
搭建镜像仓库
1.修改文件: vi /etc/docker/daemon.json
2.添加内容:“insecure-registries”:[“http://192.168.150.101:8080”]
3.# 重加载systemctl daemon-reload / 重启docker systemctl restart docker
4.新建文件:touch docker-compose.xml
5.复制内容到文件
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
6.重新启动: docker-compose up -d
7.访问ip+端口 即可访问
推送
推送到仓库: docker pull 192.168.13.131:8080(厂库地址)/nginx:1.0(文件:版本)
删除镜像: docker rmi 镜像名称:版本
访问镜像仓库/拉取