容器技术技术入门与 Docker 环境部署
目录
一:Docker概述
1、 Docker的优势:
(1)环境一致性
(2)隔离性
(3)资源高效
(4)便捷性和可扩展性
2、Docker容器与传统虚拟机的区别
3、Docker的应用场景
4、Docker核心
(1)镜像(Image)
(2)容器(Container)
(3)仓库(Repository)
二:Docker安装
1:本安装方式使用阿里的软件仓库
(1)关闭系统防火墙
(2)下载Docker的repo文件
(3)替换仓库地址
(4)更新索引文件并安装Docker
(5)添加国内镜像站
(6)开启Docker服务
(7)优化内核参数
三:Docker镜像操作
1、Docker 镜像操作列表
2、Docker镜像操作案例
(1)获取镜像
(2)查看镜像
(3)查看镜像的详细信息
(4)修改镜像标签
(5)删除镜像
1.用镜像名删除
2.用ID 删除
(6)存出镜像和载入镜像
1.导出
2.删除
3.导入
四、Docker容器操作
1、Docker 容器操作列表
2、Docker 容器操作案例
(1)容器的创建与启动
1.创建容器
2.查看所有的容器
3.容器的运行
4.利用容器执行命令(命令执行完毕后容器会退出)
5.在启动容器时持续在后台运行
(2)容器的终止
(3)进入容器
(4)容器导出
(5)容器导入生成镜像
(6)容器删除
一:Docker概述
Docker是一个开源的应用容器引擎,它允许开发者将应用及其依赖打包成一个轻量级、可移植的容器,然后这个容器可以在任何支持Docker的机器上运行,无论是物理机、虚拟机、云平台还是数据中心。
1、 Docker的优势:
(1)环境一致性
Docker容器在任何支持Docker的环境中运行时表现一致,解决了“在我的机器上运行正常,但在其他机器上就不行”的问题。
(2)隔离性
容器之间相互隔离,一个容器的故障或异常不会影响到其他容器的运行,提高了应用的稳定性和安全性。
(3)资源高效
与传统虚拟机相比,Docker容器不需要额外的操作系统,因此资源消耗更少,启动更快。
(4)便捷性和可扩展性
容器的启动速度非常快,通常只需要几秒钟,可快速创建和销毁容器,方便进行应用的快速部署和弹性扩展。
2、Docker容器与传统虚拟机的区别
特性 | Docker容器 | 虚拟机 |
启动速度 | 秒级 | 分钟级 |
计算能力损耗 | 几乎无 | 损耗50%左右 |
性能 | 接近原生 | 弱于 |
系统支持量 | 上千个 | 几十个 |
隔离性 | 资源限制 | 完全隔离 |
3、Docker的应用场景
(1)开发环境管理
(2)持续集成和持续部署(CI/CD)
(3)微服务架构
(4)云计算
4、Docker核心
(1)镜像(Image)
类似于虚拟机的快照,但是所占资源远远小于快照,可以理解为一个面向Docker容器引擎的只读模板。可以用户自己创建和更新现有的镜像,也可以从网上下载已创建好的镜像。
(2)容器(Container)
Docker的容器时从镜像创建的运行实例,可以被启动、停止、删除。所创建的每一个容器都是相互隔离、互不可见、以保证安全性的平台。
(3)仓库(Repository)
Docker仓库是用来集中保存镜像的地方,创建自己的镜像后,可以使用push命令将它上传到公有仓库(Public)或者私有仓库(Private)。其他机器使用时可以从仓库获取。
二:Docker安装
CentOS 系统安装Docker有两种放式:
(1)使用 CURL 获得 Docker 的安装脚本
(2)使用 YUM 仓库安装。
注意:目前Docker只能支持64位系统
1:本安装方式使用阿里的软件仓库
(1)关闭系统防火墙
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's/=enforcing/=disabled/' /etc/selinux/config
(2)下载Docker的repo文件
curl -o /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
(3)替换仓库地址
sed -i 's/$releasever/8/g' /etc/yum.repos.d/docker-ce.repo
sed -i 's/$basearch/x86_64/g' /etc/yum.repos.d/docker-ce.repo
(4)更新索引文件并安装Docker
dnf clean all
dnf makecache
dnf -y install docker-ce
(5)添加国内镜像站
vim /etc/docker/daemon.json
{
"exec-opts": ["netive.cgroupdriver=systemd"],"registry-mirrors": ["https://docker.m.daocloud.io","https://docker.imgdb.de","https://docker-0.unsee.tech","https://docker.hlmirror.com"]
}
(工信部网络政策调整,docker.io、gcr.io等国际镜像站不能访问)
(6)开启Docker服务
systemctl daemon-reload
systemctl restart docker
systemctl enable docker
docker version
(7)优化内核参数
vim /etc/sysctl.conf
net.ipv4.ip_forward=1 #12
net.bridge.bridge-nf-call-iptables=1
net.bridge.brifge-nf-call-ip6tables=1sysctl -p
三:Docker镜像操作
1、Docker 镜像操作列表
命令 | 语法 | 参数/选项 | 说明 | 示例 |
拉取镜像 | docker pull [OPTIONS] NAME[:TAG|@DIGEST] | -a:拉取所有标签的镜像 --disable-content-trust:禁用镜像签名验证 | 从镜像仓库拉取镜像到本地 | docker pull nginx:1.24.0 |
列出镜像 | docker images [OPTIONS] [REPOSITORY[:TAG]] | -a:显示所有镜像(包括中间层) -q:仅显示镜像ID --digests:显示摘要信息 | 列出本地所有镜像的仓库名、标签、ID、创建时间及大小 | docker images -a |
查看镜像详情 | docker inspect [OPTIONS] IMAGE | -f:自定义输出格式 --size(仅容器) | 查看镜像的底层详细信息(JSON格式) | docker inspect c15 |
修改镜像标签 | docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG] | 为镜像添加新标签(不创建新镜像) | docker tag nginx:1.24.0 nginx:v1 | |
删除镜像 | docker rmi [OPTIONS] IMAGE [IMAGE...] | -f:强制删除 --no-prune:保留父镜像层 | 删除本地镜像 | docker rmi nginx:v1 docker rmi c15 |
导出镜像 | docker save -o FILE IMAGE[:TAG] | 将镜像保存为tar文件 | docker save -o nginx.tar nginx:1.24.0 | |
导入镜像 | docker load < FILE | 从tar文件加载镜像 | docker load < nginx.tar |
2、Docker镜像操作案例
运行 Docker 容器前需要本地存在对应的镜像。如果不存在本地镜像,Docker 就会尝试从默认镜像仓库下载。镜像仓库是由 Docker 官方维护的一个公共仓库,可以满足用户的绝大部分需求。用户也可以通过配置来使用自定义的镜像仓库。
(1)获取镜像
docker pull nginx:1.24.0
(2)查看镜像
docker images
(3)查看镜像的详细信息
docker inspect 6c0218
(4)修改镜像标签
docker tag nginx:1.24.0 nginx:v1
docker images
(5)删除镜像
删除镜像有两种方式
1.用镜像名删除
docker rmi nginx:v1
2.用ID 删除
docker rmi 6c0218
(6)存出镜像和载入镜像
1.导出
docker save -o nginx nginx:1.24.0
ls
2.删除
docker rmi nginx:1.24.0
3.导入
docker load<nginx
docker images
四、Docker容器操作
1、Docker 容器操作列表
命令 | 语法 | 参数/选项 | 说明 | 示例 |
创建容器 | docker create [OPTIONS] IMAGE [COMMAND] [ARG...] | -it:交互式终端 -p:端口映射 --name:容器命名 | 创建容器但不启动 | docker create -it --name my_centos centos:7 |
启动容器 | docker start [OPTIONS] CONTAINER | -a:附加到容器输出 -i:保持输入交互 | 启动已创建的容器 | docker start my_centos |
创建并运行容器 | docker run [OPTIONS] IMAGE [COMMAND] [ARG...] | -d:后台运行 -it:交互式终端 -p:端口映射 -v:挂载数据卷 | 直接创建并启动容器 | docker run -d -p 8080:80 nginx docker run -it centos:7 /bin/bash |
列出容器 | docker ps [OPTIONS] | -a:显示所有容器 -q:仅显示ID -s:显示容器大小 | 查看容器状态和基本信息 | docker ps -a |
停止容器 | docker stop [OPTIONS] CONTAINER | -t:设置等待时间(默认10秒) | 优雅停止容器 | docker stop -t 20 my_nginx |
进入容器 | docker exec [OPTIONS] CONTAINER COMMAND [ARG...] | -it:交互式终端 -u:指定用户 | 在运行中的容器内执行命令 | docker exec -it my_centos /bin/bash |
导出容器 | docker export CONTAINER > FILE | 将容器文件系统导出为tar文件 | docker export my_centos > centos.tar | |
导入容器为镜像 | docker import FILE [REPOSITORY[:TAG]] | 从tar文件生成镜像 | docker import centos.tar centos:test | |
删除容器 | docker rm [OPTIONS] CONTAINER | -f:强制删除运行中的容器 -v:同时删除数据卷 | 删除已停止的容器 | docker rm -f my_centos |
2、Docker 容器操作案例
容器是 Docker 的另一个核心概念。简单说,容器是镜像的一个运行实例,是独立运行的一个或一组应用以及它们所必需的运行环境,包括文件系统、系统类库、she11 环境等。镜像是只读模板,而容器会给这个只读模板添加一个额外的可写层。
(1)容器的创建与启动
1.创建容器
docker create -it centos:7
2.查看所有的容器
docker ps -a
3.容器的运行
docker start 5a
docker ps
4.利用容器执行命令(命令执行完毕后容器会退出)
docker run -d centos:7 /usr/bin/bash -c "ls /root"
5.在启动容器时持续在后台运行
docker run -d centos:7 /usr/bin/bash -c "while true;do echo nihao;done"
或
docker run -dit centos:7 /bin/bash
(2)容器的终止
docker stop b18
(3)进入容器
[root@localhost ~]# docker exec -it 1ca2 /bin/bash
[root@1ca2a9e95262 /]# ls
anaconda-post.log dev home lib64 mnt proc run srv tmp var
bin etc lib media opt root sbin sys usr
[root@1ca2a9e95262 /]# exit
exit
[root@localhost ~]#
(4)容器导出
docker export 1ca2 >centos77
(5)容器导入生成镜像
docker import centos77 centos77:aaa
docker images
(6)容器删除
docker rm 1ca2