docker学习

168 阅读2分钟

镜像

查看镜像

docker images
REPOSITORYTAGIMAGE IDCREATEDSIZE
镜像名称标签(版本)镜像id创建时间镜像大小

拉取镜像

#docker pull <镜像名称:标签>(不写标签默认latest)
docker pull nginx:1.2

删除镜像

docker rmi <容器名称>

设置镜像标签

#docker tag <目标镜像:标签> <新镜像名称:标签>
docker tag nginx:1.2 my-nginx:v1

构建镜像(根据容器)

docker commit -m="has update" -a="runoob" e218edb10161 runoob/ubuntu:v2
  • -m: 提交的描述信息
  • -a: 指定镜像作者
  • e218edb10161: 容器 ID
  • runoob/ubuntu:v2: 指定要创建的目标镜像名(新的容器名称)
  • 构建镜像(根据dockerfile)

容器

查看容器

```
docker ps -a
docker ps -a -f ancestor=hello-world #根据镜像名称过滤
```

-   **-a**:查询所有容器
-   **-f**:过滤

创建容器

```
docker run -it ubuntu /bin/bash
docker run -itd --name ubuntu-test ubuntu /bin/bash
docker run -d -P training/webapp python app.py
docker run -d -p 5000:5000 training/webapp python app.py
docker run -it -v /home:/home node:alpine
docker run -d --name nodeapp -p 3000:3000 -v /home/docker/nodeApp:/home/node -w /home/node node npm run start #启动一个node应用
```

-   **-i**: 交互式操作。
-   **-t**:终端
-   **-d**:不进入容器后台运行
-   **--name**: 容器的名称
-   **-P** ——将容器内部使用的网络端口随机映射到我们使用的主机上
-   **-p** —— 指定端口
-   **-v /home:/home**:表示挂载主机的/home目录到容器的/home目录
-   **-w:** 将该目录设置成工作目录,能直接执行npm命令
-   **--rm**:容器终止运行后,自动删除容器文件
-   **ubuntu**: ubuntu 镜像。
-   **/bin/bash**:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。

进入容器

-   exec

    **退出时候不会导致容器停止**

    ```
    docker exec -it <容器 ID> /bin/bash
    docker exec -it 243c32535da7 /bin/bash
    ```

-   attach

    **退出容器时会导致容器停止**

    ```
    docker attach <容器 ID>
    docker attach 1e560fca3906 
    ```

启动容器

```
docker start <容器 ID>
```

暂停容器

```
docker stop <容器 ID>
```

重启容器

```
docker restart <容器 ID>
```

删除容器

```
#删除单个容器
docker rm -f <容器 ID>
​
#删除多个容器,-f后面可接多个容器id但必须空格隔开
docker rm -f <容器 ID> <容器 ID> <容器 ID> ..
```

导出容器

(待)

导入容器

(待)

查看容器日志

(待)

查看容器映射的端口

(待)

DockerFile

Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。

compose

(待)