docker 命令

docker 命令

拉取

docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]

展示镜像

docker images -a

1
docker images --format 'table {{.ID}} \t {{.Repository}}'

删除本地镜像

docker rmi [OPTIONS] IMAGE [IMAGE…]

利用 commit 理解镜像构成

尽量不要用

docker commit [选项] <容器ID或容器名> [<仓库名>[:<标签>]]

构建镜像

配合 Dockefile 文件使用

docker build [OPTIONS] PATH | URL | -

运行一个镜像

docker run [OPTIONS] IMAGE [COMMAND] [ARG…]

demo

nginx

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

ubuntu

docker run -it –rm ubuntu:16.04 bash

容器相关

查看运行的容器

docker ps [OPTIONS]

停止容器

docker stop [OPTIONS] CONTAINER [CONTAINER…]

启动一个已存在的容器

docker start [OPTIONS] CONTAINER [CONTAINER…]

删除一个容器

docker rm [OPTIONS] CONTAINER [CONTAINER…]

进入容器

docker attach [OPTIONS] CONTAINER

docker exec [OPTIONS] CONTAINER COMMAND [ARG…]

一个例子

docker exec -it 6e6b bash

镜像导入导出

demo

docker export 7691a814370e > ubuntu.tar

cat ubuntu.tar | docker import - test/ubuntu:v1.0

私有仓库

1创建私有仓库

这将使用官方的 registry 镜像来启动私有仓库。默认情况下,仓库会被创建在容器的 /var/lib/registry 目录下。你可以通过 -v 参数来将镜像文件存放在本地的指定路径。例如下面的例子将上传的镜像放到本地的 /opt/data/registry 目录

$ docker run -d \
-p 5000:5000 \
-v /opt/data/registry:/var/lib/registry \
registry

创建好私有仓库之后,就可以使用 docker tag 来标记一个镜像,然后推送它到仓库。例如私有仓库地址为 127.0.0.1:5000。
使用 docker tag 将 ubuntu:latest 这个镜像标记为 127.0.0.1:5000/ubuntu:latest。

格式为

docker tag IMAGE[:TAG] [REGISTRY_HOST[:REGISTRY_PORT]/]REPOSITORY[:TAG]

demo

2使用 docker tag 来标记一个镜像,然后推送它到仓库:

docker tag ubuntu:latest 127.0.0.1:5000/ubuntu:latest

3使用 docker push 上传标记的镜像:

docker push 127.0.0.1:5000/ubuntu:latest

用 curl 查看仓库中的镜像

curl 127.0.0.1:5000/v2/_catalog

4拉取镜像:

docker pull 127.0.0.1:5000/ubuntu:latest

进阶

数据卷

数据卷 是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用的特性:

数据卷 可以在容器之间共享和重用

对 数据卷 的修改会立马生效

对 数据卷 的更新,不会影响镜像

数据卷 默认会一直存在,即使容器被删除

注意:数据卷 的使用,类似于 Linux 下对目录或文件进行 mount,镜像中的被指定为挂载点的目录中的文件会隐藏掉,能显示看的是挂载的 数据卷。

Docker 新用户应该选择 –mount 参数,经验丰富的 Docker 使用者对 -v 或者 –volume 已经很熟悉了,但是推荐使用 –mount 参数。

使用网络

Compose