# 1. Docker介绍 ## 1.1 什么是容器? 容器是一种轻量级、可移植、自包含的软件打包技术,使应用程序可以在几乎任何地方以相同的方式运行。开发人员在自己笔记本上创建并测试好的容器,无需任何修改就能够在生产系统的虚拟机、物理服务器或公有云主机上运行。Docker是容器的一种,还有其他容器,比如 CoreOS 的 rkt。 ## 1.2 容器的前世今生 FreeBASE jail ------> Linux vserver chroot ----> 提供了完整的根文件系统(FHS)标准的 namespaces ----> 提供了UTS、 Mount、 IPC、 PID、 user、 network隔离 cgroup ----> 负责 资源的分配和监控 以前只是开发了以上三种功能,调用的时候,还是需要自己写代码。 通过比较复杂的代码开发的过程,调用以上三项技术 实现容器的创建 ----> 管理 ----> 销毁 ## 1.3 传统虚拟化技术和容器对比 ## 1.4 容器的今生? 实现隔离能力! LXC (LinuxContainer) 对于原有的常用功能进行了封装,方便我们做容器的生命周期 在移植到其他地方,还需要将原来的步骤,再运行一遍,仅仅是简化了容器的一个管理过程。 ----> Docker (dotcloud) 用go语言开发的,非常接近C语言的一种轻量级开发语言。 在LXC的基础上,加了一种镜像的技术。 # 2. Docker的安装 ## 2.0 yum源准备 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo yum makecache fast ## 2.1 安装依赖包 yum install -y yum-utils device-mapper-persistent-data lvm2 yum list docker-ce.x86_64 --showduplicates |sort -r ## 2.2 安装docker-ce yum -y install docker-ce ## 2.3 启动Docker服务 systemctl daemon-reload systemctl restart docker systemctl enable docker docker version docker info 2.4、配置镜像加速器(2020-07-13) 针对Docker客户端版本大于 1.10.0 的用户 您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器 mkdir -p /etc/docker 登录你的阿里云,开启,容器镜像服务(设置一个密码),,选择,镜像加速器,再选择Centos![]()
vim /etc/docker/daemon.json { "registry-mirrors": ["https://n8i4h3lp.mirror.aliyuncs.com"] } 或者: mkdir -p /etc/docker cat > /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://uoggbpok.mirror.aliyuncs.com"] } EOF systemctl daemon-reload systemctl restart docker # 3. Docker体系结构
Registry:提供了3种功能: 1、用户验证,有一些镜像需要用户名和密码。 2、镜像索引,快速的查找。 3、镜像存储 # 4. Docker的镜像基础管理 ## 4.1 获取镜像 基础镜像拉取 docker search centos docker pull centos:6.9 docker pull centos:7.5.1804 docker pull nginx ## 4.2 镜像基本查看 [root@docker ~]# docker image ls ----- docker images
标识镜像唯一性的方法 1. REPOSITORY:TAG centos:7.5.1804 2.IMAGE ID (SHA256:64位的号码,默认只截取12位) 82f3b5f3c58 ## 4.3 镜像详细信息查看 docker images --no-trunc 或者 docker image ls –no-trunc
docker image inspect ubuntu:latest #镜像名 docker image inspect 82f3b5f3c58f ##这里的镜像ID可以不用输完,只需要能独立标识出来即可。 ## 4.4 只查看镜像ID docker image ls 等同于 docker images [root@docker /]# docker image ls -q 等同于 docker images -q ## 4.5 镜像的导入和导出 [root@docker ~]# docker image save 2622e6cca7eb(镜像ID) >/tmp/nginx.tar
[root@docker ~]# docker image rm 3556258649b2 ##删除镜像
docker image rm -f 镜像ID ##强制删除 docker image load -i /tmp/nginx.tar ##导入镜像
修改镜像名称(标签) docker image tag 2622 nginx:latest
## 4.6 镜像的删除( -f 强制删除) docker image rm -f 3556258649b2 docker image rm -f `docker image ls -q` ##删除多个镜像