2025最新版Docker讲解/面试/命令/容器化技术
弱小和无知不是生存的障碍,傲慢才是!
Docker是什么
docker是一款由Go语言开发基于操作系统内核提供轻量虚拟化,在Docker安装的软件并不是真正安装在宿主机操作系统中,而是安装在容器的文件系统中(隔离环境),宿主机看不到这些安装,容器之间互不影响。
镜像
镜像搜索
docker search
我在使用这个命令时,总是出现报错,也不是镜像源问题。但在命令上加上镜像就行了。
docker search 镜像加速地址/[imageName]
镜像下载
docker pull 镜像名:版本
镜像列表
docker images [-a]
镜像删除
docker rmi 镜像名:版本/镜像ID
容器操作
容器运行[创建+启动]
docker run [-d --name -p ]镜像名/镜像ID
默认同步启动后,-d[detach v.分离] 可后台启动,--name 后可指定容器名,-p进行宿主机与容器内部端口映射
容器启动[已存在容器]
docke start 容器名/ID
默认异步启动后
容器状态
docker stats 容器名/ID
容器列表
docker ps
默认查看运行的容器,-a 查看全部容器
容器日志
docker logs 容器名/ID
容器停止
docker stop 容器名/ID [不可用镜像名]
容器重启
docker restart 容器名/ID
容器删除
docker rm 容器名/ID
-f强制删除
容器进入
docker exec -it 容器名/ID /bin/bash
-it 交互式,/bin/bash 命令行操作。进入容器单独文件系统
分享
容器提交
docker commit [-m 信息] 容器名/ID 镜像名:版本
-m 增加提交信息,提交到本机镜像中
镜像保存
docker save -o 压缩包名.tar 镜像名:ID/ID
镜像加载
docker load -i 压缩包路径
自动将压缩包转成docker镜像
以下推送,本人无法实现。请教....
登录
docker login
命名
docker tag 镜像名:版本/ID dockerhub用户名/自定义镜像名:版本
产生一个新的镜像,ID与之前镜像相同
推送
docker push 镜像名:版本
拉取
docker pull 用户名/镜像名:版本
数据共享
为了避免进入容器内部文件系统的复杂结构,我们在创建容器的时候可以使用目录挂载,让宿主机与容器之间共享数据。
目录挂载
以宿主机内容为准
docker run [-v 宿主机路径(/根路径开始)/容器路径] --name 自定义容器名 镜像名:版本/ID
卷映射
docker run [-v 宿主机路径/容器路径] --name 自定义容器名 镜像名:版本/ID
默认存在在宿主机/var/lib/docker/volumes/<volume-name>
容器通信
一般容器想要通信需要连接到宿主机ip,然后通过宿主机暴露的端口,在映射到别的容器。效率不高。
在我们docker内部有一个docker0网络,相当于一个局域网,每个容器都有自己的ip,我们可以直接通过他们的ip访问,但由于一些开关机会导致容器发生ip变化,所以这不是最佳选择。
我们可以自定义网络,通过容器名作为我们的ip
自定义网络
docker network create 网络名
然后在启动容器时
docker run -d --name 自定义容器名 --newwork 网络名 镜像:版本/ID
docker compose批量启动