Docker的安装及基础操作命令(图文详解!)

Docker的安装及基础操作命令(图文详解!)

一、Docker简介

Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,namespace,以及 AUFS 类的 Union FS 等技术,对进程进行封装隔离,属于 操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。最初实现是基于 LXC,从 0.7 版本以后开始去除 LXC,转而使用自行开发的 libcontainer,从 1.11 开始,则进一步演进为使用 runC 和 containerd。

Docker 在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护。使得 Docker 技术比虚拟机技术更为轻便、快捷。

1、传统虚拟机与Docker的对比

  • 下面的图和表格比较了 Docker 和传统虚拟化方式的不同之处。传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。

传统虚拟机与Docker的架构对比
在这里插入图片描述
传统虚拟机与Docker的特性对比

特性 虚拟机 容器
启动时间 快速
容量占用 大(GB级别) 小(MB级别)
系统 逻辑隔离 依赖于内核(共享)
系统支持量 一般几十个 单机支持上千个容器
性能 弱于原生 接近原生
安全

2、Docker是什么

  • 是一种轻量级的“虚拟机”
  • 在Linux容器里的运行应用的开源工具

这里虚拟机打双引号是因为容器中不需要安装系统

3、Docker的使用场景

打包应用程序简化部署
可脱离底层硬件任意迁移(例:服务器从腾讯云迁移到阿里云)
在docker的网站上提到了docker的典型场景:

Automating the packaging and deployment of applications(使应用的打包与部署自动化)

Creation of lightweight, private PAAS environments(创建轻量、私密的PAAS环境)

Automated testing and continuous integration/deployment(实现自动化测试和持续的集成/部署)

Deploying and scaling web apps, databases and backend services(部署与扩展webapp、数据库和后台服务)
由于其基于LXC的轻量级虚拟化的特点,docker相比KVM之类最明显的特点就是启动快,资源占用小。因此对于构建隔离的标准化的运行环境,轻量级的PaaS(如dokku), 构建自动化测试和持续集成环境,以及一切可以横向扩展的应用(尤其是需要快速启停来应对峰谷的web应用)

4、为什么要使用Docker

1)更高效的利用系统资源

2)更快速的启动时间

3)一致的运行环境

4)持续交付和部署

5)更轻松的迁移

6)更轻松的维护和扩展

5、云计算三层结构

SAAS(应用即服务) devops CI/CD 持续交付/持续集成  极速迭代产品(亚马逊11.6秒)
PAAS(平台即服务) 环境(架构) docker kubernets mysql
IAAS(基础设施即服务) 硬件(服务器、网络设备、防火墙等)虚拟化、网络虚拟化——>大二层

6、Docker的核心概念及安装方式

1)Docker的核心概念

  • 镜像
    一个面向Docker容器引擎的只读模板
  • 容器
    从镜像创建的运行实例
  • 仓库
    集中保存镜像的地方

2)CentOS安装Docker的两种方式

  • 使用CURL获得Docker的安装脚本进行安装
  • 使用YUM仓库来安装Docker

二、安装Docker

1、安装最新版本Docker依赖版本环境

iptables -F
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
yum install -y yum-utils device-mapper-persistent-data lvm2 		#在线源安装

#yum-utils提供了yum-config-manager
#Device Mapper 存储驱动程序需要device-mapper-persistent-data和lvm2
#Device Mapper是Linux内核中支持逻辑卷管理的通用设备映射机制,它为实现用于存储资源管理的块设备驱动提供了一个高度模块化的内核架构。

在这里插入图片描述

2、设置docker社区版的阿里云镜像源

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

在这里插入图片描述

建立元数据缓存
更新yum源或者出现配置yum源之后,通常都会使用yum makecache 生成缓存;
这个命令是将软件包信息提前在本地缓存一份,用来提高搜索安装软件的速度。

yum makecache fast

在这里插入图片描述

3、安装docker并设置为开机自启动并检查docker版本

yum -y install docker-ce
cd /etc/docker  #这里因为还没启动docker所以还没生成目录

systemctl start docker
systemctl enable docker
cd /etc/docker
ls

ifconfig

docker version

在这里插入图片描述
在这里插入图片描述

4、配置阿里云的镜像加速器

阿里云官网:https://account.aliyun.com/
登录阿里云–>控制台–>在上面搜索容器镜像服务–>左下角点击“镜像工具”下拉再点击“镜像加速器”
配置好加速器再重新加载服务

tee /etc/docker/daemon.json <<-'EOF'
{
    
    
  "registry-mirrors": ["阿里云镜像加速地址"]
}
EOF

systemctl daemon-reload 
systemctl restart docker

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5、网络优化

vim /etc/sysctl.conf
net.ipv4.ip_forward=1
sysctl -p
service network restart
systemctl restart docker

在这里插入图片描述

三、基础命令

查看docker版本信息

docker version

在这里插入图片描述

1、针对镜像的操作

查找指定镜像

docker search 服务名
例如:
docker search nginx

在这里插入图片描述

下载镜像

docker pull 服务名
例如:
docker pull nginx

在这里插入图片描述

查看镜像信息

docker images
docker inspect 镜像的ID
例如
docker images
docker inspect f6d0b4767a6c

在这里插入图片描述

给镜像打标签

注:打标签后其镜像ID不变

docker tag 仓库名:原镜像名 仓库名:新镜像名
例如:
docker tag nginx:latest nginx:test
docker images
docker images | grep nginx

在这里插入图片描述

删除镜像

docker rmi 镜像的ID
docker rmi 仓库名:镜像名
例如:
docker rmi f6d0b4767a6c
docker images
docker rmi nginx:test
docker images

在这里插入图片描述

镜像存储

