Docker
镜像发布到阿里云
- 登录阿里云Docker Registry
docker login --username=wjn_0918 registry.cn-hangzhou.aliyuncs.com - 从Registry中拉取镜像
docker pull registry.cn-hangzhou.aliyuncs.com/wjn0918/soft:[镜像版本号] - 将镜像推送到Registry
docker login --username=wjn_0918 registry.cn-hangzhou.aliyuncs.comdocker tag eb175b0743cc registry.cn-hangzhou.aliyuncs.com/wjn0918/soft:mysql-5.7.39docker push registry.cn-hangzhou.aliyuncs.com/wjn0918/soft:[镜像版本号]
强制拉取镜像
docker pull --platform=linux/arm64 arm64v8/postgres:13
Install
# step 1: 安装必要的一些系统工具
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
# step 2: 信任 Docker 的 GPG 公钥
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# Step 3: 写入软件源信息
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Step 4: 安装Docker
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Docker Compose
同一个 docker-compose.yml 里的所有服务自动在 同一个网络(默认网络)里
- 查看某个网络里有哪些容器
docker inspect network prometheus_default
指定配置
docker-compose -f <配置文件路径> up -d
tag multiple services
tag-and-push.ps1
# Set your target registry
$targetRegistry = "myregistry.azurecr.io"
# Get all images from docker-compose
$images = docker compose config --images
# Tag and push each image
foreach ($image in $images) {
$newTag = "$targetRegistry/$image"
Write-Host "Tagging: $image -> $newTag"
docker tag $image $newTag
Write-Host "Pushing: $newTag"
docker push $newTag
}
run one service
docker compose up -d <service_name>
build
docker build -f Dockerfile.prod -t myapp:latest .
build 案例
buid 规则
Dockerfile 里:只有「最后一个 FROM 开始的那个 stage」会成为最终镜像。
规则 1️⃣:每个 FROM 都是一个「新世界」 规则 2️⃣:只有「最后一个 FROM」决定最终镜像 规则 3️⃣:只有你“亲手 COPY 过来”的才会进来
FROM node:22 AS web-builder
WORKDIR /web/frpc
COPY web/frpc/ ./
RUN npm install
RUN npm run build
FROM golang:1.24 AS building
COPY . /building
COPY --from=web-builder /web/frpc/dist /building/web/frpc/dist
WORKDIR /building
RUN env CGO_ENABLED=0 go build -trimpath -ldflags "-s -w" -tags frpc -o bin/frpc ./cmd/frpc
FROM alpine:3
RUN apk add --no-cache tzdata
COPY --from=building /building/bin/frpc /usr/bin/frpc
ENTRYPOINT ["/usr/bin/frpc"]
进入容器
docker run -it --rm \
--entrypoint /bin/bash \
school-etl
执行sql
docker exec -i mysql sh -c 'exec mysql -uroot -pMysql@2024 ' <<C
select 1
C
docker exec -i mysql8 sh -c 'exec mysql -uroot -pMysql@2023 ' <<C
use report_conf; show tables;
C
执行shell
docker exec 容器名 sh -c 'echo "2026-04-08" > /etc/nginx/license.valid'
docker exec 容器名 sh -c 'rm -rf /etc/nginx/license.valid'
打标签
docker tag eb175b0743cc registry.cn-hangzhou.aliyuncs.com/wjn0918/soft:mysql-5.7.39
常见问题
自建仓库
- 打标签
docker tag 63e8ae20eaef 192.168.3.12:5005/mysql:8.4.8
docker push 192.168.3.12:5005/mysql:8.4.8
- Error response from daemon: Get "https://192.168.3.12:5005/v2/": http: server gave HTTP response to HTTPS client
编辑 Docker 配置文件
vi /etc/docker/daemon.json
如果文件不存在就新建,内容如下:
{
"insecure-registries": ["192.168.3.12:5005"]
}
systemctl daemon-reexec
systemctl restart docker
