记录 Docker 常用的内容。
Docker 几个常用工具
Write by GPT-4o:
工具 |
说明 |
Docker |
用于创建和管理容器的基础工具,允许开发者将应用程序及其依赖打包成轻量级的容器,实现环境一致性和快速部署。 |
Docker Compose |
用于定义和运行多容器Docker应用的工具,通过一个YAML文件配置应用的服务、网络和卷,简化了多容器应用的管理。 |
Docker Desktop |
提供了在Windows和macOS上运行Docker容器的本地开发环境,包括Docker引擎、Docker CLI、Kubernetes和Docker Compose。 |
Docker Hub |
Docker的公共镜像仓库,用户可以在此存储、分发和管理Docker镜像,也可以从社区共享的镜像中拉取需要的镜像。 |
常用命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
docker ps
docker images
docker rmi <image_id>
docker-compose up
docker-compose up --build
|
Dockerfile 模板
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
FROM node:20-alpine
WORKDIR /data/app
COPY . .
RUN yarn RUN yarn build
EXPOSE 3000
CMD ["yarn", "start"]
|
docker-compose.yml 模板
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| services: app: container_name: my_container_name image: my_image_name:${IMAGE_TAG:-latest} network_mode: bridge build: context: . dockerfile: Dockerfile ports: - "4000:3000" environment: - PORT=3000 - NODE_ENV=production
|
场景:Mac 上构建 Docker 支持构建多平台镜像
在 Mac 上构建多平台镜像的时候会因缺少模拟器而报错,这时候需要安装 tonistiigi/binfmt 来支持多平台镜像构建。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
docker run --privileged --rm tonistiigi/binfmt --install all
docker run --privileged --rm tonistiigi/binfmt --install arm64,amd64
docker buildx create --use --name my_builder --driver docker-container
docker buildx inspect --bootstrap
docker buildx build --platform linux/amd64 -t my_image_name:amd64 --load .
docker buildx build --platform linux/arm64 -t my_image_name:arm64 .
docker buildx build --platform linux/amd64,linux/arm64 -t my_image_name:latest --push .
docker-compose up -d
|
场景:Mac 可运行 Docker 多平台镜像
1 2 3 4 5
| softwareupdate --install-rosetta
|
场景:手动部署镜像,Docker 镜像导出和导入
当不借助 Docker Hub 时,可以通过导出和导入镜像的方式来,把镜像打成压缩包,通过文件方式上传到服务器上。
1 2 3 4 5 6
| docker save -o ./my_image_name.tar my_image_name:latest
docker load -i ./my_image_name.tar
|
场景:在 CentOS 上安装 Docker
在 CentOS 上安装 Docker 时通常会遇到 container-selinux 依赖问题,这时候手动下载 container-selinux 安装解决。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
curl -o /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum list docker-ce --showduplicates | sort -r
wget https://mirror.stream.centos.org/9-stream/AppStream/x86_64/os/Packages/container-selinux-2.232.1-1.el9.noarch.rpm
rpm -ivh container-selinux-2.232.1-1.el9.noarch.rpm
yum install docker-ce
systemctl start docker
systemctl enable docker
docker run hello-world
docker ps
|
...