win

1.设置win版本默认wsl为2,docker需要版本2.1.5以后

wsl --set-default-version-2

安装wsl

wsl --update --web--download

一般笔记本默认没有开启虚拟化,可以通过设置bios或者命令,然后重启电脑

bcdedit /set hypervisorlaunchtype Auto

下载gui dockerDesktop

www.docker.com

指定Desktop安装位置

start /w"" "Docker Desktop Installer.exe" install --installation-dir=D:\Docker

最简单的命令

从docker官方仓库拉取

docker pull docker.io/library/nginx.latest

docker.io表示官方仓库,可以省略,其他仓库如minio.io

library 表示命名空间 (作者名字)如果是官方也可以不写

搜索官方仓库内容

hub.docker.com

设置镜像站:通过engine设置

把下面内容追加粘贴

{"registry-mirrors":[
  "https://docker.m.daocloud.io",
  "https://docker.1panel.live",
  "https://hub.rat.dev"]} 

linux

国内无法使用的问题

使用镜像站,脚本(来源于网络)

sudo vi /etc/docker/daemon.json

输入

{"registry-mirrors":[
  "https://docker.m.daocloud.io",
  "https://docker.1panel.live",
  "https://hub.rat.dev"]}

重启docker

sudo service docker restart

容器常见命令

docker run

启动一个新的容器并运行命令

docker run -d ubuntu

docker ps

列出当前正在运行的容器

docker ps

docker ps -a

列出所有容器(包括已停止的容器)

docker ps -a

docker build

使用 Dockerfile 构建镜像

docker build -t my-image .

docker images

列出本地存储的所有镜像

docker images

docker pull

从 Docker 仓库拉取镜像

docker pull ubuntu

docker push

将镜像推送到 Docker 仓库

docker push my-image

docker exec

在运行的容器中执行命令

docker exec -it container_name bash

docker stop

停止一个或多个容器

docker stop container_name

docker start

启动已停止的容器

docker start container_name

docker restart

重启一个容器

docker restart container_name

docker rm

删除一个或多个容器

docker rm container_name

docker rmi

删除一个或多个镜像

docker rmi my-image

docker logs

查看容器的日志

docker logs container_name

docker inspect

获取容器或镜像的详细信息

docker inspect container_name

docker exec -it

进入容器的交互式终端

docker exec -it container_name /bin/bash

docker network ls

列出所有 Docker 网络

docker network ls

docker volume ls

列出所有 Docker 卷

docker volume ls

docker-compose up

启动多容器应用(从 docker-compose.yml

文件)

docker-compose up

docker-compose down

停止并删除由 docker-compose

启动的容器、网络等

docker-compose down

docker info

显示 Docker 系统的详细信息

docker info

docker version

显示 Docker 客户端和守护进程的版本信息

docker version

docker stats

显示容器的实时资源使用情况

docker stats

docker login

登录 Docker 仓库

docker login

docker logout

登出 Docker 仓库

docker logout

镜像命令

列出所有的运行的镜像

 docker images

使用镜像创建容器,名字或者id -d 表示后台启动,不占用控制台 -p端口映射 80:80 前者为宿主机端口

如果本地没有镜像,自动拉取

-v 挂载卷(绑定挂载) ,宿主机目前:容器目录。把宿主的文件映射到容器里面 常用于数据持久化,删除一个容器但是容器数据不被删除

-v(命名卷挂载) 卷的名字:容器目录。第一次使用的使用docker自动帮你把容器的内容同步到宿主机上面

-e 传递环境变量 通过hub网站查询镜像的环境变量

--name 名字

-it 让控制台进入容器进行交互

--rm 容器停止的时候就把容器删掉

--restart unless-stopped 手动停止的容器不会尝试重启,unless替换成always 一直尝试重启

docker run nginx

删除容器 -f 强制删除

dockr rm -f id

查看挂载卷

docker volume inspect 卷名
docker volume rm 卷名
docker volume list
docker volume prune   删除没有任何容器正在使用的卷

提交容器

删除镜像 名字或者id

docker rmi	nginx

查看容器启动时候的参数 一般stop/resart 自动记住参数

docker inspect id

创建容器但不启动,通过start启动

docker create 

