一.定义

Docker是⼀个开源的容器引擎,基于Go语⾔开发。

对Docker简单的理解就是使用Docker可以把一台服务器隔离成一个个独立的容器,我们可以把这地方描述的容器理解成一个沙盒。在每个容器中运行一个程序,不同的容器之间相互隔离,容器的创建,停止,以及启动基本都是秒为单位,而且容器对资源的需求也是非常有限的,比起虚拟化的技术而言,可以节约很多的资源成本。在DevOps技术栈体系和可持续交付中占据了重要的位置。

优点:数据隔离,降低成本

二.安装

1.安装完成后,会提示以下图片不关闭下载wsl文件,并安装

0

安装之后会关机重启

开启Hyper-V

0
0

打开任务管理器可以看到虚拟化:已启用

 

在Power shell使用管理员的命令执行如下命令: Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All

再次关机重启,Docker再次启动。

三.docker使用

  • 架构的标准:SAAS+Docker+K8S

  • 镜像:image 容器:container

  • 镜像是从什么地方获取?是从docker hub来获取,获取的命令是:pull

1.获取镜像:pull

  • 格式:docker pull centos:7.9.2009

docker pull 镜像名称:镜像版本(从dockerhub查询到的镜像,如果无版本默认最新的版本)

——命令是把hub的镜像放到本地

常用命令:

获取docker的镜像后,就可以运行对应的docker的镜像信息了,运行的命令为run,具体指令总结如下:

-it:交互式的命令

--rm:容器退出的时候删除容器的记录

--name:运行容器的时候指定容器的名称

-p:指定端口

-P:指定任意没有被占用的端口

-d :后台方式运行容器

 

2.查看镜像:images

2.1查看所有镜像列表:
  • docker images
2.2查看特定镜像:
  • docker images |grep 镜像名称——linux/mac版本

  • docker images |findstr镜像名称——Windows版本

2.3查看镜像详细信息:
  • docker image inspect 镜像image ID

2.4查看镜像的ID:
  • docker images -q

3.运行镜像:run

格式:docker run --rm 镜像名称:镜像版本

——运行镜像之后镜像就变成一个容器

(格式:docker run --rm hello-world: latest)

4.使用docker进入Linux环境

格式:docker run -it --rm centos:7.8.2003 bash

 

4.1安装所需命令yum install -y ×××

格式:yum install -y vim/losf/(在Linux里边查看文件内容是cat index.txt)

4.2退出安装:exit【退出后之前的镜像全没了!】

5.镜像的删除rmi

5.1运行后的镜像删除

镜像运行后在容器中生成一条记录,那么这个删除镜像的逻辑是:

1.先停止镜像运行的容器

  • 查看容器的进程:docker ps -a(所有的)

    筛选查看容器进程:docker ps -a |findstr/grep 镜像名称

  • 删除进程:docker stop containerID

2.删除镜像在容器中的记录: docker rm containerID

3.删除镜像:docker rmi 镜像名称

5.2没有运行的镜像删除
  • 通过name删除:docker rmi name

  • 通过image ID删除: docker rmi image ID

6.最开始删除运行记录(不加--rm)

docker run 镜像名称:镜像版本

7.给进程命名--name

docker run -it --rm --name 123 centos:7.8.2003(有rm是没有记录的,查看不到进程的)

8.查看占用端口:port

nginx:

  • 后台方式启动:docker run -d -p80:80 nginx

  • 查看进程:docker ps -a

  • 查看容器占用端口:docker port 进程ID】

其实到第二步就可以看了

后台方式启动多针对服务型的,在浏览器输入localhost,会跳转到所需服务

9.修改名称tag:

  • docker images 查看到所有进程tag

  • docker tag image ID 进程名:想修改的tag名字

(格式:docker tag afb6fca791e0 centos:7.8.2011)

此操作下相当于复制之前的仓库,只修改Tag名称,所以id不变

10.修改仓库名称

  • docker images 查看到所有进程tag

  • docker tag image ID 想改成的仓库名称

 

11.镜像的导入导出

场景:
服务器在A开发在B,开发把代码构成镜像导出,我们导入运行
镜像导出:
首先进入路径所在位置,格式:docker image save 镜像名 -o 路径镜像名.taz
以桌面路径为例:
  1. 先进入桌面,cd desktop
  2. docker image save hello-world -o C:\Users\小妖\Desktop\hello-world.taz
重要点老是找不到路径嘤嘤嘤::桌面随便一个文件夹打开属性复制路径
镜像的导入:
格式:docker image load -i 文件名称.taz

12.docker 容器管理

docker run 镜像名称 这个过程可以理解为:把镜像文件创建成docker容器的一部分,然后再进行启动。特别需要注意的是:容器内的进程必须是前台运行状态,否则容器直接退出
12.1查看容器错误日志:
格式:
  • docker logs -f 容器ID 查看实时日志
  • docker logs 容器ID|tail -5 查看后5行
  • docker logs 容器ID|head -20 查看前20行
12.2容器提交
  1. 先运行一个容器并且在内部进行内容编辑
  2. 将当前内容提交到新的容器(格式:docker commit 有内容的容器ID 新容器的名字)
  3. 退出原来的容器,并且内容完全不会保存
  4. 可以运行新的容器进行查看
重点:每次运行新的容器继续编辑内容,完成后需要进行二次提交
12.3容器的停止/启动
格式:
docker port 容器ID ——查看占用的端口
docker stop 容器ID,停止容器(停止服务是查不到端口的)
docker start 容器ID,开启容器

四.dockerfile

使用dockerfile主要是用于构建docker镜像文件信息,相当于一个脚本,通过dockerfile自己的指令,来构建软件依赖,文件依赖,存储等等情况。

(一)Dockerfile组成部分

dockerfile的主要组成部分可以汇总为: • 基础镜像信息 • 制作镜像操作指令 RUM • 容器启动时执行指令CMD["/bin/bash"]

(二)Dockerfile基本指令

  • FROM #指令基础镜像
  • MAINTAINER #指定维护者信息,也可以没有
  • RUN #具体执行的操作,在命令前面加上RUN即可
  • ADD #COPY文件,会自动进行解压
  • WORKDIR #设置当前工作目录
  • VOLUME #设置卷,挂载主机目录
  • EXPOSE #指定对外的端口
  • CMD #指定容器启动后需要干的事情
  • COPY #复制文件
  • ENV #环境变量
  • ENTRYPOINT #容器启动后执行的命令

构建:

创建的文件必须叫Dockerfile
txt是文本文件,如果在记事本写脚本,结束后删除后缀,变成脚本文件。**一个docker文件夹底下只能有一个Dockerfile**
FROM centos:7.8.2003
MAINTAINER ⽆涯
#定义⼀个变量,变量的值是Docker
ENV name Docker!
#运⾏程序,输出变量的值
ENTRYPOINT echo "Hello $name"

部署nginx

Dockerfile文件内容
FROM nginx
MAINTAINER ⽆涯
RUN echo "Hi, This Is A Docker Continer WebSite" > /usr/share/nginx/html/index.html
EXPOSE 80
 
构建格式:docker build -t 新起的名 .
启动:docker run --rm -p80:80 新起的名