Docker基本管理

Docker基本管理

一、Docker是什么

(一)、Docker介绍

容器:轻量级虚拟机

每个容器共享宿主机内核 创建一个容器是秒级启动
传统虚拟机:每台虚拟机拥有一个独立的内核 创建一个是分钟级别

容器跟VM的主要区别

容器提供了基于进程的隔离,而虚拟机提供了资源的完全隔离,虚拟机可能需要一分钟来启动,而容器只需要一秒钟甚至更短。容器使用宿主操作系统的内核,而虚拟机使用独立的内核,Docker的局限之一, 它只能运行在64的操作系统上

安全:虚拟机安全级别高,容器安全级别弱

(二)、Docker优势

1、交付物标准化

Docker是软件工程领域的"标准化"交付组件﹐最恰到好处的类比是"集装箱"。
集装箱将零散、不易搬运的大量物品封装成一个整体﹐集装箱更重要的意义在于它提供了一种通用的封装货物的
标准,卡车、火车、货轮、桥吊等运输或搬运工具采用此标准﹐隧道、桥梁等也采用此标准。以集装箱为中心的
标准化设计大大提高了物流体系的运行效率。
传统的软件交付物包括∶应用程序、依赖软件安装包、配置说明文档、安装文档、上线文档等非标准化组件。
Docker的标准化交付物称为"镜像",它包含了应用程序及其所依赖的运行环境﹐大大简化了应用交付的模式。

2、一次构建,多次交付

类似于集装箱的"一次装箱﹐多次运输" ,Docker镜像可以做到"一次构建﹐多次交付"。当涉及到应用程序多副本
部署或者应用程序迁移时,更能体现Docker的价值。

3、应用隔离

集装箱可以有效做到货物之间的隔离﹐使化学物品和食品可以堆砌在一起运输。Docker可以隔离不同应用程序
之间的相互影响﹐但是比虚拟机开销更小。
总之﹐容器技术部署速度快﹐开发、测试更敏捷﹔提高系统利用率﹐降低资源成本

二、Docker的核心概念与安装

(一)、Docker三大核心组件

Docker镜像 Docker images

一个面向Docker容器引擎的只读模板

Docker仓库 Docker registeries

集中保存镜像的地方

Docker容器 Docker containers

从镜像创建的运行实例

三者的关系:

镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
简单理解:仓库里存的是镜像,镜像运行起来的是容器

(二)、安装Docker

1、安装步骤

1、安装docker的依赖环境

yum -y install yum-utils device-mapper-persistent-data lvm2

2、设置docker的镜像源

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

3、安装docker

yum makecache fast
yum -y install docker-ce docker-ce-cli containerd.io 

4、启动并设置为开启自启动

systemctl start docker 			#启动docker
systemctl enable docker			#设置开机自启动

5、测试

docker run hello-world

6、docker的中央仓库
1)docker官方的中央仓库,这个仓库镜像最全,但是下载速度较慢
http://docs.docker.com
2)国内的镜像网站
https://c.163yun.com/hub#/home
http://hub.daocloud.io (推荐使用)

2、配置阿里云镜像加速

1、登录阿里云官方网站

在这里插入图片描述

2、搜索容器镜像服务

在这里插入图片描述

3、找到镜像加速器

在这里插入图片描述

4、配置镜像加速

在这里插入图片描述

3、网络优化

vim /etc/sysctl.conf

net.ipv4.ip_forward=1

sysctl -p

systemctl restart network

systemctl restart docker

三、Docker镜像

(一)、镜像是什么

镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码、运行时、库、环境变量和配置文件。
所有的应用,直接打包docker镜像,就可以直接跑起来!

如何得到镜像︰

  • 从远程仓库下载
  • 朋友拷贝给你
  • 自己制作一个镜像 DockerFile

(二)、Docker镜像加载原理

UnionFS ( 联合文件系统)

UnionFS ( 联合文件系统): Union文件系统(UnionFS )是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtualfilesystem)。Union文件系统是Docker镜像的基础。镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。

特性:一次同时加载多个文件系统,但从外面看起来,只能看到一个文件系统,联合加载会把各层文件系统叠加起来,这样最终的文件系统会包含所有底层的文件和目录

Docker镜像加载原理

docker的镜像实际上由一层一层的文件系统组成,这种层级的文件系统UnionFS

**bootfs(boot file system)**主要包含bootloader和kernel, bootloader主要是引导加载kernel, Linux刚启动时会加载bootfs文件系统,在Docker镜像的最底层是bootfs。这一层与我们典型的Linux/Unix系统是一样的,包含boot加载器和内核。当boot加载完成之后整个内核就都在内存中了,此时内存的使用权已由bootfs转交给内核,此时系统也会卸载bootfs。
rootfs (root file system),在bootfs之上。包含的就是典型Linux系统中的/dev, /proc,/bin, letc等标准目录和文件。rootfs就是各种不同的操作系统发行版,比如Ubuntu , Centos等等。