docker save -o 存放镜像的位置 仓库名:镜像名
例如:
docker save -o /opt/nginx_latest nginx:latest

在这里插入图片描述

载入镜像

方法一:
docker load < 本地导出的镜像名
方法二:
docker --input 本地导出的镜像名

例如:
docker load < nginx_latest
docker load --input nginx_latest

在这里插入图片描述

上传镜像

docker push [OPTIONS] NAME[:TAG]

例如:按照下面的流程就可以上传到公有云,有兴趣的可以上传
#改标签
docker tag 仓库名:镜像名 用户名/仓库名:镜像名
#登录
docker login
Username:   #用户名
Password:   #密码

#上传
docker push 用户名/仓库名:镜像名

2、针对容器的操作

查看容器运行状态
容器的STATUS状态
up是正在运行的
Exited (0)是正常停止的容器
Exited (非0)异常停止的容器

docker ps       #查看运行中的容器
docker ps -a    #加-a 列出所有的容器,包括未运行的容器

在这里插入图片描述

创建容器

docker create [选项] 镜像运行的程序
-i:让容器的标准输入保持打开
-t:让Docker分配一个伪终端

例;
docker create -it nginx:latest /bin/bash

在这里插入图片描述

容器的启动、停止、重启

docker start 容器ID:启动一个或多个已经被停止的容器
docker stop 容器ID:停止一个运行中的容器
docker restart 容器ID:重启容器
例:
docker start 25827a2ed368
docker ps -a
docker stop 25827a2ed368
docker ps -a
docker restart 25827a2ed368

在这里插入图片描述

容器的运行

docker run [选项] 镜像 [命令] [变量]
-d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用
-c 命令表示后面的参数将会作为字符串读入作为执行的命令
-v: 绑定一个卷
-P: 随机端口映射,容器内部端口随机映射到主机的端口
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口
--name="名称": 为容器指定一个名称
--link name:alias 添加链接到另一个容器,格式“--link容器名:别名”
例如:
docker run nginx
docker run -d nginx
docker run -d nginx /bin/bash -c "ls" #命令表示后面的参数将会作为字符串读入作为执行的命令

注意:开始第一次可以使用run,后面维护尽量使用start/stop/restart
在这里插入图片描述

进入、退出容器

注:容器要是运行状态,才可进入

docker exec [选项] 容器 命令
例:
docker exec -it 22550a179349 /bin/bash
docker exec -it 344fb940bebf /bin/bash
exit//退出容器

在这里插入图片描述

容器的导出、导入

#容器导出
docker export 容器ID > 备份文件名

#容器导入(会生成镜像,而不会创建容器)
cat 备份文件名 | docker import - 仓库名:镜像名

例如:
docker export 22550a179349 > nginx_up
docker export 344fb940bebf > nginx_exited

cat nginx_up | docker import - nginx:web

在这里插入图片描述

删除容器

docker rm 容器ID
例如:
docker rm 4d8dcf51a4ef
//批量删除容器
docker ps -a | awk '{print "docker rm "$1}' | bash

在这里插入图片描述

3、针对私有仓库的操作

创建私有仓库

在这里插入图片描述
修改/etc/docker/daemon.json配置文件
注意:上面的中括号后一定要加个英文符号的逗号,否则会报错

vim /etc/docker/daemon.json
{
    
    
"insecure-registries": ["192.168.2.4:5000"],     这里添加
"registry-mirrors": ["阿里云加速地址"]
}
systemctl restart docker.service
docker create -it registry /bin/bash
docker ps -a

docker start 8480e3f87c8e

在这里插入图片描述

容器的挂载

注意:docker run 会自动创建相关目录,而且会重新创建容器

docker run -d -p 宿主机端口:容器内部端口 -v 宿主机目录:容器内目录 镜像
例:
docker run -d -p 5000:5000 -v /data/registry:/tmp/registry registry

在这里插入图片描述

打标签

docker tag nginx:latest 192.168.2.4:5000/nginx

在这里插入图片描述

上传镜像到私有仓库

docker push 192.168.2.4:5000/nginx

在这里插入图片描述

获取私有仓库列表

curl -XGET http://192.168.2.4:5000/v2/_catalog
//显示上传成功
(""repositories":[""nginx"")

在这里插入图片描述

私有仓库的下载

先移除原有的
docker rmi 192.168.2.4:5000/nginx
再下载测试下
docker pull 192.168.2.4:5000/nginx

在这里插入图片描述

4、数据卷和数据卷容器

数据卷

执行docker run命令会自动创建相关目录

docker run -v /var/www:/data1 --name test -it centos:7 /bin/bash

cd /data1/
touch test01

返回宿主机进行查看
ls /var/www/

在这里插入图片描述

数据卷容器

//数据卷容器
docker run --name sjj -v /data1 -v /data2 -it centos:7 /bin/bash
//新容器挂载数据卷容器juan
docker run -it --volumes-from sjj --name test2 centos:7 /bin/bash

在这里插入图片描述
注:
数据卷与数据卷容器的区别
数据卷是挂载在宿主机上的
数据卷容器是通过–volumes-from实现容器与容器之间的挂载

5、端口映射

随机端口映射

docker run -d -P nginx

在这里插入图片描述
在浏览器访问
192.168.2.4:49153
可直接访问到nginx首页
在这里插入图片描述

指定端口映射

docker run -d -p 40000:80 nginx

在这里插入图片描述
在这里插入图片描述

6、容器互联

//创建并运行容器取名web1,端口号自动映射
docker run -itd -P --name web1 centos /bin/bash

//创建并运行容器取名web2,链接到web1和其通信进web22容器 ping web1
docker run -itd -P --name web2 --link web1:web1 centos /bin/bash

--link name:alias                  --link容器名:别名

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_35456705/article/details/115122226