Docker 简单使用

·

1 min read

Docker Desktop的简单使用,最简单的是用图形化界面统一操控

Containers 容器,Images 镜像,Volumes 卷(分区)

启动容器:

docker run -d -p 80:80 docker/getting-started

  • -d - run the container in detached mode (in the background)
  • -p 80:80 - map port 80 of the host to port 80 in the container

  • docker/getting-started - the image to use

Build镜像:

docker build -t getting-started .

  • getting-started 镜像名

  • -t 给镜像起的名字

  • . 指示Dockerfile所在的位置,. 即当前文件夹

Volume:

docker volume create todo-db 创建一个名为todo-db,volume的目的是模拟一个公共的磁盘

docker run -dp 3000:3000 -v todo-db:/etc/todos getting-started

  • -v 表示这个容器使用volume

  • todo-db 是volume的名字

  • /etc/todos 是volume 挂载(mount)的位置

Network:

docker network create todo-app 创建一个名为todo-app的网络

docker run -d --network todo-app --network-alias mysql --platform linux/amd64 -v todo-mysql-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=secret -e MYSQL_DATABASE=todos mysql:5.7

  • 在todo-app的网络空间中创建容器,并指定一个别名 mysql (DNS 查看时会用到)

Docker-compose

由于同一项目使用多个容器并且配置环境变量非常麻烦,使用docker-compose可以将所有配置收敛到一处。

在项目的根目录下增加一个文件docker-compose.yml,内容如下:

version: "3.8"services:
  app:
    image: node:12-alpine
    command: sh -c "yarn install && yarn run dev"
    ports:
      - 3000:3000
    working_dir: /app
    volumes:
      - ./:/app
    environment:
      MYSQL_HOST: mysql
      MYSQL_USER: root
      MYSQL_PASSWORD: secret
      MYSQL_DB: todos

  mysql:
    image: mysql:5.7
    volumes:
      - todo-mysql-data:/var/lib/mysql
    environment: 
      MYSQL_ROOT_PASSWORD: secret
      MYSQL_DATABASE: todosvolumes:
  todo-mysql-data:

docker-compose up -d 使用这个命令启动容器,-d代表着容器后台运行。

docker-compose down --volumes 停止容器,--volumes代表着回收卷。

常用命令:

docker ps 看运行中的容器

docker stop <the-container-id>

docker rm <the-container-id>

docker exec <container-id> cat /data.txt 执行该容器中的cat命令