拉取镜像

docker pull REPOSITORY:tag。tag为版本号,默认为latest表示最新版。

运行容器

docker run REPOSITIRY。不指定参数下运行在attach mode下,terminal被阻塞。 [-d,–detach] 容器在terminal的后台运行,此时会打印容器id [-p,–publish] -p 80:8080,在主机和dokcer容器中创建桥接网络 [–name] 只指定容器name

docker stop containerId,停止一个容器。停止的容器可以使用相同的id再次启动。

docker start containerId 重启容器,重启的容器拥有docker run时所有的属性

Docker命令

docker ps

查看所有运行的容器 [-a] 显示所有容器,包括运行和停止的

docker log [id|name]

查看容器日志

docker exec [OPTIONS] CONTAINER COMMAND [ARG…]

在运行的容器中运行一个命令 docker exec -it 5af5c338dc81 /bin/bash 进入容器命令行。exit可以退出 [-it] 以交互式命令运行(interactive terminal)

Docker network

docker network ls

docker network create [name] 创建一个网络,让容器之间可以仅通过容器名称来通讯.在需要ip和端口的地方可直接用servicename替代

docker run
-p 27017:27017
-d
-e MONGO_INITDB_ROOT_USERNAME=admin
-e MONGO_INITDB_ROOT_PASSWORD=admin123
–name mongodb
–net mongo-network
mongo

docker run -d -p 8081:8081
-e ME_CONFIG_MONGODB_AUTH_USERNAME=admin
-e ME_CONFIG_MONGODB_AUTH_PASSWORD=admin123
–net mongo-network
–name mongo-express
-e ME_CONFIG_MONGO_SERVER=mongodb
-e ME_CONFIG_MONGODB_URL=”mongodb://mongodb:27017” mongo-express

Docker Compose

运行多容器应用的工具。配置文件中不用配置网络,Docker会自己处理

version: "3.9"  # optional since v1.27.0
services:
  mongodb: # name of the container
    image: mongo # image
    ports: # -p
      - 27017:27017 # HOST:CONTAINER
    environment:
      - MONGO_INITDB_ROOT_USERNAME: admin
      - MONGO_INITDB_ROOT_PASSWORD: admin123
  mongo-express:
    image: mongo-express
    ports:
      - 8081:8081
    environment:
      - ME_CONFIG_MONGODB_ADMINUSERNAME: admin
      - ME_CONFIG_MONGODB_ADMINPASSWORD: admin123
      - ME_CONFIG_MONGODB_SERVER: mongodb

docker-compose -f FILE COMMAND [-f] [COMMAND] up运行,down移除容器和network

Dockerfile

构建docker镜像的文件

FROM

所有dockerfile的第一个语句,基于其他镜像

ENV PROPERTY=VALUE

设置环境变量

RUN

执行Linux命令

COPY

将本机文件复制到镜像中

CMD

一个dockerfile只能有一个CMD命令,可以表示程序的entry point

镜像构建

在Dockerfile所在文件打开terminal

docker build -t my-app:1.0 . [t] tag

Dokcer Repository

登录

docker login –username={username} {url}

重命名镜像

docker tag [ImageId] domain:host/url/my-app:[镜像版本号]

推送镜像

docker push fullImageName

Volumes

将物理路径挂载到docker镜像

Run挂载

docker run -v [host-directory]:[container-directory] [image] [-v] 将物理路径挂载到镜像中 这种方式称为Host Volume

Anonymous Volumes

docker run -v [container-directory] [image] 由docker自动挂载到host目录中,自动创建名为/var/lib/docker/volumes/random-hash/_data

Name Volumes

docker run -v [name]:[container-directory] [image] 生产环境中最常用的

Volumes路径

/var/lib/docker/volumes