16、阿里云镜像仓库ACR和Harbor
1、阿里云镜像仓库
1、进入阿里云控制台
https://cr.console.aliyun.com/cn-hangzhou/instances
2、新建命名空间

3、新建镜像仓库

4、登录阿里云Docker Registry
- laosu_blog 命名空间
- laosu_springboot 仓库名称
bash
sudo docker login --username=aliyun2373804424 crpi-of3t8d16lbfndd3c.cn-shenzhen.personal.cr.aliyuncs.com
### 密码:
L*******bash
# 有个 warning
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded处理警告
警告内容解析
1.密码存储问题:
- 你通过 docker login 命令登录时,Docker 会将你的用户名和密码 明文存储 在 /root/.docker/config.json 文件中。
- 这是一个安全风险,因为任何能访问该文件的人都可以看到你的密码。
2.建议解决方案:
- Docker 推荐使用 凭证助手(Credential Helper) 来加密存储密码,而不是明文存储。
3.Login Succeeded :
- 尽管有警告,但登录已经成功,你可以正常使用 Docker 推送或拉取镜像。
如何解决这个警告? 方法 1:使用 Docker 凭证助手(推荐)
- 1.安装凭证助手:
- 例如,使用 pass (Linux)或 osxkeychain (macOS):
bashsudo apt-get install pass # Linux brew install docker-credential-helper # macOS - 2.配置 Docker:
- 修改 Docker 配置文件 ~/.docker/config.json ,添加凭证助手:json
{ "credsStore": "pass" } - 或者直接运行:bash
docker config --global credsStore pass
- 修改 Docker 配置文件 ~/.docker/config.json ,添加凭证助手:
- 3.重新登录:
- 再次运行 docker login 命令,,密码会被加密存储。
5、将镜像推送到Registry
bash
docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/xx_blog/xx-springboot:[镜像版本号]
docker push registry.cn-hangzhou.aliyuncs.com/xx_blog/xx-springboot:[镜像版本号]
# mine
docker tag b8fe4873ffb7 crpi-of3t8d16lbfndd3c.cn-shenzhen.personal.cr.aliyuncs.com/laosu_blog/laosu-springboot:v1bash
[root@xx-blog ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
xx-spring-boot-web v1 2155d2ca31fa 12 minutes ago 192MB
xx-springboot v1 82132e652235 56 minutes ago 546MB
[root@xx-blog ~]# docker tag 82132e652235 registry.cn-hangzhou.aliyuncs.com/xx_blog/xx-springboot:v1
[root@xx-blog ~]# docker push registry.cn-hangzhou.aliyuncs.com/xx_blog/xx-springboot:v1
6、拉取镜像
bash
docker pull registry.cn-hangzhou.aliyuncs.com/xx_blog/xx-springboot:[镜像版本号]
# mine
docker pull crpi-of3t8d16lbfndd3c.cn-shenzhen.personal.cr.aliyuncs.com/laosu_blog/laosu-springboot:v12、安装与卸载Docker Compose
bash
sudo curl -L "https://github.com/docker/compose/releases/download/v2.12.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 可以进这里看版本
https://github.com/docker/compose/releases/
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version
# 如果是使用的 curl 方式来安装的
sudo rm /usr/local/bin/docker-composebash
# 如果上述安装不了,可以手动下载
https://github.com/docker/compose/releases/download/v2.12.2/docker-compose-Linux-x86_64
# 1.使用阿里云镜像
sudo curl -L "https://mirrors.aliyun.com/docker-toolbox/linux/compose/latest/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 将已下载的Docker Compose二进制文件复制到/usr/local/bin目录中。您可以使用sudo命令来拷贝,确保文件有执行权限
sudo cp docker-compose-linux-x86_64 /usr/local/bin/docker-compose
# 为docker-compose文件添加执行权限
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --versionbash
[root@iZwz90axp17yqnoevndbydZ bin]# cd /usr/local/bin/
[root@iZwz90axp17yqnoevndbydZ bin]# ls
1panel cloud-id cloud-init-per jsondiff jsonpointer normalizer
1pctl cloud-init docker-compose-linux-x86_64 jsonpatch jsonschema
[root@iZwz90axp17yqnoevndbydZ bin]# mv docker-compose-linux-x86_64 docker-compose
[root@iZwz90axp17yqnoevndbydZ bin]# ls
1panel 1pctl cloud-id cloud-init cloud-init-per docker-compose jsondiff jsonpatch jsonpointer jsonschema normalizer
[root@iZwz90axp17yqnoevndbydZ bin]# sudo chmod +x /usr/local/bin/docker-compose
[root@iZwz90axp17yqnoevndbydZ bin]# docker-compose --version
Docker Compose version v2.39.3
[root@iZwz90axp17yqnoevndbydZ bin]#3.使用dockerCompose
1. 创建 docker-compose.yml 文件
Docker Compose 通过一个 YAML 文件(通常命名为 docker-compose.yml )来定义和管理多个容器服务。以下是一个简单的示例:
yaml
version: '3.8' # 指定 Docker Compose 版本
services:
web: # 服务名称
image: nginx:latest # 使用的镜像
ports:
- "80:80" # 端口映射(主机端口:容器端口)
volumes:
- ./html:/usr/share/nginx/html # 挂载本地目录到容器
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: password # 设置环境变量2. 常用命令
启动服务
bash
docker-compose up -d # -d 表示后台运行- 首次运行会自动拉取镜像并启动容器。
- 如果修改了 docker-compose.yml ,重新运行此命令会更新服务。
查看运行状态
bash
docker-compose ps # 查看当前服务的状态
docker-compose logs # 查看日志
docker-compose logs -f # 实时查看日志(类似 tail -f)停止服务
bash
docker-compose stop # 停止正在运行的服务
docker-compose down # 停止并删除容器重启服务
bash
docker-compose restart # 重启所有服务
docker-compose restart web # 仅重启 web 服务进入容器
bash
docker-compose exec web bash # 进入 web 服务的容器构建自定义镜像 如果你的服务需要自定义镜像(例如基于 Dockerfile ),可以在 docker-compose.yml 中指定:
yaml
services:
web:
build: ./myapp # 指定 Dockerfile 所在目录
ports:
- "5000:5000"然后运行:
bash
docker-compose build # 构建镜像
docker-compose up -d # 启动服务3. 实际案例
案例 1:部署 WordPress
yaml
version: '3.8'
services:
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: wordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
volumes:
- db_data:/var/lib/mysql
wordpress:
image: wordpress:latest
ports:
- "8000:80"
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
volumes:
- ./wp-content:/var/www/html/wp-content
volumes:
db_data: # 定义数据卷运行:
bash
docker-compose up -d访问 http://localhost:8000 即可看到 WordPress 安装页面。
案例 2:部署 Flask + Redis
yaml
version: '3.8'
services:
web:
build: . # 使用当前目录的 Dockerfile
ports:
- "5000:5000"
environment:
REDIS_HOST: redis
redis:
image: redis:alpine运行:
bash
docker-compose up -d4. 高级功能
环境变量文件 将敏感信息(如密码)放在 .env 文件中:
bash
# .env 文件
MYSQL_ROOT_PASSWORD=secret在 docker-compose.yml 中引用:
yaml
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}多文件配置 可以使用多个 YAML 文件(如 docker-compose.prod.yml )来区分不同环境:
bash
docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d5. 常见问题
Q:如何更新服务? 修改 docker-compose.yml 后运行:
bash
docker-compose up -d --build # 重新构建并启动Q:如何查看服务依赖关系?
bash
docker-compose config # 查看最终生成的配置Q:如何清理数据?
bash
docker-compose down -v # 删除容器和卷