Docker基本管理

本文详细介绍了Docker的基础知识,包括其作为轻量级容器技术的优势,如快速交付、资源效率和应用隔离。讨论了Docker的核心概念,如镜像、容器和仓库,并提供了Docker的安装步骤。此外,还深入解析了镜像的加载原理,以及Docker的基本命令,涵盖镜像管理、容器操作、数据卷、容器互联等方面,最后讲解了如何搭建和使用私有仓库。
摘要由CSDN通过智能技术生成


Docker概述

一、Docker是什么?

1、容器:一种轻量级的“虚拟机”
·在Linux容器里运行应用的开源工具
·每个容器共享宿主机内核 创建一个容器是秒级启动
·传统虚拟机:每台虚拟机拥有一个独立的内核 创建一个是分钟级别

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

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

二、Docker优势

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

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

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

Docker的核心概念及安装方式

一、Docker核心概念

Docker images——镜像 环境的压缩包
一个面向Docker容器引擎的只读模板

Docker registeries——容器 实例
从镜像创建的运行实例

Docker containers——仓库
集中保存镜像的地方

仓库里存的是镜像,镜像运行起来的是容器。容器可以被创建、启动、停止、删除、暂停等。

二、安装

安装Docker

systemctl stop firewalld.service
systemctl disable firewalld.serice
setenforce 0

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

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

设置docker的镜像源

yum-config-manager --add-repo \
https://download.docker.com/linux/centos/docker-ce.repo

安装Docker并设置为开机自动启动

yum install docker-ce

systemctl start docker
systemctl enable docker

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

配置阿里云镜像加速

登录阿里云官方网站

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

网络优化
vim /etc/sysctl.conf

net.ipv4.ip_forward=1

sysctl -p

systemctl restart network

systemctl restart docker

Docker镜像

一、镜像是什么

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

·从远程仓库下载
·自己制作镜像 DockerFile

二、加载原理

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版本查看Docker服务

docker version

在这里插入图片描述

搜索镜像

docker search关键字

在这里插入图片描述

获取镜像

docker pull 仓库名称[:标签]
查看镜像
docker images仓库名称[:标签]
docker inspect 镜像ID号
改标签
docker tag nginx:latest cw/nginx:web//用户名/仓库名:镜像名
查询镜像详细信息
docker inspect 镜像名称
删除镜像

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

删除全部镜像
docker rmi   $(docker images -qa)

有镜像tag的时候,删除要用名称删除,用id删除不了
docker rmi 镜像名称
将本地的镜像导出

docker save -o 导出的路径 镜像id
docker save -o /opt/aaa   cb6904dc71e1
加载本地镜像文件

方法一:docker load < 文件名
方法二:docker --input 文件名
docker的默认工作路径
/var/lib/docker

容器操作

容器创建

docker create -it nginx:latest /bin/bash
查看容器

docker ps [-qa]

选项:
-a:列出当前正在运行的容器+带出历史运行过的容器
-q:只查看容器的编号
-n=?:显示最近创建的容器
启动容器
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 run -v 宿主机目录:容器内部目录 --name 数据卷名 -it 镜像名 /bin/bash 

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、付费专栏及课程。

余额充值