docker的入门学习(二)之daocker的安装配置和基本使用
Centos7上安装Docker
确定你是Centos7及以上版本
1 | cat /etc/redhat-release |
1 | 卸载旧版本 |
1 2 3 4 5 6 7 8 | sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine |
yum安装gcc相关
1 2 | yum -y install gcc yum -y install gcc-c++ |
安装需要的软件包
1 | yum install -y yum -utils |
使用阿里云服务器要再加上一步才可以设置镜像
1 | yum install -y yum-utils device-mapper-persistent-data lvm2 |
设置stable镜像仓库
1 2 3 | sudo yum-config-manager \ --add-repo \ https: //download.docker.com/linux/centos/docker-ce.repo |
设置阿里云镜像
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
更新yum软件包索引
1 | yum makecache fast |
安装DOCKER CE
1 | sudo yum install docker-ce docker-ce-cli containerd.io |
1 | 启动如果没有报错说明没有问题 |
1 | systemctl start docker |
1 | 查看后台服务 |
1 | ps -ef |grep docker |
测试
1 | docker version |
1 | docker run hello-world |
卸载
1 2 3 4 | systemctl stop docker yum remove docker-ce docker-ce-cli containerd.io rm -rf / var /lib/docker rm -rf / var /lib/containerd |
镜像加速器配置
sudo mkdir -p /etc/docker
1 2 3 4 5 | sudo tee /etc/docker/daemon.json <<- 'EOF' { "registry-mirrors" : [ "https://l3su1l19.mirror.aliyuncs.com" ] } EOF |
1 2 3 | sudo systemctl daemon-reload sudo systemctl restart docker |
为什么Docker会比vm虚拟机快
传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;
2.容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。
3.每个容器之间互相隔离,每个容器有自己的文件系统 ,容器之间进程不会相互影响,能区分计算资源。
1.docker 有着比虚拟机更少的抽象层
由于docker不需要Hypervisor(虚拟机)实现硬件资源虚拟化,运行在docker容器上的程序直接试用的都是实际物理机的硬件资源。因此在CPU、内存利用率上docker将会在效率上有明显的优势。。
2.docker利用的是宿主机的内核,而不需要加载操作系统的OS内核
当新建一个容器时,docker不需要和虚拟机一样重新加载一个操作系统内核。进而避免引寻、加载操作系统内核返回等比较费时费资源的过程,当新建一个虚拟机时,虚拟机软件需要加载OS,返回新建的过程时分钟级别的,而docker由于直接利用宿主机的操作系统,则省略了返回过程,因此新建一个docker容器只需要几秒钟。
帮助启动类命令
1 2 3 4 5 6 7 8 | 启动docker: systemctl start docker 停止docker: systemctl stop docker 重启docker: systemctl restart docker 查看docker状态: systemctl status docker 开机启动: systemctl enable docker 查看docker概要信息: docker info 查看docker总体帮助文档: docker --help 查看docker命令帮助文档: docker 具体命令 --help |
原本的docker源:
1 | sudo yum-config-manager --add-repo https: //download.docker.com/linux/centos/docker-ce.repo |
换成了阿里的:
1 | sudo yum-config-manager --add-repo http: //mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo |
但是问题也就出现在这里了,
但我使用sudo systemctl enable docker命令的时候
给我报了这个
1 | Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service. |
最后知道了,因为我在使用源的时候,执行了这个
1 | sudo yum install -y yum-utils device-mapper-persistent-data lvm2 |
但是如果我们换成了阿里的之后,这个并没有先操作!
因此如果我们换了了阿里云之后,还是必须执行这个命令
1 | sudo yum install -y yum-utils device-mapper-persistent-data lvm2 |
然后就能解决这个报出来了问题了.
镜像命令
docker images
- 列出本地主机上的镜像: docker images
各个选项说明:
- REPOSITORY:表示镜像的仓库源 TAG:镜像的标签版本号 IMAGE ID:镜像ID CREATED:创建时间 SIZE:镜像大小
如果你不指定一个镜像的版本标签,例如你只使用 ubuntu,docker 将默认使用 ubuntu:latest 镜像 同一仓库源可以有多个 TAG版本,代表这个仓库源的不同个版本,我们使用 REPOSITORY:TAG 来定义不同的镜像。
OPTIONS说明:
- -a :列出本地所有的镜像(含历史映像层)
-q :只显示镜像ID
- docker search [OPTIONS] 镜像名
OPTIONS说明:
- --limit : 只列出N个镜像,默认25个
docker search 某个xxx镜像的名字
实例
从 Docker Hub 查找所有镜像名包含 java,并且收藏数大于 10 的镜像
OPTIONS说明:
-
--automated :只列出 automated build类型的镜像;
-
--no-trunc :显示完整的镜像描述;
-
-f <过滤条件>:列出收藏数不小于指定值的镜像。
参数说明:
NAME: 镜像仓库源的名称
DESCRIPTION: 镜像的描述
OFFICIAL: 是否 docker 官方发布
stars: 类似 Github 里面的 star,表示点赞、喜欢的意思。
AUTOMATED: 自动构建。
docker pull 某个xxx镜像的名字 从镜像仓库中拉取或者更新指定镜像
OPTIONS说明:
-
-a :拉取所有 tagged 镜像
-
--disable-content-trust :忽略镜像的校验,默认开启
docker pull 镜像名字[:TAG]
docker pull 镜像名字
1.没有TAG就算最新版
2.等价于
3.docker pull 镜像名字:latest
4.docker pull ubuntu
docker system df 查看镜像/容器/数据卷所占用的空间
如果你想检查 Docker 使用了多少空间,你可以使用内置命令 docker system df,以及 Linux 命令du 来获取整个目录的大小。
docker system df
sudo du -sh /var/lib/docker/
此命令显示静态映像、对其文件系统(例如日志文件)进行了更改的容器以及绑定到容器的卷。
然而,这并不完全准确——在这里,我运行了许多容器,但它们都将数据存储在主机操作系统上的绑定安装中,而不是卷中。
docker rmi 查看xxx镜像名字的id
docker rmi : 删除本地一个或多个镜像。
OPTIONS说明:
-
-f :强制删除;
-
--no-prune :不移除该镜像的过程镜像,默认移除;
删除单个镜像
docker rmi -f 镜像ID
删除多个镜像
docker rmi -f 镜像命1.TAG镜像名2:TAG
删除全部
docker rmi -f ${docker images -qa}
有镜像才可以创建容器这是根本前提
1 2 | docker pull centos docker pull nbuntu |
OPTIONS说明(常用):有些是一个减号,有些是两个减号
--name="容器新名字" 为容器指定一个名称
-d:后台运行容器并返回容器ID:也既守护式容器(后台运行)
-i:以交互模式运行容器,通常与+t同时使用:
-t:为容器重新分配一个输入终端,通常与+i同时使用:
也即可启动交互式容器(前台有伪终端,等待交互)
-P:随机端口映射,大写P
-p:随机端口映射,小写p
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?