Docker基础入门
Docker简介
-
Docker是一个开源的容器化技术。
-
首先要明白一个概念,docker是干什么的?
docker可以理解为一个沙箱,单独模拟了一个微电脑,而每个微电脑其实都是一个简易版的Linux操作系统。这便是容器化技术。
这个被模拟的微电脑叫做容器,其中包含了软件、系统工具、以及系统库、运行环境、root用户权限、进程空间、用户空间、网络空间等等等。
-
为什么要用docker?
这个问题的本质是:为什么要使用容器化技术?
在此之前,所有的软件都需要人工去调整,经常会受到操作系统和依赖库版本的影响,就会导致环境不统一,进而进发其他问题。
现在有了容器化技术,人们只需要按照容器的标准去操作即可,无需关心里面中使用到了什么依赖。
安装docker
linux环境
-
需要的安装包,提供了yum的相关功能
yum install -y yum-utils -
设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo如果这里报错:Could not fetch/save url https://download.docker.com/linux/centos/docker-ce.repo to file /etc/yum.repos.d/docker-ce.repo: [Errno 14] curl#35 - “TCP connection reset by peer”
是因为电脑访问不到Doker的官方仓库URL,那么就不使用官方镜像,改为使用阿里云镜像即可
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -
更新yum软件包索引
yum makecache fast -
安装docker最新的社区版
# 最小安装 yum install docker-ce # 完整安装(推荐) yum install -y docker-ce docker-ce-cli containerd.io -
启动并加入开机启动
systemctl start docker systemctl enable docker -
检查docker是否成功启动,出现下图说明启动成功了

-
一些其他命令:
重启docker服务:service docker restart
启动服务:systemctl start docker
查看docker版本:docker version
查看docker当前状态:docker info
帮助:docker 命令 --help -
卸载docker
systemctl stop docker 1)卸载依赖 yum remove docker-ce docker-ce-cli containerd.io 2)删除资源 rm -rf /var/lib/docker docker的默认工作路径 -
如果安装过以前的旧版本的docker,卸载旧版本的docker:
yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine -
docker运行流程

-
Docker工作结构:
Docker是一个Client - Server结构的系统,Docker的守护进程运行在主机上,通过Socket从客户端访问;
DockerService接受到DockerClient的指令,就会执行这个命令。

windows环境
- 直接下载docker安装程序
- 按程序一步步来安装即可
- 选择默认的WSL 2虚拟技术即可
- Windows 中运行的 Docker 并非真正的原生 Linux Docker,而是通过虚拟机技术。 和 macOS 中的Docker Desktop 原理一致。
- Windows Docker Desktop 的核心是一个轻量级、高度优化的 Linux 虚拟机(VM),它“夹在”Windows 宿主机和你的容器之间。
- 一共有两种实现的方式:
- WSL 2(默认且推荐)
- 原理:WSL 2 (Windows Subsystem for Linux 2) 本身就是一个完整的、轻量级 Linux 内核,运行在微软的 Hyper-V 管理程序之上。
Docker Desktop 将 Docker 引擎(dockerd)直接安装在这个 WSL 2 的 Linux 发行版(通常是 docker-desktop 发行版)中。 - 关键目录映射:宿主机的全部目录会自动挂载到 WSL 2 的 /mnt/host
- 可以通过 \wsl$\ 路径直接访问 Linux 文件。
- 进入wsl虚拟环境
wsl -d docker-desktop
- 原理:WSL 2 (Windows Subsystem for Linux 2) 本身就是一个完整的、轻量级 Linux 内核,运行在微软的 Hyper-V 管理程序之上。
- Hyper-V(传统模式)
- 这是 Docker Desktop for Windows 早期使用的技术。
- 原理:Docker 在 Windows 的 Hyper-V 管理程序上创建一个名为 “DockerDesktopVM” 的小型专用 Linux 虚拟机。所有容器都在这个独立的 VM 中运行。
- 现已逐渐被 WSL 2 取代。
- 除非你的 Windows 版本不支持 WSL 2(如某些旧版 Windows 10 家庭版),否则无需使用此模式。
- WSL 2(默认且推荐)
镜像
-
docker的第一步,镜像
-
什么叫镜像?
镜像可以理解为一个只读的模板,其中描述了某个程序所需的所有依赖和配置。
例如:现在有一个 mysql 8.0 的镜像,只需要根据这个镜像便可一键做一个沙箱出来,里面有着 mysql 8.0 的这个程序。
-
这些镜像从哪里下载呢?默认会从docke官方的仓库DockerHub下载
镜像命令
-
查看本机所有的镜像
docker images 【可选项】
-a:列出所有镜像
-q:只显示镜像id

