# Docker

# 介绍

Yeoman

# 安装

# Linux

sudo apt-get update
sudo apt-get install -y docker.io
1
2

# Windows

# 换源

# 概念

# 镜像

# 容器

# 仓库

# 启动

docker version
sudo service start docker
1
2

# 命令

docker version
docker info
docker ps
# docker run [OPTIONS] IMAGE[:TAG] [COMMAND] [ARG...]
docker run -dP nginx
docker run -d -p 8080:80 --name mynginx nginx
# docker images [OPTIONS] [REPOSITORY[:TAG]]
docker images
# docker pull [OPTIONS] NAME[:TAG]
docker pull nginx
docker build -t jpress:latest .
# docker exec 
docker exec -it nginx bash
docker stop f9
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# Dockerfile

由命令语句组成,支持以 # 开头的注释行,Dockerfile分为四部分

  1. 基础镜像信息
  2. 维护者信息
  3. 镜像操作指令
  4. 容器启动时执行指令

# 指令

  1. FROM:必须是第一个,可使用多个
  2. MAINTAINER:维护者信息
  3. RUN:在镜像中执行的命令(shell/exec),命令较长时可以使用 \ 换行 RUN command 或 RUN ["executable", "param1", "param2"] 前者等同于RUN ["/bin/bash", "-c", "echo hello"]
  4. COPY:复制本地主机的 <src> 到容器中的 <dest> 。当使用本地目录为源目录时,推荐使用 COPY
    # COPY <src> <dest>
    
    1
  5. ADD:将复制指定的 <src> 到容器中的 <dest><src> 可以是Dockerfile所在目录的一个相对路径,也可以是一个URL,或者一个tar文件(自动解压为目录)。
    # ADD <src> <dest>
    
    1
  6. CMD:只执行一条CMD,指定多条后边的会覆盖前边的,如果运行容器时指定了运行的命令会覆盖CMD命令,有三种格式 CMD ["executable","param1","param2"] 使用 exec 执行,推荐方式; CMD command param1 param2 在 /bin/sh 中执行,提供给需要交互的应用; CMD command param1 param2 在 /bin/sh 中执行,提供给需要交互的应用;
  7. ENTRYPOINT:配置容器启动后执行的命令,并且不可被 docker run 提供的参数覆盖。每个 DockerFile 中只能由一个 ENTRYPOINT ,指定多个只有最后一个生效。
    # ENTRYPOINT ["executable", "param1", "param2"]
    # ENTRYPOINT command param1 param2 (shell中执行)
    
    1
    2
  8. ENV:指定一个环境变量,会被后续 RUN 指令使用,并在容器运行时保持。
    # ENV <key> <value>
    
    1
  9. ARG:
  10. VOLUME:创建一个可以从本地主机或其他容器挂载的挂载点,一般用来存放数据库和需要保持的数据等。
    VOLUME ["/data"]
    
    1
  11. EXPOSE:暴露端口,在启动容器时需要通过 -P,Docker 主机会自动分配一个端口转发到指定的端口。
    # EXPOSE <port> [<port>...]
    
    1
  12. WORKDIR:为后续的 RUNCMDENTRYPOINT 指令配置工作目录。
    WORKDIR /path/to/workdir
    
    1
  13. USER:指定运行容器时的用户名或 UID ,后续的 RUN 也会使用指定用户。
    USER daemon
    
    1
  14. HEALTHCHECK:
  15. ONBUILD:配置当所创建的镜像作为其他新创建镜像的基础镜像时,所执行的操作指令。
    # ONBUILD [INSTRUCTION]
    
    1

# Docker Compose

# 参考文档

  1. Docker中文文档
  2. [手把手系列之]Docker 部署 vue 项目
  3. Docker小栈-【docker ps】
  4. docker如何退出就删除容器(示例)
  5. Docker 教程
  6. Docker最全教程——从理论到实战(一)