Docker(rush_peng)



一.Docker 介绍

1.有一篇文章讲的不错。建议看看

https://blog.csdn.net/bjweimengshu/article/details/108067509


2.Docker 解决的问题

  1. 我本地运行没问题啊?
    环境不一致。
  2. 哪个哥们又写死循环了,怎么这么卡?
    在多用户的操作系统下,会相互影响
  3. 淘宝双十一,用户量暴增。
    运维成本过高的问题
  4. 学习一门技术,学习安装成本过高。
    关于安装软件成本过高

3.Docker 的思想

在这里插入图片描述


  1. 集装箱:会将所有所需要的内容,放到不同的集装箱里,谁需要这些个环境,直接拿到这个集装箱就可以了。
  2. 标准化:
    1.运输的标准化:Docker 有一个码头,所有的集装箱都放在了这个码头上,谁要需要这个环境,只要派大海疼去搬运这个集装箱就可以了。
    2. 命名的标准化:Docker 提供了一系列的命令,帮助我们去获取集装箱等等的操作。
    3.提供了 REST 的API:衍生出来很多的图像化界面: Rancher
  3. 隔离
    Docker在运行的时候,会在Linux的内核中,单独开辟出来一片空间,这片空间不会影响到其他的程序

Docker 的相关术语

  • 注册中心(超级码头,上边放集装箱)
  • 镜像 。(集装箱)
  • 容器。(运行起来的集装箱)

二. Docker 的基本操作

2.1 Docker 的安装

  1. 下载 Docker 的依赖环境
  2. 设置 Docker 的国内镜像源

2.2 Docker的中央仓库

  1. Docker 的官方中央仓库,这个仓库最全,但是网速很慢,
  2. 网易蜂巢 ,但是需要注册,还有一个就是 http://hub.daocloud.io/(这个用的比较多)
  3. 使用公司内部的私有服务器

2.3 镜像的操作:

1.拉取镜像到本地

docker pull + 在 daocloud.io (也就是上边的地址) 复制过来的镜像地址


2.查看全部镜像

docker images (一定要是复数)

在这里插入图片描述


3.删除本地镜像:

docker rmi + 镜像的唯一标识符ID

(因为删除,所以是 remov image)

有这个命令,说明,现在镜像正在使用,不能停止。


2.4镜像的导入导出

一般情况下,镜像都是联网下载的,但是有情况,可以把别人下载好的镜像,打包后导出,然后再你的电脑上再导入。


1 镜像的导出

docker save -o +导出镜像的路径 +镜像id

2. 镜像的导入

docker load -i 镜像文件

3.修改导入的镜像名称

docker tag 镜像Id 镜像名称:版本号


2.5容器的操作

运行容器 (简单操作)

docker run 镜像的标识 | 镜像名称 [ : tag]

完整的操作

docker run -d -p 宿主机端口号:容器端口号。。–name 容器的名称 | 镜像名称 [:tag]

-d 表示后台运行容器(如果关掉界面,那么也就停止了)
-p 宿主机端口号:容器端口号。。为了映射当前 linux 的端口和容器端口


关于如何查看虚拟机的端口号https://zhidao.baidu.com/question/1707918041441638300.html
如何访问虚拟机:
https://blog.csdn.net/qq_33624558/article/details/83276844


查看正在运行的 docker

docker ps [-qa]

-a: 查看全部的容器,包括没有运行的
-q:只显示 Ip 地址

查看容器的日志

docker logs -f 容器 Id

-f: 可以滚动的查看 日志的最后几行。

进入容器的内部

docker exec -it + 容器的Id + bash

exec 全称是 execute

一般不推荐在镜像内部进行直接操作

删除容器

删除容器之前要先停止容器

#停止容器
docker stop 容器ID
#删除容器
cocker rm +容器ID


启动容器

docker start 容器 ID

3.Docker 应用:

3.1Docke安装:

菜鸟教程,可以一键安装:

3.2常用的命令

docker info

通过命令,将宿主机的内容复制到容器的内部

docker cp 文件名 容器Id :容器内部的路径


3.3数据卷

为了部署SSM的工程,需要使用 cp 命令将宿主机内的 ssm.war 文件复制到容器内部。但是一般不推荐使用这种在容器内部操作的方法

数据卷:将宿主机的一个目录映射到容器的一个目录中。

