---
# System prepended metadata

title: Docker 基础课程

---

# Docker 基础课程
## 名词解释
### image
### container
### network

## 指令
### pull
- 从 repository 拉取 image
- 指令格式
    ```
    docker pull ${imageName}[:${imageVersion}]
    ```
    
    - imageVersion 若无指定，就会下载最新版 (latest)




- 范例：拉取 nginx 的 image
    ```
    docker pull nginx
    ```

### run：
- 依据指定的 image 运行 container
- 指令格式
    ```
    docker run [options...] --name ${containerName} ${nginxName}
    ```
    - 常用的 options
        - -d：后台运行容器
        - -i：以交互模式运行，通常与 -t 一起使用
        - -t：为容器分配一个伪终端，通常与 -i 一起使用
        - -p：宿主与容器的 port 对应
            ```
            docker run -p ${宿主 port}:${容器 port}
            ```
        - -v：宿主与容器的资料夹 (volume) 对应
    - 指定名称 (--name)
        为容器指定名称，方便日后的辨识与操作
- 范例：运行一个 nginx 的 container，指定宿主的 81 port 对应容器的 80 port
    ```
    docker run -itd -p 81:80 --name port-lab nginx
    ```

- 范例：运行一个 nginx 的 container，指定宿主的 /opt/nginx 对应容器的 /opt
    ```
    docker run -itd -v /opt/nginx:/opt --name port-lab nginx
    ```
### network
- 建立 docker 网路
    - 指令格式
        ```
        docker network create -d ${driver} ${网卡名称}
        ```

    - 範例
        ```
        docker network create -d bridge net-a
        ```
        
- 查看有哪些网路
    ```
    docker network ls
    ```
    
- 范例：运行两 nginx 的 container，绑定在新建立的 network 
    ```
    # 建立 network
    docker network create -d bridge net-a
    
    # 运行 container 并指定 network
    docker run -d --name ap-1 --network net-a nginx
    docker run -d --name ap-2 --network net-a nginx
    ```