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

下一篇文章将介绍如何构建私有仓库。