在容器里面进行操作(容器本质为一个进程,但是资源互相独立,进入一个容器相当进入一个子操作系统,想子在子操作系统执行命令如下)

docker exec id 命令

调式容器内系统,一般容器系统过于精简,缺少系统级命令

cat /etc/os-release  查看发行系统
apt install vi (Debian安装命令为apt)

docker file

# 1. 指定基础镜像(必须放在第一行)去hub查找比如需要python环境的linux版本
FROM ubuntu:22.04

# 2. 设置作者信息(非必须)
LABEL maintainer="yourname@example.com"

# 3. 执行系统命令(更新软件源、安装依赖)
RUN apt-get update && apt-get install -y python3
RUN PIP INSTALL -R REQUIREMENT.TXT

# 4. 拷贝本地文件到镜像内 或者直接2个.表示把当前电脑工作目录拷贝到镜像目录
COPY ./app.py /app/app.py  

# 5. 设置工作目录(后续命令都在此目录下执行) 指明进行镜像内的工作目录
WORKDIR /app

# 6. 声明容器运行时监听的端口(仅用于文档说明,实际映射需在 run 时指定)
EXPOSE 8080

# 7. 设置容器启动时默认执行的命令
CMD ["python3", "app.py"]
dockr build -t 名字:版本号 	.(.表示当前文件下构建)

推送到hub,需要注册账号等,build 的时候需要带上自己的用户名

docker push 用户名/镜像名

docker 网络

默认桥接

每个容器分配到一个ip地址,容器之间可以通过内部ip访问,但是无法访问宿主网络

创建子网(默认桥接)

docker network create network1

指定容器在不同的子网里(在同一个内网可以通过name访问,而不是ip,内部有一个dns机制)

docker run -d --name my_nginx --network  network1 nginx

host模式,docker容器直接共享宿主机网络,直接使用宿主机的ip,无需端口映射

dockercompose

把每一个模块打包成独立的容器,前端,后端,数据库等等。用一个compose文件自动创建一个子网。

指定容器启动顺序:depends_on:

# Docker Compose 文件版本(目前常用 3.8 或 3.9)
version: '3.8'

# 定义所有要启动的服务容器
services:
  # 服务名称(自定义,比如 web-app)
  web-app:
    # 指定构建镜像的 Dockerfile 路径
    build:
      context: .              # 构建上下文路径(Dockerfile 所在目录)
      dockerfile: Dockerfile  # Dockerfile 文件名(默认就是 Dockerfile)
    # 或者直接使用现成的镜像
    # image: nginx:latest
    
    # 容器名称(可选,不指定则自动生成)
    container_name: my-web-container
    
    # 端口映射:宿主机端口:容器端口
    ports:
      - "8080:8080"           # 可以多个
      - "3000:3000"
    
    # 环境变量
    environment:
      - NODE_ENV=production
      - DATABASE_URL=postgresql://user:pass@db:5432/mydb
    # 或者从 env_file 加载
    # env_file:
    #   - .env
    
    # 挂载卷:持久化数据或同步代码
    volumes:
      - ./data:/app/data      # 宿主机目录:容器目录
      - ./logs:/var/log/app
    
    # 依赖的其他服务(启动顺序)
    depends_on:
      - db
      - redis
    
    # 容器启动后执行的命令(覆盖 Dockerfile 的 CMD)
    # command: ["npm", "run", "start"]
    
    # 网络配置
    networks:
      - app-network
    
    # 重启策略
    restart: unless-stopped

  # 第二个服务:数据库
  db:
    image: postgres:15
    container_name: postgres-db
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: pass
      POSTGRES_DB: mydb
    ports:
      - "5432:5432"
    volumes:
      - postgres_data:/var/lib/postgresql/data
    networks:
      - app-network
    restart: unless-stopped

  # 第三个服务:Redis 缓存
  redis:
    image: redis:7-alpine
    container_name: redis-cache
    ports:
      - "6379:6379"
    networks:
      - app-network
    restart: unless-stopped

# 定义持久化卷(全局)
volumes:
  postgres_data:   # 声明后上面 db 服务才能使用

# 定义网络(全局)
networks:
  app-network:
    driver: bridge

启动目录下的yaml文件(docker-compose.yaml)严格名字

docker compose up
docker compose stop 
docker compose down
docker compose -f 文件命令 up 
Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