Docker教程(系统详细)

一.概述

Docker提供了在松散隔离的环境(称为容器)中打包和运行应用程序的功能。隔离和安全性使您可以在给定主机上同时运行多个容器。容器是轻量级的,包含运行该应用程序所需的所有内容,因此您无需依赖主机上当前安装的内容。您可以在工作时轻松共享容器,并确保与您共享的每个人都能以相同的方式获得相同的容器。

1.容器化技术

虚拟机技术缺点:

  • 资源占用十分多

  • 冗余步骤多

  • 启动很慢

容器化技术不上模拟的一个完整的操作系统

比较docker和虚拟机的不同:

  • 传统虚拟机,虚拟出一条硬件,运行一个完整的操作系统,然后在这个系统上安装和运行软件
  • 容器内的应用直接运行在宿主机的内容,容器是没有自己的内核的,也没有虚拟我们的硬件,所以就轻便了
  • 每个容器间是互相隔离,每个容器内都有一个属于自己的文件系统,互不影响

2.DevOps(开放、运维)

应用更快速的交付和部署

传统:一堆帮助文档,安装程序

Docker:打包镜像发布测试,一键运行

更便捷的升级和扩缩容

使用了Docker之后,我们部署应用就和搭积木一样,项目打包为一个镜像,扩展服务器A,服务B

更简单的系统运维

在容器化之后,我们的开发,测试环境都是高度一致的

更高效的计算资源利用

Docker 是 内核级别的虚拟化,可以再一个物理机上可以运行很多容器实例!服务器的性能可以被压榨到极致。

二. Docker 安装

1.Docker基本组成

镜像(image):

好比一个模板,可以通过模板来创建容器服务,tomcat镜像->run->tomcat01容器(提供服务器),通过这个镜像可以创建很多个容器,最终服务或者项目运行是在容器中

容器(container):

Docker利用容器技术,独立运行一个或者一组应用,通过镜像来创建的

启动,停止,删除,基本命令

目前可以把这个容器理解为一个简易的Linux系统

创库(repository):

存放镜像的地方,分为共有/私有,Docker Hub(默认是国外的,速度慢)

阿里云......都有容器服务器(配置镜像加速

2. 安装

环境查看

#系统内核是 3.10以上
[root@VM-0-15-centos ~]# uname -r
4.18.0-240.1.1.el8_3.x86_64

#系统版本
[root@VM-0-15-centos ~]# cat /etc/os-release
NAME="CentOS Linux"
VERSION="8"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="8"
PLATFORM_ID="platform:el8"
PRETTY_NAME="CentOS Linux 8"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:8"
HOME_URL="https://centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-8"
CENTOS_MANTISBT_PROJECT_VERSION="8"

安装步骤:

https://docs.docker.com/engine/install/centos/

#卸载旧版本 
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

#需要的安装包
sudo yum install -y yum-utils

#设置镜像仓库
 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软件包索引
yum makecache fast

#安装docker相关的 docker-ce社区版 docker-ee企业版
yum list docker-ce --showduplicates | sort -r

#启动Docker
sudo systemctl start docker

#查看Docker信息,有就安装成功了
docker version


#运行hello-world  没有镜像会自己去拉取然后运行
sudo docker run hello-world

#查看一下下载的镜像都有哪些
docker images


卸载docker

#卸载依赖
sudo yum remove docker-ce docker-ce-cli containerd.io

#卸载资源
 sudo rm -rf /var/lib/docker #docker的默认工作路径
 sudo rm -rf /var/lib/containerd

3.阿里云镜像加速

登录阿里云,找到容器镜像加速服务

配置使用

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://19gis32c.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

run流程

 

Docker底层原理

Docker是怎么工作的?

Docker 是一个Client -Server 结构的系统,Docker 的守护进行运行在主机上。通过 Soket 从客户端访问!
DockerServer 接收到 Docker - Client 的指令,就会执行这个命令!

Docker 为什么比VM快?
​ 1、Docker 有着比虚拟机更少的抽象层。
​ 2、Docker 利用耳朵是宿主机的内核,vm需要是 Guest OS。

总结: 新建一个容器的时候,docker 不需要像虚拟机一样重新加载一个操作系统的内核,虚拟机是加载 Guest OS,分钟级别的, 而Docker 是利用 宿主机的操作系统

 

三、Docker常用命令

1.帮助命令

#docker 的版本信息
sudo docker version

#docker 的详细信息
sudo docker info

#docker 帮助命令
sudo docker  --help

查询地址:https://docs.docker.com/engine/reference/commandline/docker/

2.镜像命令

查看镜像

[root@xianfang local]docker images
REPOSITORY                   TAG       IMAGE ID         CREATED              SIZE
rabbitmq                     latest    f50f482879b3     3 months ago         156MB
redis                        latest    74d107221092     3 months ago         104MB
portainer/portainer-ce       latest    a0a227bf03dd     6 months ago         196MB
hello-world                  latest    bf756fb1ae65     14 months ago        13.3kB

#REPOSITORY	镜像的仓库名字
#TAG	    镜像的标签
#IMAGE ID   镜像的id
#CREATED	镜像的创建时间
#SIZE	    镜像的大小

#可选项
 -a   # 列出所有镜像
 -q   #只显示镜像的id

搜索镜像

[root@xianfang local]# docker search mysql
NAME                              DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql                             MySQL is a widely used, open-source relation…   10557     [OK]       
mariadb                           MariaDB Server is a high performing open sou…   3942      [OK]       
mysql/mysql-server                Optimized MySQL Server Docker images. Create…   774                  [OK]

# 可选项,通过搜索
[root@xianfang local]# docker search mysql --filter=STARS=5000
NAME      DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql     MySQL is a widely used, open-source relation…   10557     [OK]  

下载镜像

#下载镜像,默认下载最新版 latest
[root@xianfang local]# docker pull mysql
Using default tag: latest  # 如果不写 tag,默认就是 latest
latest: Pulling from library/mysql
a076a628af6f: Pull complete   #分层下载,docker images 的核心 联合文件
f6c208f3f991: Pull complete 
88a94
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值