Docekr基础知识
简介:
Docker 是基于 go 开发的开源项目。
引用:
虚拟机缺点:
1.资源占用多
2.冗余步骤多(开机)
3.启动很慢
容器化技术:
容器化技术并不是模拟一个完整的操作系统
docker和虚拟技术的不同
传统虚拟机,虚拟出一条硬件,运行完整的操作系统,然后再系统上安装运行软件
容器内的应用直接运行在宿主机的内容,容器是没有自己的内核,也没有虚拟硬件,所以轻便
每个容器间是相互隔离的,每个容器内都有属于自己的文件系统,互不影响。
Docker基本组成:
- 镜像(image):
docker镜像就好比是一个模板,可以通过这个模板创建容器服务,镜像==》run===》镜像01(提供服务),通过这个镜像可以创建多个容器(最终服务运行或者项目运行都是在容器中的) - 容器(container):
Docker利用容器技术,独立运行一个或者一个组应用,通过镜像来创建的
启动,停止,删除,基本命令
目前就可以把容器理解为一个简易的linux系统 - 仓库(repository):
仓库就是存放镜像的地方;
共有仓库和私有仓库
一、docker安装与卸载
# 1.卸载旧的版本
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
# 2.需要的安装包
sudo yum install -y yum-utils
# 3.设置镜像仓库
#默认国外的
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
更新索引
yum makecache fast
# 4.安装docker相关的内容 docker-ce 社区 ee企业版
yum install docker-ce docker-ce-cli containerd.io
# 5.启动docker
systemctl start docker
# 6.测试
docker run hello-world
# 7.查看下载的镜像
docker images
# 8.卸载docker
# 卸载依赖
sudo yum remove docker-ce docker-ce-cli containerd.io
# 删除资源 docker默认的工作路径
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
阿里云镜像加速:
二、Docker基础知识
1. docker run 过程
2. docker是怎么工作的?
docker是一个Client-Server结构的系统,docker的守护进程运行在主机上,通过socket客户端访问.
DockerServer接收到Docker-Client的指令就会执行这个命令
3. docker为什么比VM快?
- 1.docker有比虚拟机更少的抽象层
- 2.docker利用的是宿主机的内核,vm需要的是Guest OS
所以新建一个容器的时候,docker不需要像虚拟机一样重新加载一个操作系统的内核,避免引导。虚拟机是加载Guest OS,分钟级别的,而docker是利用宿主级的操作系统,省略了复杂的过程,秒级。
区别 | Docker 容器 | 虚拟机 |
---|---|---|
操作系统 | 与宿主机共享OS | 宿主机上运行宿主机os |
存储大小 | 镜像小,便于存储和传输 | 镜像庞大(vmdk等) |
运行性能 | 几乎无额外性能损失 | 操作系统额外的CPU、内存消耗 |
移植性 | 轻便、灵活、适用于Linux | 笨重,与虚拟化技术耦合度高 |
硬件亲和性 | 面向软件开发者 | 面向硬件运维者 |
5. docker 命令
a. 帮助命令
#显示docker版本信息
docker version
#显示docker的系统信息,包括镜像和容器的数量
docker info
#万能命令
docker 命令 -help
#帮助文档的地址:https://docs.docker.com/engine/reference/commandline/build/
b.镜像命令
# 查看所有本地的镜像
docker images
# 可选项
-a, --all #列出所有镜像
-q, --quiet #只显示镜像的ID
#解释
REPOSITORY 镜像的仓库源
TAG 镜像的标签
IMAGE ID 镜像ID
CREATED 镜像的创建时间
SIZE 镜像的大小
# 搜索镜像
docker search
docker search mysql --filter=STARS=3000
# 可选项
--filter=STARS=3000 搜索出来的镜像就是STARS大于3000的
# 下载镜像
docker pull 镜像名 [:tag]
Using default tag: latest #不写镜像名,默认最新
latest: Pulling from library/mysql
a330b6cecb98: Pull complete #分层下载:docker images 的核心,联合文件系统
9c8f656c32b8: Pull complete
88e473c3f553: Pull complete
062463ea5d2f: Pull complete
daf7e3bdf4b6: Pull complete
1839c0b7aac9: Pull complete
cf0a0cfee6d0: Pull complete
1b42041bb11e: Pull complete
10459d86c7e6: Pull complete
b7199599d5f9: Pull complete
1d6f51e17d45: Pull complete
50e0789bacad: Pull complete
Digest: sha256:99e0989e7e3797cfbdb8d51a19d32c8d286dd8862794d01a547651a896bcf00c #签名
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest #真实地址
docker pull mysql == docker.io/library/mysql:latest
# 指定版本下载
docker pull mysql:5.7
# 删除镜像
docker rmi 镜像id
# 强制删除指定镜像
docker rmi -f 镜像id
# 强制删除多个镜像
docker rmi -f 镜像id 镜像id
# 强制删除全部镜像
docker rmi -f $(docker images -aq)
c. 容器命令
# 新建容器并启动
docker run [可选参数] image
#参数说明
--name="Name" 容器名字 tomcat01 tomcat02 用来区分容器
-d 后台运行
-it 使用交互方式运行,进入容器查看内容
-p 指定容器的端口 -p 8080:8080
-p ip:主机端口:容器端口
-p 主机端口:容器端口
-p 容器端口
容器端口
-P 随机指定端口
标签:容器,入门,Pull,学习,镜像,docker,Docker,complete
From: https://blog.csdn.net/weixin_47712732/article/details/143633275