作者:@郑琰 本文转载请注明出处!:https://www.cnblogs.com/zhengyan6/p/16011582.html
docker笔记
一:docker基本组成
(1)镜像(image)
Docker 镜像(Image)就是一个只读的模板。镜像可以用来创建 Docker 容器,一个镜像可以创建很多容器。 就好似 Java 中的 类和对象,类就是镜像,容器就是对象!
(2)容器(container)
Docker 利用容器(Container)独立运行的一个或一组应用。容器是用镜像创建的运行实例。
它可以被启动、开始、停止、删除。每个容器都是相互隔离的,保证安全的平台。
可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。
容器的定义和镜像几乎一模一样,也是一堆层的统一视角,唯一区别在于容器的最上面那一层是可读可写的。
(3)仓库(repository)
仓库(Repository)是集中存放镜像文件的场所。
仓库(Repository)和仓库注册服务器(Registry)是有区别的。仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。
仓库分为公开仓库(Public)和私有仓库(Private)两种形式。
最大的公开仓库是 Docker Hub(https://hub.docker.com/ ),存放了数量庞大的镜像供用户下载。
国内的公开仓库包括阿里云 、网易云 等
小结:
需要正确的理解仓储/镜像/容器这几个概念 :
Docker 本身是一个容器运行载体或称之为管理引擎。我们把应用程序和配置依赖打包好形成一个可交付的运行环境,这个打包好的运行环境就似乎 image镜像文件。只有通过这个镜像文件才能生成 Docker 容器。image 文件可以看作是容器的模板。Docker 根据 image 文件生成容器的实例。同一个 image 文件,可以生成多个同时运行的容器实例。
image 文件生成的容器实例,本身也是一个文件,称为镜像文件。
一个容器运行一种服务,当我们需要的时候,就可以通过docker客户端创建一个对应的运行实例, 也就是我们的容器
至于仓库,就是放了一堆镜像的地方,我们可以把镜像发布到仓库中,需要的时候从仓库中拉下来 就可以了。
二:docker安装
(1)环境准备
1,创建虚拟机,可安装secureCRT或Xshell
2,下载centos7.6镜像:https://mirrors.aliyun.com/centos-vault/7.6.1810/isos/x86_64/CentOS-7-x86_64-DVD-1810.iso
3,设置网络为nat模式
4,配置网络使其能ping通百度,并关闭防火墙和selinux
5,配置好yum源并更新yum源
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo
sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
清理yum
yum clean all
yum makecache
(2)安装docker必要的包
环境查看
系统内核是3.10以上的
[root@localhost ~]# uname -r
3.10.0-957.21.3.el7.x86_64
安装
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add -repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装docker CE
#先清理旧的docker
yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
#安装最新版本
yum install docker-ce docker-ce-cli containerd.io
#查看当前版本
[root@docker ~ ]# docker --version
Docker version 20.10 .12 , build e91ed57
#安装docker插件 -> docker-compose
[root@docker ~ ]# yum -y install docker-compose-plugin
[root@docker ~ ]# docker compose version
Docker Compose version v2.20 .3
(3)当需要安装指定版本的docker(示例)
[root@docker ~ ]# yum install -y docker-ce-19.03.2-3.el7 docker-ce-cli-19.03.2-3.el7 containerd.io
[root@docker ~ ]# docker --version
Docker version 19.03 .2 , build 6 a30dfc
三:启动并测试
[root@docker ~]
[root@docker ~]
[root@docker ~]
四:其他配置
(1)配置开机自启或禁启
systemctl enable docker
systemctl disable docker
(2)配置用户管理docker
#创建docker组,centos安装docker后会默认的有docker组
[root@docker docker ]# sudo groupadd docker
groupadd: group 'docker' already exists
#无用户需创建用户,已有用户不需此步骤
[root@docker docker ]# useradd z
#向组中添加用户
[root@docker docker ]# sudo usermod -aG docker z
(3)docker开启远程访问
[root@docker docker]
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H unix:///var/run/docker.sock -H tcp://0.0
.0.0:2323
[root@docker docker]
[root@docker docker]
[root@docker docker]
[root@docker docker]
tcp6 0 0 :::2323 :::* LISTEN 2068/dockerd
[root@docker docker]
五:阿里云官方镜像加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors" : ["https://qiyb9988.mirror.aliyuncs.com" ]
} EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
六:国内镜像加速器
Docker Hub注册中心部署在国外服务器。国内访问会存在问题,Docker 官方提供了中国的加速器,直接使用加速器地址即可使用。
配置方法:
vi /etc/docker/daemon.json
{
"registry-mirrors" :[
"https://i1el1i0w.mirror.aliyuncs.com" ,
"https://hub-mirror.c.163.com" ,
"https://registry.aliyuncs.com" ,
"https://registry.docker-cn.com" ,
"https://docker.mirrors.ustc.edu.cn"
]
}
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors" :[
"https://i1el1i0w.mirror.aliyuncs.com" ,
"https://hub-mirror.c.163.com" ,
"https://registry.aliyuncs.com" ,
"https://registry.docker-cn.com" ,
"https://docker.mirrors.ustc.edu.cn"
]
}
EOF
[root@docker docker]
[root@docker docker]
这个方法只能加速访问流行的公开镜像,私有镜像仍然要去美国服务器中拉取。
另外可以配置相应的国内镜像源来提高镜像的下载速度和稳定性。阿里云除了提供Docker Hub镜像加速器之外,还提供与Docker Hub类似的容器镜像服务,方便用户进行镜像全生命周期管理。
七:卸载docker相关命令
yum remove docker-ce docker-ce-cli containerd.io
rm -rf /var/lib/docker
Docker国内镜像源全部失效的问题
docker拉取镜像报错:Error response from daemon: Get "https://registry-1.docker.io/v2/ ": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
解法:
DOCKER_CONFIG_FILE="/etc/docker/daemon.json"
cp $DOCKER_CONFIG_FILE $DOCKER_CONFIG_FILE .bak
cat <<EOL > $DOCKER_CONFIG_FILE
{
"registry-mirrors" : [
"https://docker.1panel.live" ,
"https://hub.rat.dev" ,
"https://docker.actima.top" ,
"https://atomhub.openatom.cn" ,
"https://docker.m.daocloud.io" ,
"https://docker.nastool.de" ,
"https://dockerpull.org" ,
"https://registry.dockermirror.com" ,
"https://docker.m.daocloud.io" ,
"https://docker.1ms.run" ,
"https://docker.aityp.com" ,
"https://dockerhub.xisoul.cn" ,
"https://docker.imgdb.de" ,
"https://hub.littlediary.cn" ,
"https://docker.unsee.tech" ,
"https://hub.crdz.gq" ,
"https://hub.firefly.store" ,
"https://docker.kejilion.pro" ,
"https://dhub.kubesre.xyz" ,
"https://hub.xdark.top" ,
"https://docker.udayun.com"
]
}
EOL
systemctl daemon-reload
systemctl restart docker.service
echo "Docker registry mirrors have been updated and Docker service has been restarted."
bash docker_mirrors.sh
rm -rf docker_mirrors.sh
第二种:
vi /etc/docker/daemon.json
{
"registry-mirrors" : ["https://docker.1panel.live" ,
"https://hub.rat.dev" ,
"https://docker.actima.top" ,
"https://atomhub.openatom.cn" ,
"https://docker.m.daocloud.io" ,
"https://docker.nastool.de" ,
"https://dockerpull.org" ,
"https://registry.dockermirror.com" ,
"https://docker.m.daocloud.io" ,
"https://docker.1ms.run" ,
"https://docker.aityp.com" ,
"https://dockerhub.xisoul.cn" ,
"https://docker.imgdb.de" ,
"https://hub.littlediary.cn" ,
"https://docker.unsee.tech" ,
"https://hub.crdz.gq" ,
"https://hub.firefly.store" ,
"https://docker.kejilion.pro" ,
"https://dhub.kubesre.xyz" ,
"https://hub.xdark.top" ,
"https://docker.udayun.com"
]
}
systemctl daemon-reload
systemctl restart docker.service
也可访问: 最新国内可用的Docker镜像加速器地址收集汇总
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)