Centos7上安装Docker
确定你是Centos7及以上版本
cat /etc/redhat-release
卸载旧版本
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
yum安装gcc相关
yum -y install gcc yum -y install gcc-c++
安装需要的软件包
yum install -y yum -utils
使用阿里云服务器要再加上一步才可以设置镜像
yum install -y yum-utils device-mapper-persistent-data lvm2
设置stable镜像仓库
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软件包索引
yum makecache fast
安装DOCKER CE
sudo yum install docker-ce docker-ce-cli containerd.io
启动如果没有报错说明没有问题
systemctl start docker
查看后台服务
ps -ef |grep docker
测试
docker version
docker run hello-world
卸载
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/dockersudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://l3su1l19.mirror.aliyuncs.com"] } EOFsudo 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容器只需要几秒钟。
帮助启动类命令
启动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源:
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
换成了阿里的:
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
但是问题也就出现在这里了,
但我使用sudo systemctl enable docker命令的时候
给我报了这个
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
最后知道了,因为我在使用源的时候,执行了这个
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
但是如果我们换成了阿里的之后,这个并没有先操作!
因此如果我们换了了阿里云之后,还是必须执行这个命令
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}
有镜像才可以创建容器这是根本前提
docker pull centos docker pull nbuntu
OPTIONS说明(常用):有些是一个减号,有些是两个减号
--name="容器新名字" 为容器指定一个名称
-d:后台运行容器并返回容器ID:也既守护式容器(后台运行)
-i:以交互模式运行容器,通常与+t同时使用:
-t:为容器重新分配一个输入终端,通常与+i同时使用:
也即可启动交互式容器(前台有伪终端,等待交互)