一,docker安装配置
1.环境和介绍
①Docker是在Linux的内核上启动的,所以我们需要一个Linux环境,这里我们需要准备一台安装Linux系统连接上网络的虚拟机,镜像选择centos7及以上。
②现在docker的已经非常广泛的使用于开发测试,其优势在于docker使用的抽象层更少,利用的是宿主机的内核,而不需要加载操作,占用的内存不多,兼容性更强,不用在开发测试重复的安装环境设置,只需要整个打包即可,通过图1-1我们可以看出docker的基本情况。

图1-1docker原理
2.docker安装配置
2.1卸载任何此类旧版本
首先如果是已经下载过了重新下载,先卸载任何此类旧版本以及关联的依赖项输入
sudo yum remove docker \ #sudo是因为权限问题,如果是root直接不用
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
2.2根据需要以不同的方式安装 Docker 引擎
①可以设置 Docker 的存储库并安装,从官网那里,以便于安装和升级任务,我们选择这种方法安装。
②可以下载 RPM 软件包并手动安装并管理,完全手动升级。这在安装等情况下很有用,在无法访问互联网的气隙系统上的 Docker。
③在测试和开发环境中,您可以使用自动化的便利脚本来安装 Docker。
2.3安装软件包并设置存储库
①安装软件包
yum install -y yum-utils
②设置存储库,更新yum源防止出现找不到包的情况,我们更新成阿里云的存储库,如何更新包索引
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache fast #更新包索引
问题:报错curl#35 - tcpconnection reset by peer和curl#35 - Timeout
解决:更新源的时候注意尽量不要选择外网的源,选择国内的源即可
2.4安装 Docker Engine-Community
输入yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
如果系统提示接受GPG 密钥,请验证指纹是否匹配,如果是,请接受它。
2.5启动Docker
启动docker并且查看情况,因为每次启动都可能存在失败的情况,要随时查看情况,如图2-1所示。
systemctl start docker #启动
ps -ef|grep docker#查看启动情况

图2-1启动docker查看情况
2.6测试
运行一个简单的程序,输入docker run hello-world,然后查看程序的内容docker version,其运行原理如图2-2所示

图2-2run的情况
2.7镜像加速器配置
在实际的环境下,我们需要镜像加速来更快的运行,发布也需要镜像加速器的配置,所以我们需要一个阿里云镜像加速,我们首先注册一个阿里云账户,然后找到容器镜像服务,获取自己的加速器地址,通过修改daemon配置文件/etc/docker/daemon.json来使用加速器,如图2-3所示
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://xhhyxkzw.mirror.aliyuncs.com"]
}
EOF

图2-3阿里云镜像
二,docker常用命令
1.帮助启动类命令如图1-1所示

图1-1帮助启动命令
2.镜像命令
我们经常需要查看镜像的情况,所以我们需要了解基本的命令:
Docekr images #列出本地主机上的镜像
Docker search 镜像名字 #查看是否有镜像在安装下载过程等使用
Dcoker pull 镜像名字 #拉取镜像到docker上
Docker sysytem df 查看镜像/容器/数据卷所占用的空间
Docker rmi 镜像id
3.容器命令
①新建与启动
有镜像才能创建容器,这是根本前提,有些时候启动docker的软件时候,我们希望输入一些命令,来查看情况等等,比如mysql,这个时候就需要启动交互式容器的方式(前台),也有需要后台启动的容器比如redis。
docker run -it 镜像 #启动容器
docker run ubuntu #运行ubuntu容器
docker run -it ubuntu /bin/bash #通过启动交互式启动
docker run -it --name=myu1 ubuntu /bin/bash #通过启动交互式启动赋予名字
dcoker ps #查看当前启动的容器
docker tun -d 镜像
docker run -d redis:6.0.8 #守护式启动redis后台服务器
②容器的退出重启
Exit #run进去,exit退出,容器停止
Ctrl+p+q #run进去,ctrl+p+q退出,容器不停止
docker start容器id #启动已经停止的容器
Dcoker restart 容器id/容器名 #启动已停止运行的容器
Docker kill #强制停止容器
Docker rm 容器id #删除已停止的容器
③容器日志
我们日常需要随时监控容器情况
docket logs 镜像 #查看容器日志
docker top 镜像 #查看容器的进程
docker inspect 容器id #查看容器内部细节
④启动容器并且以命令行交互的方式
docker exec -it 容器id bashshell #以命令行交互进入容器,退出不会关闭容器
docker attach 容器id #以命令行交互进入容器,退出会关闭容器
同理后台服务器的方式如图3-1所示