解释:
REPOSITORY:镜像的名(仓库源)
TAG :镜像的标签
IMAGE ID:镜像的id
CREATED:镜像的创建时间
SIZE:镜像的大小镜像的本地存储位置:/var/lib/docker (容器等等也在这个位置存储)
-
搜索镜像
docker search 镜像名 【可选项】
–filter=stars=3000 :只显示收藏数大于3000的镜像这个命令会去dockerHub仓库查询镜像;但一般会人工去dockerHub网站上浏览镜像
-
下载镜像
docker pull 镜像名【:tag】
可指定版本号,默认最新版(latest)例如,下载一个mysql的最新镜像:

也可以指定版本号下载:

-
修改镜像名
docker tag 镜像id 新名称
-
删除镜像
docker rmi -f 镜像id1 镜像id2 …
docker rmi -f $(dicker images --aq) :删除全部镜像 -
导出镜像文件
# linux系统: docker save image-name:tag > image.tar docker save image-name:tag | gzip > image.tar.gz #或者 docker save -o <保存路径>/<镜像名称>.tar <镜像名称>:<标签> docker save -o image.tar image-name:tag -
导入镜像文件
docker load < hello-world.tar.gz #或者 docker load -i image.tar
容器
- 容器就是指某个具体的程序
- 容器是某个镜像的实例
- docker全流程图

容器命令
-
构建并运行容器 docker run 【可选项】 image --name="自定义容器名" :指定容器名 -d:后台方式运行 -it:使用交互方式运行,进入容器查看内容 -p:指定容器端口 例1:-p 8080 例2:-p 8080:8080 -p 主机端口:容器端口 -p ip:主机端口:容器端口 -p 容器端口 -P:随机指定端口 例,运行一个“centos镜像”的容器: docker pull centos docker run -it centos /bin/bash exit :退出并关闭容器 ctrl + P + Q : 退出但不关闭容器 其他可选参数: -v 数据卷的挂载,可以将物理机的某些文件/文件夹与容器内共享 -v 物理机路径:容器内路径 -v ./data:/var/data -
查看正在运行的容器 docker ps 【可选项】 -a:当前运行+曾经运行过的容器 -n=1:最近倒数运行的容器(显示最后几个) -q:只显示容器编号 -
删除容器 docker rm 容器id 不能删除正在运行的容器 可加 -f 强制删除 docker rm -f $(docker ps -aq) :强制删除所有容器 -
启动停止容器等操作: docker start 容器id:启动容器 docker restart 容器id:重启容器 docker stop 容器id:停止当前正在运行的容器 docker kill 容器id:强制停止容器 -
显示日志:docker logs 【可选项】 容器id -tf:显示时间戳等信息 --tail number:显示最近多少条日志 -
查看容器中的进程信息 docker top 容器id -
查看详细信息/元数据 docker inspect 容器id -
进入当前正在运行的容器 docker exec -it 容器id /bin/bash :进入容器后开启一个新的终端,可以在里面操作(退出容器 ctrl+D) docker attach 容器id :进入容器正在执行的终端,不会启动新的进程 -
从容器内拷贝文件到主机上 : docker cp 容器id:容器内路径 目的主机路径 反向:从主机拷贝文件到容器内: docker cp 主机路径 目的容器id:容器内路径 -
docker查看系统内存等:docker stats -
修改容器名:docker rename 容器id 新名
参考资料
更多推荐


所有评论(0)