Docker 的一些基本命令

获取镜像

docker  pull    ubuntu:16.04 

列出镜像

docker  image   ls 

镜像/容器 体积

docker system df 

虚悬镜像

# 查看:
docker image ls -f dangling=true
# 删除所有:
docker image prune

中间层镜像

查看:

docker image ls -a

列出 部分镜像

docker image ls ubuntu 

以特定格式显示

# 显示id:
docker image ls -q 

# 显示id和Repository:
docker image ls --format "{{.ID}}:{{.Repository}}" 

# 以表格等距显示
docker image ls --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}" 

删除本地镜像

docker image rm [选项] <镜像1> [<镜像2> ...]

创建一个web服务器

docker run --name webserver -d -p 80:80 nginx

进入容器:

docker exec -it webserver bash 

查看容器改动:

docker diff webserver 

容器

从image新建并启动一个新的容器

docker run -it ubuntu:14.04 /bin/bash

启动一个已经终止的容器

docker container start 

后台运行容器 -d

docker run -d ubuntu:17.10 /bin/sh -c "while true; do echo hello world; sleep 1; done" 

查看容器内容信息

docker container ls

查看终止状态的容器

docker container ls -a

获取容器的输出信息(后台运行的容器)

docker container logs [container ID or NAMES]

终止容器

docker container stop [container ID]

重新启动容器

docker container start [container ID]

进入容器

(针对后台运行的容器)
* docker exec (推荐)
* docker attach

docker exec -it [container ID] bash
docker attach [container ID]

导出/导入 容器

# 导出容器快照到本地文件
docker export [container ID] > ubuntu.tar
# 从本地快照导入容器
cat ubuntu.tar | docker import - test/ubuntu:v1.0
# 通过 url 导入
docker import http://example.com/exampleimage.tgz example/imagerepo

docker load 和 docker import 的区别

  • docker load :导入镜像存储文件到本地镜像库,会保存完整记录。
  • docker import :导入一个容器快照到本地镜像库,丢弃所有的历 史记录和元数据信息(即仅保存容器当时的快照状态)

删除容器

# 删除一个处于终止状态的容器
docker container rm [container ID]
# 删除运行状态的容器 使用参数 -f
docker container rm -f [container ID]
# 删除所有处于终止状态的容器
docker container prune

好像可以直接使用docker rm [container ID]

dicker 数据管理

在容器中管理数据的两种方式
* 数据卷(Volumes)
* 挂载主机目录(Bind mounts)

数据卷

数据卷的特性:
* 数据卷可以在容器之间共享和重用
* 对 数据卷 的修改会立马生效
* 对 数据卷 的更新,不会影响镜像
* 数据卷 默认会一直存在,即使容器被删除

数据卷基本命令

# 创建数据卷
docker volume create my-vol
# 查看所有数据卷
docker volume ls
# 查看制定数据卷的信息
docker volume inspect my-vol

启动一个挂载数据卷的容器

docker run -d -P \
--name web \
# -v my-vol:/wepapp \
--mount source=my-vol,target=/webapp\
training/webapp \
python app.py

查看容器的数据卷信息

# 以 web 容器为例
docker inspect web
# 返回一个字典,数据卷的信息显示在“Mounts”Key 下

删除数据卷

docker volume rm my-vol

删除所有未使用的数据卷

docker volume prune

挂载主机目录

与挂载数据卷不同的是在创建容器时source为一个本地地址
举个栗子:

docker run -d -P \
--name web \
# -v /src/webapp:/opt/webapp:ro \
--mount type=bind,source=/src/webapp,target=/opt/webapp,readonly \
training/webapp \
python app.py

一个Dockerfile 示例:

FROM debian:jessie
RUN buildDeps='gcc  libc6-dev   make'   \
    &&  apt-get update  \
    &&  apt-get install -y  $buildDeps \
    &&  wget    -O  redis.tar.gz    "http://download.redis.io/releases/redis-3.2.5.tar.gz"  \
    &&  mkdir   -p  /usr/src/redis  \
    &&  tar -xzf    redis.tar.gz    -C  /usr/src/redis  --strip-components=1    \
    &&  make    -C  /usr/src/redis  \
    &&  make    -C  /usr/src/redis  install \
    &&  rm  -rf /var/lib/apt/lists/*    \
    &&  rm  redis.tar.gz    \
    &&  rm  -r  /usr/src/redis  \
    &&  apt-get purge   -y  --auto-remove   $buildDeps

构建镜像:

在 Dockerfile 文件所在目录执行:
docker build -t nginx:v3 . (后边是有一个点的)

猜你喜欢

转载自blog.csdn.net/wdschn/article/details/80927676