Docker
容器技术和虚拟机技术的不同传统虚拟机,虚拟出一套硬件,运行一个完整的操作系统,然后在这个系统上安装和运行软件容器内的应用直接运行在宿主机的内核,容器没有自己的内核,也没有虚拟硬件,所以轻便容器之间相互隔离,每个容器内都有一个自己的文件系统,互不影响。镜像(images)相当于是一个模板,通过镜像可以创建多个容器容器(container)通过镜像来创建,通过容器技术,独立运行一个或者一组应用可以理解
一、Docker概述
容器技术和虚拟机技术的不同
1.传统虚拟机,虚拟出一套硬件,运行一个完整的操作系统,然后在这个系统上安装和运行软件;
2.容器内的应用直接运行在宿主机的内核,容器没有自己的内核,也没有虚拟硬件,所以轻便;
3.容器之间相互隔离,每个容器内都有一个自己的文件系统,互不影响。
镜像(images)
相当于是一个模板,通过镜像可以创建多个容器
容器(container)
通过镜像来创建,通过容器技术,独立运行一个或者一组应用
可以理解为一个简易的linux系统
仓库(repository)
仓库是存放镜像的地方,仓库分为私有和公有。
环境查看
查看操作系统版本:uname -r
查看系统信息:cat /etc/os-release
安装Docker
#1.卸载旧的版本
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
#2.需要的安装包
yum install -y yum-utils
#3.设置镜像仓库
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#更新yum软件包索引
yum makecache fast
#4.安装docker相关内容(注:-ce社区版)
yum install docker-ce docker-ce-cli containerd.io
启动Docker
#启动docker
systemctl start docker
#查看是否启动成功
docker version
#运行hello world
docker run hello-world
#查看hello-world镜像
docker images
卸载Docker
#卸载docker
yum remove docker -ce docker-ce-cli containerd.io
#删除资源
rm -rf /var/lib/docker (注:docker的默认工作路径)
Docker的底层原理
docker是一个client-server结构的系统,docker的守护进程运行在主机上,通过socket从客户端访问;docker-server接受到docker-client指令,就会执行这个命令。
Docker为什么比VM快?
1.docker有着比虚拟机更少的抽象层;
2.docker利用的是宿主机的内核,vm需要的是guest OS;
所以说,新建一个容器的时候,docker不需要像虚拟机一样重新加载一个操作系统内核,避免引导性的操作。虚拟机是加载guest OS,是分钟级别的,而docker利用宿主机的操作系统,省略了这个复杂的过程,是秒级别的。
二、Docker命令
帮助命令
docker version #显示docker的版本信息
docker info #查看docker系统信息,包括镜像和容器的数量
docker 命令 --help #帮助文档
官网帮助文档:https://docs.docker.com/engine/reference
镜像命令
docker images #查看本地主机上所有的镜像
[root@192 /]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest feb5d9fea6a5 11 days ago 13.3kB
#注释
REPOSITORY 镜像的仓库源
TAG 镜像标签
IMAGE ID 镜像的ID
CREATED 镜像的创建时间
SIZE 镜像的大小
#可选项
-a #列出所有
-q #只显示镜像的id
docker search mysql #搜索命令
docker search mysql --filter=STARS=3000 #搜索过滤,搜索镜像STARS大于3000的
docker pull下载镜像
docker pull 镜像名:tag
[root@192 /]# docker pull mysql
Using default tag: latest #默认tag是最新版本
latest: Pulling from library/mysql
07aded7c29c6: Pull complete #分层下载
f68b8cbd22de: Pull complete
Digest: sha256:4fcf5c80db19675a5c067e8b0e78a778ae2c6577213d #签名
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest #真实镜像地址
#等价于docker pull docker.io/library/mysql:latest
docker rmi 删除镜像
docker rmi -f 镜像ID #删除指定镜像
docker rmi -f $(docker images -aq) #删除所有镜像
docker rmi -f 镜像ID1 镜像ID2 镜像ID3 #删除多个镜像
未完待续........
更多推荐
所有评论(0)