文章目录
最佳实践
了解了 Docker 之后,可以直接使用这个方法进行镜像的下载,快且方便
下载 Docker DeskTop
去官网下载,要注意版本,这一步国内网络是OK的
配置好镜像代理
{
"builder": {
"features": {
"buildkit": true
},
"gc": {
"defaultKeepStorage": "20GB",
"enabled": true
}
},
"experimental": false,
"registry-mirrors": [
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com"
]
}
- Docker 镜像的适配是按照 芯片架构指令集(arch)而不是操作系统进行,在可视化页面搜索时注意区分
比如,MacOS 的M1、M2 找 arm 架构
Intel 找x86 架构
ARM架构
Apple M1 和 M2:
M1: Apple于2020年发布的首款自研ARM架构芯片,应用于MacBook Air、MacBook Pro、Mac mini和iMac等设备。
M2: Apple于2022年发布的第二代自研ARM架构芯片,相较于M1有性能提升和能效优化,应用于最新的MacBook和iPad Pro等设备。
x86架构
Intel:
Core系列: Intel Core i3, i5, i7, i9等系列处理器,广泛应用于个人电脑和笔记本电脑。
Xeon系列: 针对服务器和工作站的处理器,提供高性能和高可靠性。
Pentium和Celeron系列: 针对入门级市场的处理器,适用于预算有限的用户。
AMD:
Ryzen系列: 包括Ryzen 3, 5, 7, 9等处理器,提供强大的多核性能,广泛应用于个人电脑和笔记本电脑。
EPYC系列: 针对服务器市场的处理器,提供高核心数和高并发性能。
Athlon和A系列: 针对入门级市场的处理器,适用于低功耗和低成本的应用。
RISC-V架构
RISC-V:
开放指令集架构,近年来逐渐受到关注,主要应用于嵌入式系统和物联网设备,目前还在发展中。
其他架构
PowerPC:
IBM开发的RISC架构处理器,曾经广泛应用于Apple的Mac电脑和游戏主机(如任天堂Wii)。
MIPS:
一种RISC架构,主要应用于嵌入式系统和网络设备。
每种架构都有其特定的应用领域和优势,选择哪种架构通常取决于具体的使用需求和性能要求。
镜像加速器
https://yeasy.gitbook.io/docker_practice/install/mirror
使用 docker-compose 下载镜像
Docker DeskTop 页面查询以来网络,配置代理地址还是不行,因此使用下面的方法下载即可,节约下载镜像这个过程
https://yeasy.gitbook.io/docker_practice/compose
将需要的镜像配置复制到单独的文件夹 的 docker-compose.yml 内,控制台进入到该目录执行下面命令,以后可以使用 Docker DeskTop 管理已下载镜像
# docker-compose.yml
docker-compose up -d
指定镜像的架构版本
指定架构类型为 arm64v8
services:
myservice:
# platform: linux/arm64 # 一般无需指定,除非特殊版本不支持
image: arm64v8/mysql:latest
- 常见平台架构示例
x86_64 系统(大多数桌面和服务器):
platform: linux/amd64
ARM64 系统(例如 Apple M1/M2):
platform: linux/arm64
32 位 ARM 系统(例如旧版 Raspberry Pi):
platform: linux/arm/v7
下载镜像之后验证
➜ Mysql git:(main) ✗ docker inspect arm64v8/mysql:latest | grep Architecture
"Architecture": "arm64",
redis
docker-compose.yml 内容
version: "3"
services:
redis:
image: redis:6.2
container_name: redis-server
network_mode: "bridge"
restart: unless-stopped
ports:
- 6379:6379
volumes:
- ./data:/data
command: redis-server --appendonly yes
elasticsearch
docker-compose.yml 内容
增加额外的配置信息discovery.type=single-node
ES_JAVA_POTS=“-Xms256m -Xmx256m”
ingest.geoip.downloader.enabled=false
version: "3"
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.15.1
container_name: elasticsearch
network_mode: "bridge"
restart: unless-stopped
environment:
- discovery.type=single-node
ports:
- 9200:9200
- 9300:9300
volumes:
- ./data:/usr/share/elasticsearch/data
rabbitMQ
docker-compose.yml 内容
version: "3"
services:
rabbitmq:
image: rabbitmq:3.9-management
container_name: rabbitmq-server
network_mode: "bridge"
restart: unless-stopped
ports:
- 5672:5672
- 15672:15672
volumes:
- ./data:/var/lib/rabbitmq
environment:
- RABBITMQ_DEFAULT_USER=admin
- RABBITMQ_DEFAULT_PASS=admin123456
mongodb
docker-compose.yml 内容
version: "3"
services:
mongodb:
image: mongo:4.4
container_name: mongodb-server
network_mode: "bridge"
restart: unless-stopped
ports:
- 27017:27017
volumes:
- ./data:/data/db
# environment:
# MONGO_INITDB_ROOT_USERNAME: admin
# MONGO_INITDB_ROOT_PASSWORD: admin123
先要启动 Docker
service docker start
Docker 镜像在哪里?
类似于 Maven ,我们既可以从一些公共 Docker Registry 获取 Docker 镜像,也可以搭建自己的 Docker Registr,截止到目前我还没有搭建自己的 Docker Registry,所以默认是从 Docker 官方的 Docker Hub ( https://index.docker.io) 来获取,然后保存在我们的本地。
Docker 镜像的查询
Docker 镜像的查询命令很简单,你只需要知道你要安装的软件的名字,然后就可以看到可得的资源列表
Docker 镜像的适配是按照 芯片架构指令集(arch)而不是操作系统进行,在可视化页面搜索时注意区分
比如,MacOS 的M1、M2 找 arm 架构
Intel 找x86 架构
docker search 镜像名字
比如你可以试一下
docker search nginx
, 注意 NAME 属性的值
Docker 镜像的拉取
需要根据 Docker 镜像中的 NAME 属性值,比如上面图片为 nginx
docker pull 镜像名字(NAME 属性的值)
docker pull url/NAME (可以指定 Docker Registry 地址)
提升镜像拉取的速度:从国内仓库拉取与镜像加速
可以配置 https://dockerproxy.com 或者 http://hub-mirror.c.163.com
更多访问 https://dockerproxy.com/docs
比如访问网易云 https://c.163.com/hub#/m/home/ 比如搜索 tomcat
得到docker pull hub.c.163.com/library/tomcat:latest
其他平台可以直接修改指定 注册服务器
https://www.jianshu.com/p/a6777385e36c
{
"registry-mirrors": ["https://dockerproxy.com","http://hub-mirror.c.163.com"]
}
拉取的镜像保存位置
/var/lib/docker/image/overlay/repositories.json 镜像目录
/var/lib/docker/containers 存储具体镜像
查看本地的镜像列表
docker images
删除本地镜像
可能会遇到有对应的容器无法删除的情况,-f 会强制删除
docker rmi 镜像id/REPOSITORY
docker rmi -f 镜像id/REPOSITORY
删除所有的镜像
-f 会强制删除
docker rmi -f $(docker images)
将镜像内容复制到宿主机某目录
这个功能在后面将容器目录挂载的时候会用到,这样在宿主机中操作某文件夹的内容和直接在容器中操作一样,但是有时需要把容器内的文件先拷贝到宿主机中,否则在目录挂载的时候,可能会导致宿主机的空文件夹把容器被挂载目录覆盖掉。
#复制容器内的 default.xml 到宿主机
docker cp 镜像名:/etc/nginx/conf.d/default.conf \
/usr/java/docker/nginxlog/conf.d/default.conf