一.定义
Docker是⼀个开源的容器引擎,基于Go语⾔开发。
对Docker简单的理解就是使用Docker可以把一台服务器隔离成一个个独立的容器,我们可以把这地方描述的容器理解成一个沙盒。在每个容器中运行一个程序,不同的容器之间相互隔离,容器的创建,停止,以及启动基本都是秒为单位,而且容器对资源的需求也是非常有限的,比起虚拟化的技术而言,可以节约很多的资源成本。在DevOps技术栈体系和可持续交付中占据了重要的位置。
二.安装
1.安装完成后,会提示以下图片不关闭下载wsl文件,并安装

安装之后会关机重启
开启Hyper-V


打开任务管理器可以看到虚拟化:已启用
在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.镜像的导入导出
镜像导出:
- 先进入桌面,cd desktop
- docker image save hello-world -o C:\Users\小妖\Desktop\hello-world.taz
镜像的导入:
12.docker 容器管理
12.1查看容器错误日志:
- docker logs -f 容器ID 查看实时日志
- docker logs 容器ID|tail -5 查看后5行
- docker logs 容器ID|head -20 查看前20行
12.2容器提交
- 先运行一个容器并且在内部进行内容编辑
- 将当前内容提交到新的容器(格式:docker commit 有内容的容器ID 新容器的名字)
- 退出原来的容器,并且内容完全不会保存
- 可以运行新的容器进行查看
12.3容器的停止/启动
四.dockerfile
(一)Dockerfile组成部分
(二)Dockerfile基本指令
- FROM #指令基础镜像
- MAINTAINER #指定维护者信息,也可以没有
- RUN #具体执行的操作,在命令前面加上RUN即可
- ADD #COPY文件,会自动进行解压
- WORKDIR #设置当前工作目录
- VOLUME #设置卷,挂载主机目录
- EXPOSE #指定对外的端口
- CMD #指定容器启动后需要干的事情
- COPY #复制文件
- ENV #环境变量
- ENTRYPOINT #容器启动后执行的命令
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)