图3-1后台服务器
⑤从容器拷贝到主机,导入导出
docker cp 容器id:容器内的路径 目的的主机路径 #如图3-2所示

图3-2拷贝
export 导出容器的内容留作为一个tar归档文件
docker export 容器id > 文件名.tar
import 导入从tar包中的内容创建一个新的文件系统
cat 文件名.tar | docker import - 镜像用户/镜像名:镜像版本号
三,镜像分层概念
①因为dcoker是分层的结构,所以我们可以通过相同base镜像构建,添加其他的内容,我们只需要加载一份镜像就可以使用所有容器服务了。镜像层是只读的,容器层是可写的,如图1-1所示。

图1-1所示分层概念
②我们来做一个简单的dcoker镜像commit操作案例
Dcoker commit提交容器副本使之成为一个新的镜像
Docker commit -m=’提交的描述信息’-a=’作者’容器id要创建的目标镜像名:[标签名]
我们先下载ubuntu到本地并成功运行,输入docker run-it ubantu /bin/bash进入交互后,我们发现它没有vim功能,我们来添加此功能,输入App-get update更新我们的包管理工具,然后安装我们需要的vim输入Apt-get install vim这样就完成了添加功能的操作,我们在通过Docker commit -m=’提交的描述信息’-a=’作者’容器id要创建的目标镜像名:[标签名]操作让其成为一个新的包,如图1-2
Docker images

图1-2commit操作
四,本地镜像发布
1.上传到阿里云流程
流程如图1-1所示:

图1-1上传流程
2.公有库与私有库
首先我们基于当前创建一个新的镜像,新功能增强docker commit[optoons]容器id[repository[:TAG]],然后进入网页的阿里云镜像仓库,创建镜像可以选择创建公有库与私有库,如图1-2所示。

图1-2创建仓库
①登录阿里云Docker Registry
$ docker login --username=dingtalk_hykihf registry.cn-guangzhou.aliyuncs.com
用于登录的用户名为阿里云账号全名,密码为开通服务时设置的密码。可以在访问凭证页面修改凭证密码。
② 从Registry中拉取镜像
$ docker pull registry.cn-guangzhou.aliyuncs.com/wys201229/wys201229:[镜像版本号]
③ 将镜像推送到Registry
$ docker login --username=dingtalk_hykihf registry.cn-guangzhou.aliyuncs.com$ docker tag [ImageId] registry.cn-guangzhou.aliyuncs.com/wys201229/wys201229:[镜像版本号]$ docker push registry.cn-guangzhou.aliyuncs.com/wys201229/wys201229:[镜像版本号]
根据实际镜像信息替换示例中的[ImageId]和[镜像版本号]参数。
④选择合适的镜像仓库地址
从ECS推送镜像时,可以选择使用镜像仓库内网地址。推送速度将得到提升并且将不会损耗公网流量,如果使用的机器位于VPC网络,使用 registry-vpc.cn-guangzhou.aliyuncs.com 作为Registry的域名登录。
⑤示例
使用"docker tag"命令重命名镜像,并将它通过专有网络地址推送至Registry。
$ docker imagesREPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZEregistry.aliyuncs.com/acs/agent 0.7-dfb6816 37bb9c63c8b2 7 days ago 37.89 MB$ docker tag 37bb9c63c8b2 registry-vpc.cn-guangzhou.aliyuncs.com/acs/agent:0.7-dfb6816
使用 "docker push" 命令将该镜像推送至远程。
$ docker push registry-vpc.cn-guangzhou.aliyuncs.com/acs/agent:0.7-dfb6816