docker学习笔记
docker pull 子命令参数 -a, --all-tags=true|false 默认false
docker images子命令参数
-a, --all=true|false 列出所有的镜像文件,默认为否
--digests=true|false 列出镜像的数字摘要值,默认为否
-f,--filter=[] 过滤出的镜像,如dangling=true只显示没有被使用的镜像,也可以指定带有特定标注的镜像等。
--format="TEMPLATE"控制输出格式,如ID代表ID信息,Repository代表仓库信息等。
--no-trunc=true|false 对输出结果中太长的部分是否进行截断,默认为是
-q,--quiet=true|false 仅输出ID信息,默认为否
其中输出结果控制选项 -f,--filter=[] --no-trunc=true|false,-q,--quiet=true|false
等,大部分子命令都支持。
docker inspect XXXX -f {{".Architecture"}}
查看镜像历史
docker history XXX
docker search命令可以搜索远端仓库中共享的镜像,默认搜索官方仓库中的镜像。支持的参数有
--automated=true|false 仅显示自动创建的镜像,默认为否
--no-trunc=true|false 输出信息不截断显示,默认为否
-s,starts=X 指定仅显示评价为指定星级以上的镜像,默认为0,即输出所有镜像
如 docker search --automated -s 3 nginx
运行中的镜像无法删除,使用docker rmi XXX会提示报错,强制删除,可以使用-f参数,不推荐这样做,正确的做法,先删除依赖该镜像的所有容器,再来删除镜像。
创建镜像:
1、基于已有镜像的容器创建 2、基于本地模板导入 3、基于Dockerfile创建
第一种主要使用docker commit命令
格式docker commit [options] container[repository[:TAG]],主要选项包括
-a,--author="" 作者信息
-c,--change=[] 提交的时候执行Dockerfile指令,包括cmd entrypoint env expose label onbuild user volume workdir等。
-m,--message 提交信息
-p,--pause=true 提交时暂停容器运行
如docker commit -m "增加一个文件" -a "huangbaokang" 9e9c814023bc test:0.1
添加完之后,使用docker images可以查看到
$ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
test 0.1 9e9c814023bc 4 seconds ago 188 MB
第二种,基于本地模板导入,主要使用docker import命令
命令格式docker import [options] file|url|-[repository[:TAG]]
如
cat ubuntu-14.04-x86_64-minimal.tar.gz | docker import - ubuntu:14.04
存出和载入镜像
存出镜像docker save命令
docker save -o ubuntu_14.04.tar ubuntu:14.04
将存出为ubuntu_14.04.tar,我们就可以把该镜像文件分享给他人。
将导出的镜像进行导入
docker load --input ubuntu_14.04.tar 或 docker load < ubuntu_14.04.tar
docker push命令上传镜像到仓库
docker push name[:TAG] | [registry_host[:registry_port]/]name[:TAG]
如 docker tag test:latest user/test:latest
docker push user/test:latest
第一次上传时,会提示输入登录信息或进行注册
新建容器,使用docker create命令
docker create -it ubuntu:latest
docker ps -a查看新建的容器处于停止状态,可以使用docker start命令来启动。
docker run 常见的错误码
125 docker daemon执行出错,例如指定了不支持的Docker命令参数
126 所指定命令无法执行,例如权限出错
127 容器内命令无法找到
终止容器docker stop [-t|--time[=10]] [container...]
首先向容器发送SIGTERM信号,等待一段超时时间(默认10秒)后,再发送SIGKILL信号来终止容器
docker kill 命令会直接发送SIGKILL信号来强行终止容器。
使用docker ps -qa
命令查看所有容器的ID
进入容器,使用-d参数,容器启动会进入后台,用户无法看到容器中的信息,也无法进行操作。如果需要进入容器进行操作,可以使用attach或exec命令,以及第三方nsenter工具。
使用attach命令时,当多个窗口同时用attach命令连接到同一个容器的时候,所有窗口都会同步显示。当某个窗口因命令阻塞时,其他窗口也无法执行操作了。
使用docker exec命令,重要的几个参数
-i,--interactive=true|false 打开标准输入接受用户输入命令,默认为false
--privileged=true|false 是否给执行命令以最高权限,默认false
-t,--tty=true|false 分配伪终端,默认false
-u,--user="" 执行命令的用户名或ID
删除容器docker rm [-f|--force][-l|--link][-v|--volumes] container[container...]
-f可以强制删除一个运行的容器
-l,--link=false删除容器的连接,但保留容器
-v,--volumes=false删除容器挂载的数据卷
容器的迁移,其实就是导入导出-o,–output=""
docker export -o test_for_run.tar nginx
docker export nginx > test_for_stop.tar
docker import test_for_run.tar - test/nginx:v1.0
docker login命令来输入用户名,密码和邮箱来完成注册和登录。注册成功后,本地用户目录的.dockercfg中将保存用户的认证信息。
Ansible是知名自动化部署配置管理工具
时速云镜像下载,格式docker pull index.tenxcloud.com/<namespace>/<repository>
如 docker pull index.tenxcloud.com/docker_library/node:latest
下一篇文章将介绍如何构建私有仓库。