可以在宿主机中操作目录中的内容,那么容器内部映射的文件,也会跟着一起改变。


1.创建数据卷

docker volume create +数据卷名称

创建数据卷后,会默认存放在一个目录下: / var / lib / docker / volumes / 数据卷名称 / _data


2.查看数据卷的详细信息

docker volume inspect +数据卷名称


3.查看所有的数据卷

docker volume ls

4删除数据卷

docker volume rm +数据卷名称



5.应用数据卷

  • 当你映射的数据卷如果不存在的话,Docker 会帮你自动创建的。(会生成在上边默认的路径里)
docker  run -v  数据卷名称:容器内部路径  镜像id
  • 直接指定一个路径作为数据卷的存放位置。
docker run -v 路径:容器内部的路径  镜像id

例如(没跑通)

docker run -d -p 8080:8080  --name ssm_tomcat  -v /opt/volume_ssm_tomcat :/usr /local / tomcat /webapps  b8

4.Docker 自定义镜像

中央仓库上的镜像,也是 docker 的用户自己传上去的

1.创建一个 Dockerfile 文件,并且指定自定义镜像信息。

Dockerfile 文件常用的内容

 from:     指定当前自定义文件的依赖环境
 copy:    将相对路径下的内容复制到自定义的镜像中
 workdir: 声明镜像的默认工作目录
 cmd:      需要执行的命令 (在 workdir 下执行的,cmd可以写多的,但是最后只最后一个为准)

2.将准备好的Dockerfile 和相应的文件,拖拽到 Linux 操作系统中,通过 Docker 的命令制作镜像

 docker build -t  镜像名称:[tag] . 

最后那个 . 是指的在当前目录下。


.

5.Docker-Compose

之前运行一个镜像,需要添加大量的参数

  • 可以通过 Docker-Compose 编写这些个参数。
  • Docker-Compose 可以帮助我们批量的管理容器。
  • 只需要通过一个 docker-compose.yml 文件去维护即可。

用这个的话,需要先下载 Docker-compose


6. Docker CI.CD

引言:

在项目部署中:

  1. 将项目通过maven 进行编译大包
  2. 将文件上传到指定的 tomcat 的目录里
  3. 通过Dockerfile 将tomcat 和war 包转成一个镜像,由 DockerCompose 去运行容器

项目更新了:

将上述流程再次从头到尾的执行一次



三.Docker 与Asp.net core

1. 基础指令:

1.查看 docker 信息

docker  info

2.查看 image 列表

docker image ls

3.查看所有的 container

docker container ls --all

某一些具体的 docker 镜像,可以从 docker hub 上查看说明书


4.周期的声明周期

使用了 stop的镜像,可以再次拉取使用:

在这里插入图片描述

5.更换国内镜像

自行百度


2.Volum

volume的作用是把代码镜像连接起来

1.先看Docker的分层文件系统

在这里插入图片描述



docker 实际上就是一层一层的堆叠起来的;

比如下边的图示:DELTA文件就是这样拉取的一层一层的文件。

你在一个镜像上,可以建立多个容器



在这里插入图片描述

镜像里面的层是只读的,可以在镜像层上再加一层可读写的层,就成了容器

在这里插入图片描述

但是这种情况下,如果把镜像给删除了,那么里面的东西也被删除了,这是不可取的



2.Volume 卷

如何把源代码装入容器里:

  • 在制作镜像的时候,直接把源代码嵌入;(不考虑这个)
  • 把源代码挂载到容器的 读写层

volume 是容器里的一个特别的种类的目录,通常叫做数据volume ,顾名思义,里面可以放置 各种类型的数据,例如代码,日志文件,数据文件等等。

volume 可以在容器之间被共享和复用,可以让一个容器对多个volume读写,也可以让多个容器对一个 volume 读写。

对镜像的更新并不会影响 volume

对 volume 是被持久化的,即使容器被删除了,他依然还在



3.具体操作

查看当前的目录:

 ${pwd}

查看某个具体的镜像内容

docker inspect


参考文献

[1] https://www.bilibili.com/video/BV1sK4y1s7Cj/?p=3
[2] https://www.bilibili.com/video/BV1ib411w7L7/

posted @ 2020-09-17 10:10  沧海一声笑rush  阅读(42)  评论(0编辑  收藏  举报