主要命令:
docker pull NAME[:TAG]
NAME 为镜像名称,后跟:版本号,如果没有跟后面的版本号,默认拉取最新的稳定版本
例子:
上述命令相当于:docker.io/library/ubuntu:latest
docker images
支持子命令如下:
docker tag [已有镜像] [新镜像名]
整体来说,docker tag命令添加的标签实际上起到了类似链接的作用.
docker inspect [镜像名]
可以使用-f来指定主要获取的属性。
docker inspect -f {{“.Architecture”}}
docker history [镜像名]
docker search [名称]
支持的命令:
名称 | 默认 | 作用 |
---|---|---|
–automated | false | 仅显示自动创建的镜像 |
–no-trunc | false | 输出信息不截断 |
-s,–star | 0 | 指定星级以上的镜像 |
docker rmi [镜像名]
如果你正在使用一个容器,该镜像无法删除
此刻你可以使用-f参数来强行删除,但是这并不正确,默认情况您要先停止容器,删除容器,再删除镜像,
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
OPTIONS内容:
首先启动一个容器:
接着执行:
查看到有test标签为0.1的镜像即为成功。
cat [本地模板] | docker import - [自己定义的镜像名]
docker save -o [存出的文件名] [IMAGE[:TAG]]
docker load --input [文件名] 或者 docker load < [文件名]
docker push NAME[:TAG] | [REGISTERY_HOST[:REGISTRY_HOST]/]NAME[:TAG]
首先再Docker Hub先创建一个仓库:
https://hub.docker.com/
然后为你需要提交的镜像打一个标签,注意!!这里标签需要对应你所建立的仓库名
注意如果显示冒号:denied: requested access to the resource is denied
有可能是没有登录,执行:docker login
(没有账号的要记得去Docker Hub中创建噢)
docker create -it ubuntu:latest // 创建,但是并不会运行
docker ps -a // 查看目前存在的容器
create命令与容器运行模式相关的选项:
create命令与容器环境和配置相关的选项:
create命令与容器资源限制和安全保护相关的选项
docker start 06
docker run
等价于,先docker create
再docker start
docker run ubuntu /bin/echo ‘hello world’
重点:所执行的操作:
执行:docker run -it ubuntu /bin/bash
其中,-t表示Docker 分配一个伪终端并绑定到容器的标准输出上,-i则表示容器的标准输入保持打开
运行容器时常见的错误:
docker run -d ubuntu /bin/sh -c “while true;do echo hello world;sleep 1;done” // 会在后台持续运行
docker ps
docker logs [id] // 查看输出信息
在Docker中可以使用docker stop来终止一个运行中的容器。
docker stop [id]
注意docker kill 命令会直接发送 SIGKILL信号来强行终止容器
docker restart // 重新启动
docker attach [–detach-keys[=[]]] [–no-stdin] [–sig-proxy[=true]] 容器名
描述选项
命令 | 描述 |
---|---|
–detach-keys | 退出attach的快捷键,默认是CTRL-p CTRL-q |
–no-stdin | 是否关闭标准输入,默认true |
–sig-proxy | 是否代理收到的系统信号给进程,默认true |
使用attach命令有时候并不方便,多个窗口同事attach连接到同一个容器的时候,所有窗口都会显示同步,所以当阻塞时,便无法使用了
docker exec [OPTIONS] 容器名
这里我们主要说几个重要的OPTIONS
命令 | 描述 |
---|---|
-i,–interative | 打开标准输入接受用户输入命令,默认为false |
–privileged | 是否给执行命令最高权限,默认false |
-t,–tty | 分配伪终端,默认false |
-u,–user=“” | 执行命令的用户名或者ID |
注意:通过指定-it参数来保持标准输入打开,并且分配一个伪终端。通过exec命令对容器执行操作时最为推荐的方式
docker rm [OPTIONS] 容器名|容器ID
这里我们主要说几个重要的OPTIONS
命令 | 描述 |
---|---|
-f,–force | 是否强行终止并且删除一个容器 |
-l,–link | 删除容器的链接,但保留容器 |
-v,–volumes | 删除容器挂在数据卷 |
docker export [-o | --output[=“”]] 容器名 // -o表示导出的tar文件名
docker import [-c|–change[=“”]] [-m|message[=“”]] file|URL-[REPOSITORY[:TAG]] // -c 可以执行DOCKERFILE指令,后面会说
**和load的区别:**load来导入镜像存储文件
到本地镜像库,import导入一个容器快照
到本地镜像库,容器快照文件会丢弃所有的历史记录和元数据信息,而镜像存储文件将保存完整记录,体积因此更大。
仓库是集中存放镜像的地方,分公共仓库和私有仓库
使用步骤:
我们可以通过-s N参数可以指定仅显示评价为N星以上的镜像
自动创建功能对于需要经常升级镜像内的程序来说,十分方便。有时候,用户创建了镜像,安装了某个软件,如果软件发布新版本则需要手动更新镜像。
而自动创建允许用户通过Docker Hub指定跟踪一个目标网站(目前支持GitHub或者BitBucket)上的项目,一旦项目发生新的提交,则自动执行创建。
操作步骤:
可以通过官方提供的:docker run -d -p 5000:5000 register
来搭建
默认仓库创建在容器的/tmp/registry
目录下,可以通过-v
来修改。
容器管理数据的两种主要方式:
容器内数据直接映射到本地主机
使用特定容器维护数据卷
docker run -d -P --name web -v /webapp training/webapp python app.py
-v标记可以创建多个数据卷
。上述代码表示使用training/webapp
镜像创建一个web容器,并创建一个数据卷挂载到容器的/webapp
目录
-P
表示容器服务暴露的端口,自动映射到本地的临时端口。
docker run -d -P --name web -v /src/webapp:/opt/webapp training/webapp python app.py
表示加载主机的/src/webapp目录到容器的/opt/webapp目录
docker run -d -P --name web -v /src/webapp:/opt/webapp:ro training/webapp python app.py
默认的数据卷是读写模式,可以增加:ro
表示为只读
-v 可以从主机挂载单个文件到容器中作为数据卷(**不推荐**)
docker run --rm -it -v ~/.bash_history:/.bash_history ubuntu /bin/bash
docker run -it -v /dbdata --name dbdata ubuntu // 创建一个dabata数据卷容器 并且创建一个数据卷挂载到/dbdata
ls // 查看/dbdata
可以使用-v在其他容器中来挂载dbdata容器中的数据卷
docker run -it -v dbdata --name db1 ubuntu
docker run -it -v dbdata --name db2 ubuntu
这样三个容器在任何一方在该目录下的写入,其他容器都可以看到。
可以多次使用 --volumes-from|-v 参数来从多个容器挂载多个数据卷,还可以从其他已经挂载了容器卷的容器来挂载数据卷。
最后:注意!如果要删除一个数据卷,必须在删除最后一个还挂载着它的容器时显式使用docker rm -v
命令来指定删除关联的容器
本章主要描述了Docker的基本命令,包括镜像:创建、删除、标签等,并且如何从远程仓库拉取下来,容器的运行如何进入容器等。