SpringCloud 之Docker的安装及使用

一:初识Docker

1.1Docker是什么:

        docker是一个快速交付应用,运行运用的技术;

1.2.Docker有什么优势:

        1).可以将程序及其依赖,运行环境一起打包为一个镜像,可以迁移到任意的Linux系统;

        2).运行时利用沙箱机制行成隔离机制,各个应用互不干扰;

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

1.3.Docker如何解决大型项目依赖关系复杂,不同组件依赖的兼容性问题?

        1).Docker允许开发中将应用、依赖、函数库、配置一起打包,形成可移植镜像;

        2).Docker应用运行在容器中,使用沙箱机制,相互隔离。

1.4.Docker如何解决开发、测试、生产环境有差异的问题?

        Docker镜像中包含了完整的运行环境,包括系统函数库,仅依赖Linux系统内核,因此可以在任意Linux系统上运行。

2.Docker和虚拟机的区别:

虚拟机:是在操作系统中模拟硬件设备,然后运行另一个操作系统,比如在 Windows 系统里面运行 Ubuntu 系统,这样就可以运行任意的Ubuntu应用了。

Docker:仅仅是封装函数库,并没有完整的操作系统。如图

 

 对比来看:

 小结:

Docker与虚拟机的差异:

        1).Docker是一个系统进程,虚拟机是在操作系统中的操作系统;

        2).Docker体积小,启动速度快,性能好,虚拟机体积大,启动速度慢,性能一般。

3.Docker的架构:

3.1镜像和容器

        镜像(Image):Docker将应用程序及其所需要的依赖,函数库,环境,配置等文件打包在一起,称为镜像;

        容器(Container):镜像中应用程序运行后行成的进程就是容器,只是Docker会给容器的进程做隔离,对外不可见;

3.2Docker架构

3.3安装Docker

4.Docker的基本操作

4.1镜像基本操作:

docker --help 查看所有指令

docker pull 镜像名:版本号(拉取镜像)

docker images :查看镜像

docker images -q 只查看id

docker save -o 文件名:保存镜像为tar的压缩包

docker load -i 指定一个tar文件:加载一个镜像

docker rmi 镜像名称/镜像id:删除镜像

 4.2容器相关命令

容器基本操作

docker run:创建并运行一个容器

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

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

docker stop:停止一个运行的程序

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

docker rm:删除一个容器

4.2.1运行

docker run 运行一个容器

        --name 别名

        -p 宿主机端口号(可以更改):容器端口号(不可更改)

        -d 后台运行

        指定镜像名称

注意:以上为一整条完整的命令;

在找不到镜像的时候会自动下载

4.2.2查看容器日志的命令

        docker logs

                -f 持续监控日志

查看运行状态

        docker ps 查看运行状态 -a查看全部

4.2.3案例:进入容器,修改文件

执行命令:

1.进入容器

docker exec -it mn bash

exec:进入容器内部,执行一个命令

-it:允许我们与容器交互

bash:进入容器后执行的命令,bash是一个linux终端交互命令   

 2.进入nginx的HTML所在目录 /usr/share/nginx/html

cd /usr/share/nginx/html

 3.修改index.html内容

sed -i -e 's#Welcome to nginx#努力吧少年#g' -e 's#<head>#<head><meta charset="utf-8">#g' index.html

 4.访问本地虚拟机地址

4.2.4

数据卷的操作

docker volume create 创建数据间

docker volume ls 查看所有数据卷

docker volume inspect 数据卷名 查看详细数据

docker volume 

docker volume

数据卷的挂载

 重点:

案例:给mysql挂载本地目录

        首先我们在这里要搞清楚数据卷的作用,其实,在这个图当中,数据卷就相当于一个中介,它负责将宿主机和容器连接在一起,所有,在我们修改宿主机或者容器的任意一方时候,另一方也会跟着相应的更改,同步数据

容器不仅可以挂载在数据卷上,还可以挂载在宿主机上

如图:

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

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

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

基本过程如下所示:

1)在将课前资料中的mysql.tar文件上传到虚拟机,通过load命令加载为镜像

2)创建目录/tmp/mysql/data mkdir -p

3)创建目录/tmp/mysql/conf,将课前资料提供的hmy.cnf文件上传到/tmp/mysql/conf

4)去DockerHub查阅资料,创建并运行MySQL容器,要求:

① 挂载/tmp/mysql/data到mysql容器内数据存储目录

② 挂载/tmp/mysql/conf/hmy.cnf到mysql容器的配置文件

③ 设置MySQL密码

        此时,我们面临的问题就是写启动命令;

我先将我写启动命令时候出现的一些bug列出:

1.首先用过从dockerhub上进行查询挂载语法该怎么写

2.通过查询:

 错误一:故 -v /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d 注意:这种命令是错误的,错误示范如图:

         改正后 /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf

错误二:在执行过程中遇到了端口号被占用的问题,如图:

通过命令 netstat -tanlp 如图:


 

接着通过命令kill 1509杀死该进程后解决 

最后通过执行正确的命令:

docker run --name mysql -e MYSQL_ROOT_PASSWORD=123456 -v /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf -v /tmp/mysql/data:/var/lib/mysql -p 3306:3306 -d mysql:5.7.25;成功完成挂载:如图所示:

测试: 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值