Docker第一章:Docker理念、安装配置、命令

什么是Docker

Docker是基于Go语言实现的云开源项目,本身是一个容器运行载体或称之为管理引擎。

Docker的主要目标是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的程序及运行环境能够做到"一次镜像,处处运行"

 

Docker与虚拟机

Docker容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统虚拟机则是在硬件层面上实现虚拟化,在其上运行一个完整操作系统

 

Hypervisor:一种运行在基础物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享硬件。也可叫做VMM( virtual machine monitor ),即虚拟机监视器。Hypervisors是一种在虚拟环境中的“元”操作系统。他们可以访问服务器上包括磁盘和内存在内的所有物理设备。

 

虚拟机的缺点:资源占用多、冗余步骤多、启动慢

 

为什么选择Docker

 

Docker的基本组成

镜像

一个只读的模板,镜像可以用来创建Docker容器,一个镜像可以创建多个容器。Docker镜像文件类似于Java的类模板,而Docker容器实例类似于java中new出来的实例对象

 

容器

容器类似于一个虚拟化的运行环境,容器是镜像创建的运行实例。容器为镜像提供了一个标准的和隔离的运行环境,它可以被启动、开始、停止、删除。每个容器都是相互隔离,保证安全的

 

仓库

 集中存放镜像文件的场所,最大的公开仓库是Docker Hub(https://hub.docker.com/)

 

Docker运行基本流程

1:用户使用Docker Client与Docker Daemon建立通信,并发送请求给后者

2:Docker Daemon提供Docker Server的功能使其可以接收Docker Client的请求

3:Docker Engine执行Docker内部的一系列工作,每一项工作都是以一个Job形式存在

4:Job运行过程中,当需要容器镜像时,则从Docker Registry中下载镜像,并通过镜像管理驱动Graph driver将下载镜像以Graph的形式存储

5:当需要为Docker创建网络环境时,通过网络管理驱动Network driver创建并配置Docker容器网络环境

6:当需要限制Docker容器运行资源或执行用户指令等操作时,则通过Exec driver来完成

7:Libcontainer是一项独立的容器管理包,Network driver以及Exec driver都是通过Libcontaine来实现具体对容器进行的操作

 

Docker安装与配置

1:卸载旧版本

sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine

2:yum安装gcc相关

yum -y install gcc

yum -y install gcc-c++

3:执行命令

sudo yum install -y yum-utils

4:设置stable镜像仓库

 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

5:更新yum软件包索引

yum makecache fast(centos8去掉fast)

6:安装Docker CE

yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin

7:启动docker

systemctl start docker

8:测试

docker version

docker run hello-world

9:卸载

systemctl stop docker
yum remove docker-ce docker-ce-cli containerd.io docker-compose-plugin docker-ce-rootless-extras
rm -rf /var/lib/docker
rm -rf /var/lib/containerd

 

阿里云镜像加速器配置

https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

 

Docker命令

帮助启动类命令

 

镜像命令

 

docker images——查看当前镜像列表

REPOSITORY:表示镜像的仓库源

TAG:镜像的标签版本号

IMAGE ID:镜像ID

CREATED:镜像创建时间

SIZE:镜像大小

 

docker search xxx某个镜像名字 ——查找镜像

NAME:镜像名称

DESCRIPTION:镜像说明

STARTS:点赞数量

OFFICIAL:是否是官方的

AUTOMATED:是否是自动构建的

 

docker pull xxx某个镜像名字——拉取镜像

 

docker rmi 某个xxx镜像ID——删除镜像

 

docker虚悬镜像——仓库名、标签都是<none>的镜像

docker image ls -f dangling=true——列出虚悬镜像

docker image prune——删除所有虚悬镜像

 

容器命令

docker run [OPTIONS] IMAGE [COMMAND][ARG...]——新建+启动容器

通常我们会用docker run -it xxx  /bin/bash,/bin/bash的作用是表示载入容器后运行bash ,docker中必须要保持一个进程的运行,要不然整个容器启动后就会马上kill itself

 

docker ps [options]——列出当前所有正在运行的容器

 

退出容器

 

启动已停止容器、重启容器、停止容器、强制停止容器、删除已停止容器

 

进入正在运行的容器

 

docker load

docker load命令用于从一个tar存档文件中加载Docker镜像。以下是该命令的基本用法和参数

 

 

注意事项

使用镜像以后台模式启动一个容器时,最好用docker ps -a确认容器是否成功运行。

因为Docker容器后台运行,必须要有一个前台进程,容器运行的命令需要是那些一直挂起的命令,如Top,tail等

 

容器内文件拷贝到主机

docker cp 容器ID:容器内路径 目的主机路径

 

导入和导出容器

 

posted @ 2023-01-30 12:22  天叔  阅读(96)  评论(0编辑  收藏  举报