四、Docker基础命令详解

基操

# docker version              #docker版本信息

在这里插入图片描述

# docker search 镜像名称         #搜索镜像

# docker search nginx 

在这里插入图片描述

# docker pull nginx    #现在镜像

在这里插入图片描述

# docker images //查看下戟镜像信息

在这里插入图片描述

# 改标签
docker tag nginx:latest cw/nginx:web//用户名/仓库名:镜像名

在这里插入图片描述

# docker inspect 镜像名称  #查询镜像详细信息

在这里插入图片描述

# docker rmi 镜像的标识(image id) # 通过镜像id删除

# docker rmi   $(docker images -qa)			#删除全部镜像
# docker rmi 镜像名称
# 有镜像tag的时候,删除要用名称删除,用id删除不了

在这里插入图片描述

# 将本地的镜像导出
# docker save -o 导出的路径 镜像id
# docker save -o /opt/aaa   cb6904dc71e1

在这里插入图片描述

# 加载本地镜像文件
# docker load -i 镜像文件   
# cd /opt
# docker load < abc

在这里插入图片描述

# docker的默认工作路径**
# /var/lib/docker
# 容器创建
# docker create -it nginx:latest /bin/bash

在这里插入图片描述

# 查看容器
docker ps [-qa]
选项:
-a:列出当前正在运行的容器+带出历史运行过的容器
-q:只查看容器的编号
-n=?:显示最近创建的容器
docker ps -a   列出当前正在运行的容器+带出历史运行过的容器
# 启动容器
docker start 

在这里插入图片描述

# 进入到容器内部
docker exec -it 容器id bash 		
docker attach 容器id
区别:
docker exec:进入容器后开启一个新的终端,可以在里面操作(常用)
docker attach:进入容器正在执行的终端,不会启动新的进程

在这里插入图片描述

# 删除容器(删除容器前,需要先停止容器)
docker stop 容器id								#停止指定的容器
docker stop $(docker ps -qa)					#停止全部容器

docker rm 容器id								#删除指定的容器
docker rm $(docker ps -qa)						#删除全部容器

批量删除

docker ps -a | awk '{print "docker rm "$1}' | bash   #只删除不运行的容器,保留只运行的容器

在这里插入图片描述

# 退出容器
exit			#直接容器停止并退出
Ctrl+P+Q		#容器不停止退出
# 将容器内文件拷贝文件到主机上
docker cp 容器id:容器内路径(绝对路径) 目的的主机路径
#在主机上操作,不是在容器内操作
# 运行容器后执行命令
docker run  centos:7 /usr/bin/bash -c ls 

在这里插入图片描述

# 持续在后台执行
docker run -d paigeeworld/centos7 /bin/bash -c "while true;do echo hello;done" #死循环
# 容器导出
docker export 6c9aabe7b1e5 > cwnginx

在这里插入图片描述

# 容器导入(会生成镜像,而不会创建容器)
cat cwnginx | docker import - nginx:web

在这里插入图片描述

私有仓库

# 下载registry镜像
docker pull registry
vim /etc/docker/daemon.json

"insecure-registries": ["192.168.195.70:5000"],  #添加
"registry-mirrors": ["https://05vz3np5.mirror.aliyuncs.com"]
systemctl restart docker.service
# docker create -it registry /bin/bash
# docker ps -a
# docker start 6f7497fcc8c2

在这里插入图片描述

# #宿主机的/data/registry自动创建挂载容器中的/tmp/registry
docker run -d -p 5000:5000 -v /data/registry:/tmp/registry registry  
#更改标记为192.168.126.70:5000/nginx
docker tag nginx:latest 192.168.126.70:5000/nginx  

在这里插入图片描述

# 上传
docker push 192.168.126.70:5000/nginx

在这里插入图片描述

# 获取私有仓库列表
curl -XGET http://192.168.126.70:5000/v2/_catalog

在这里插入图片描述

Docker 教据卷

docker pull centos:7
# 宿主机目录/var/www挂载容器中的/data1
docker run -v /var/www:/data1 --name web1 -it centos:7 /bin/bash

在这里插入图片描述

数据卷容器

# 数据卷容器
docker run --name web2 -v /data1 -v /data2 -it centos:7/bin/bash

在这里插入图片描述

# 新容器挂载数据卷容器web2
docker run -it --volumes-from web2 --name web3 centos:7 /bin/bash

在这里插入图片描述

端口映射

docker run -d -P nginx:latest   #-P 随机映射端口

在这里插入图片描述

docker run -d -P 88:80 nginx:latest  # -p指定映射端口

在这里插入图片描述

容器互联(使用centos镜像)

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

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

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值