SpringCloud第一篇(Docker基础)

前言:Docker概括

我们即将进入微服务阶段学习,微服务项目动辄就是几十台、上百台服务需要部署,有些大型项目甚至达到数万台服务。而由于每台服务器的运行环境不同,你写好的安装流程、部署脚本并不一定在每个服务器都能正常运行,经常会出错。这就给系统的部署运维带来了很多困难。

我们今天要学习的Docker技术。就是解决此问题的,有了Docker以后项目的部署如丝般顺滑,大大减少了运维工作量。
即便你对Linux不熟悉,你也能轻松部署各种常见软件、Java项目。
用一幅图标示如下:
在这里插入图片描述
Docker本身包含一个后台服务,我们可以利用Docker命令告诉Docker服务,帮助我们快速部署指定的应用。Docker服务部署应用时,首先要去搜索并下载应用对应的镜像,然后根据镜像创建并允许容器,应用就部署完成了。

一、常见命令

Docker最常见的命令就是操作镜像、容器的命令,详见官方文档: https://docs.docker.com/
在这里插入图片描述
拉取Nginx镜像

docker pull nginx

查看本地镜像列表

docker images

创建并运行Nginx容器

docker run -d --name nginx -p 80:80 nginx

查看容器

docker ps
docker ps -a

停止容器

docker stop nginx

再次启动容器

docker start nginx

进入Nginx容器

docker exec -it nginx bash
#退出容器
exit

删除容器

docker rm mysql
docker rm -f mysql 

二、数据卷

数据卷(volume)是一个虚拟目录,是容器内目录与宿主机目录之间映射的桥梁。
在这里插入图片描述
在这里插入图片描述

docker volume create
创建数据卷
docker volume ls
查看所有数据卷
docker volume rm
删除指定数据卷
docker volume inspect
查看某个数据卷的详情
docker volume prune
清除数据卷

三、数据挂载

可以发现,数据卷的目录结构较深,如果我们去操作数据卷目录会不太方便。在很多情况下,我们会直接将容器目录与宿主机指定目录挂载。挂载语法与数据卷类似:

# 挂载本地目录
-v 本地目录:容器内目录
# 挂载本地文件
-v 本地文件:容器内文件

查看容器是否与宿主机挂载

docker inspect 容器名

Mounts目录下为如下结构则为挂载上了
在这里插入图片描述
在这里插入图片描述
1,准备好mysql的init目录和conf目录:
在这里插入图片描述
2,以及对应的初始化SQL脚本和配置文件:
在这里插入图片描述
在这里插入图片描述
其中,hm.cnf主要是配置了MySQL的默认编码,改为utf8mb4;而hmall.sql则是后面我们要用到的黑马商城项目的初始化SQL脚本。
3,我们直接将整个mysql目录上传至虚拟机的/root目录下:
在这里插入图片描述
4,创建并运行新mysql容器,挂载本地目录

# 2.进入root目录
cd ~
# 3.挂载本地目录
docker run -d \
  --name mysql \
  -p 3306:3306 \
  -e TZ=Asia/Shanghai \
  -e MYSQL_ROOT_PASSWORD=123 \
  -v /root/mysql/data:/var/lib/mysql \
  -v /root/mysql/init:/docker-entrypoint-initdb.d \
  -v /root/mysql/conf:/etc/mysql/conf.d \
  mysql

四、自定义镜像

镜像就是包含了应用程序、程序运行的系统函数库、运行配置等文件的文件包。构建镜像的过程其实就是把上述文件打包的过程。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
更新详细语法说明,请参考官网文档: https://docs.docker.com/engine/reference/builder

案例:
我们可以基于Ubuntu基础镜像,利用Dockerfile描述镜像结构

# 指定基础镜像
FROM ubuntu:16.04
# 配置环境变量,JDK的安装目录、容器内时区
ENV JAVA_DIR=/usr/local
# 拷贝jdk和java项目的包
COPY ./jdk8.tar.gz $JAVA_DIR/
COPY ./docker-demo.jar /tmp/app.jar
# 安装JDK
RUN cd $JAVA_DIR \ && tar -xf ./jdk8.tar.gz \ && mv ./jdk1.8.0_144 ./java8
# 配置环境变量
ENV JAVA_HOME=$JAVA_DIR/java8
ENV PATH=$PATH:$JAVA_HOME/bin
# 入口,java项目的启动命令
ENTRYPOINT ["java", "-jar", "/app.jar"]

也可以直接基于JDK为基础镜像,省略前面的步骤:

# 基础镜像
FROM openjdk:11.0-jre-buster
# 拷贝jar包
COPY docker-demo.jar /app.jar
# 入口
ENTRYPOINT ["java", "-jar", "/app.jar"]

五、网络

默认情况下,所有容器都是以bridge方式连接到Docker的一个虚拟网桥上:
在这里插入图片描述
加入自定义网络的容器才可以通过容器名互相访问,Docker的网络操作命令如下:
在这里插入图片描述

六、命令别名

给常用Docker命令起别名,方便我们访问:

# 修改/root/.bashrc文件
vi /root/.bashrc
内容如下:
# .bashrc

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias dps='docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Status}}\t{{.Names}}"'
alias dis='docker images'

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

然后,执行命令使别名生效

source /root/.bashrc
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值