最近学习Docker,将docker所有命令实验了一番,特整理如下:

# docker --help
Usage: docker [OPTIONS] COMMAND [arg...]
docker daemon [ --help | ... ]
docker [ -h | --help | -v | --version ]

A self-sufficient runtime for containers.

Options:

--config=~/.docker Location of client config files
-D, --debug=false Enable debug mode
-H, --host=[] Daemon socket(s) to connect to
-h, --help=false Print usage
-l, --log-level=info Set the logging level
--tls=false Use TLS; implied by --tlsverify
--tlscacert=~/.docker/ca.pem Trust certs signed only by this CA
--tlscert=~/.docker/cert.pem Path to TLS certificate file
--tlskey=~/.docker/key.pem Path to TLS key file
--tlsverify=false Use TLS and verify the remote
-v, --version=false Print version information and quit

Commands:
attach Attach to a running container
--将终端依附到容器上
1> 运行一个交互型容器
[[email protected] ~]# docker run -i -t centos /bin/bash
[[email protected] /]#
2> 在另一个窗口上查看该容器的状态
[[email protected] ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d4a75f165ce6 centos "/bin/bash" 5 seconds ago Up 5 seconds cranky_mahavira
3> 退出第一步中运行的容器
[[email protected] /]# exit
exit
4> 查看该容器的状态
[[email protected] ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d4a75f165ce6 centos "/bin/bash" 2 minutes ago Exited (0) 23 seconds ago cranky_mahavira
可见此时容器的状态是Exited,那么,如何再次运行这个容器呢?可以使用docker start命令
5> 再次运行该容器
[[email protected] ~]# docker start cranky_mahavira
cranky_mahavira
6> 再次查看该容器的状态
[[email protected] ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d4a75f165ce6 centos "/bin/bash" 6 minutes ago Up 29 seconds cranky_mahavira
因为该容器是交互型的,但此刻我们发现没有具体的终端可以与之交互,这时可使用attach命令。
7> 通过attach命令进行交互
[[email protected] ~]# docker attach cranky_mahavira
[[email protected] /]#

build Build an image from a Dockerfile
--通过Dockerfile创建镜像

commit Create a new image from a container‘s changes
--通过容器创建本地镜像
注意:如果是要push到docker hub中,注意生成镜像的命名
[[email protected] ~]# docker commit centos_v1 centos:v1
68ad49c999496cff25fdda58f0521530a143d3884e61bce7ada09bdc22337638
[[email protected] ~]# docker push centos:v1
You cannot push a "root" repository. Please rename your repository to <user>/<repo> (ex: <user>/centos)
用centos:v1就不行,因为它push到docker hub中时,是推送到相应用户下,必须指定用户名。譬如我的用户名是ivictor,则新生成的本地镜像命名为:
docker push victor/centos:v1,其中v1是tag,可不写,默认是latest

cp Copy files/folders from a container to a HOSTDIR or to STDOUT
--在宿主机和容器之间相互COPY文件
cp的用法如下:
Usage: docker cp [OPTIONS] CONTAINER:PATH LOCALPATH|-
docker cp [OPTIONS] LOCALPATH|- CONTAINER:PATH
如:容器mysql中/usr/local/bin/存在docker-entrypoint.sh文件,可如下方式copy到宿主机
# docker cp mysql:/usr/local/bin/docker-entrypoint.sh /root
修改完毕后,将该文件重新copy回容器
# docker cp /root/docker-entrypoint.sh mysql:/usr/local/bin/

create Create a new container
--创建一个新的容器,注意,此时,容器的status只是Created

diff Inspect changes on a container‘s filesystem
--查看容器内发生改变的文件,以我的mysql容器为例
[[email protected] ~]# docker diff mysqldb
C /root
A /root/.bash_history
A /test1.txt
A /test.tar
A /test.txt
C /run
C /run/mysqld
A /run/mysqld/mysqld.pid
A /run/mysqld/mysqld.sock
不难看出,C对应的均是目录,A对应的均是文件

events Get real time events from the server
--实时输出Docker服务器端的事件,包括容器的创建,启动,关闭等。
譬如:
[[email protected] ~]# docker events
2015-09-08T17:40:13.000000000+08:00 d2a2ef5ddb90b505acaf6b59ab43eecf7eddbd3e71f36572436c34dc0763db79: (from wordpress) create
2015-09-08T17:40:14.000000000+08:00 d2a2ef5ddb90b505acaf6b59ab43eecf7eddbd3e71f36572436c34dc0763db79: (from wordpress) die
2015-09-08T17:42:10.000000000+08:00 839866a338db6dd626fa8eabeef53a839e4d2e2eb16ebd89679aa722c4caa5f7: (from mysql) start

exec Run a command in a running container
--用于容器启动之后,执行其它的任务
通过exec命令可以创建两种任务:后台型任务和交互型任务
后台型任务:docker exec -d cc touch 123 其中cc是容器名
交互型任务:
[[email protected] ~]# docker exec -i -t cc /bin/bash
[email protected]:/# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var

export Export a container‘s filesystem as a tar archive
--将容器的文件系统打包成tar文件
有两种方式:
docker export -o mysqldb1.tar mysqldb
docker export mysqldb > mysqldb.tar

history Show the history of an image
--显示镜像制作的过程,相当于dockfile

images List images
--列出本机的所有镜像

import Import the contents from a tarball to create a filesystem image
--根据tar文件的内容新建一个镜像,与之前的export命令相对应
[[email protected] ~]# docker import mysqldb.tar mysql:v1
eb81de183cd94fd6f0231de4ff29969db822afd3a25841d2dc9cf3562d135a10
[[email protected] ~]# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
mysql v1 eb81de183cd9 21 seconds ago 281.9 MB

info Display system-wide information
--查看docker的系统信息
[[email protected] ~]# docker info
Containers: 3 --当前有3个容器
Images: 298
Storage Driver: devicemapper
Pool Name: docker-253:0-34402623-pool
Pool Blocksize: 65.54 kB
Backing Filesystem: xfs
Data file: /dev/loop0
Metadata file: /dev/loop1
Data Space Used: 8.677 GB --对应的是下面Data loop file大小
Data Space Total: 107.4 GB
Data Space Available: 5.737 GB
Metadata Space Used: 13.4 MB --对应的是下面Metadata loop file大小
Metadata Space Total: 2.147 GB
Metadata Space Available: 2.134 GB
Udev Sync Supported: true
Deferred Removal Enabled: false
Data loop file: /var/lib/docker/devicemapper/devicemapper/data
Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
Library Version: 1.02.93-RHEL7 (2015-01-28)
Execution Driver: native-0.2
Logging Driver: json-file
Kernel Version: 3.10.0-229.el7.x86_64
Operating System: CentOS Linux 7 (Core)
CPUs: 2
Total Memory: 979.7 MiB
Name: localhost.localdomain
ID: TFVB:BXGQ:VVOC:K2DJ:LECE:2HNK:23B2:LEVF:P3IQ:L7D5:NG2V:UKNL
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled

inspect Return low-level information on a container or image
--用于查看容器的配置信息,包含容器名、环境变量、运行命令、主机配置、网络配置和数据卷配置等。

kill Kill a running container
--强制终止容器
关于stop和kill的区别,docker stop命令给容器中的进程发送SIGTERM信号,默认行为是会导致容器退出,当然,
容器内程序可以捕获该信号并自行处理,例如可以选择忽略。而docker kill则是给容器的进程发送SIGKILL信号,该信号将会使容器必然退出。

load Load an image from a tar archive or STDIN
--与下面的save命令相对应,将下面sava命令打包的镜像通过load命令导入

login Register or log in to a Docker registry
--登录到自己的Docker register,需有Docker Hub的注册账号
[[email protected] ~]# docker login
Username: ivictor
Password:
Email: [email protected]
WARNING: login credentials saved in /root/.docker/config.json
Login Succeeded

logout Log out from a Docker registry
--退出登录
[[email protected] ~]# docker logout
Remove login credentials for https://index.docker.io/v1/

logs Fetch the logs of a container
--用于查看容器的日志,它将输出到标准输出的数据作为日志输出到docker logs命令的终端上。常用于后台型容器

pause Pause all processes within a container
--暂停容器内的所有进程,
此时,通过docker stats可以观察到此时的资源使用情况是固定不变的,
通过docker logs -f也观察不到日志的进一步输出。

port List port mappings or a specific mapping for the CONTAINER
--输出容器端口与宿主机端口的映射情况
譬如:
[[email protected] ~]# docker port blog
80/tcp -> 0.0.0.0:80
容器blog的内部端口80映射到宿主机的80端口,这样可通过宿主机的80端口查看容器blog提供的服务

ps List containers
--列出所有容器,其中docker ps用于查看正在运行的容器,ps -a则用于查看所有容器。

pull Pull an image or a repository from a registry
--从docker hub中下载镜像

push Push an image or a repository to a registry
--将本地的镜像上传到docker hub中
前提是你要先用docker login登录上,不然会报以下错误
[[email protected] ~]# docker push ivictor/centos:v1
The push refers to a repository [docker.io/ivictor/centos] (len: 1)
unauthorized: access to the requested resource is not authorized

rename Rename a container
--更改容器的名字

restart Restart a running container
--重启容器

rm Remove one or more containers
--删除容器,注意,不可以删除一个运行中的容器,必须先用docker stop或docker kill使其停止。
当然可以强制删除,必须加-f参数
如果要一次性删除所有容器,可使用 docker rm -f `docker ps -a -q`,其中,-q指的是只列出容器的ID

rmi Remove one or more images
--删除镜像

run Run a command in a new container
--让创建的容器立刻进入运行状态,该命令等同于docker create创建容器后再使用docker start启动容器

save Save an image(s) to a tar archive
--将镜像打包,与上面的load命令相对应
譬如:
docker save -o nginx.tar nginx

search Search the Docker Hub for images
--从Docker Hub中搜索镜像

start Start one or more stopped containers
--启动容器

stats Display a live stream of container(s) resource usage statistics
--动态显示容器的资源消耗情况,包括:CPU、内存、网络I/O

stop Stop a running container
--停止一个运行的容器

tag Tag an image into a repository
--对镜像进行重命名

top Display the running processes of a container
--查看容器中正在运行的进程

unpause Unpause all processes within a container
--恢复容器内暂停的进程,与pause参数相对应

version Show the Docker version information
--查看docker的版本

wait Block until a container stops, then print its exit code
--捕捉容器停止时的退出码
执行此命令后,该命令会“hang”在当前终端,直到容器停止,此时,会打印出容器的退出码。

Run ‘docker COMMAND --help‘ for more information on a command.

时间: 2024-10-18 13:23:04

最近学习Docker,将docker所有命令实验了一番,特整理如下:的相关文章

Docker学习笔记(2)--Docker常用命令

原文地址:http://blog.csdn.net/we_shell/article/details/38368137 1. 查看docker信息(version.info) [plain] view plaincopy # 查看docker版本 $docker version # 显示docker系统的信息 $docker info 2. 对image的操作(search.pull.images.rmi.history) [plain] view plaincopy # 检索image $do

Docker学习笔记之镜像管理命令

镜像: docker images -a  查看镜像列表 docker  images -q 只返回ID docker images inspect +镜像名称  查看镜像的详细信息 docker rmi [OPTIONS] IMAGE...  删除一个镜像 docker rmi $(docker images -q) 删除所有的镜像 dockerhub 镜像 docker search[OPTIONS] TERM --automated=false--no-trunc=false-s,--st

Docker源码分析(二):Docker Client创建与命令执行

1. 前言 如今,Docker作为业界领先的轻量级虚拟化容器管理引擎,给全球开发者提供了一种新颖.便捷的软件集成测试与部署之道.在团队开发软件时,Docker可以提供可复用的运行环境.灵活的资源配置.便捷的集成测试方法以及一键式的部署方式.可以说,Docker的优势在简化持续集成.运维部署方面体现得淋漓尽致,它完全让开发者从持续集成.运维部署方面中解放出来,把精力真正地倾注在开发上. 然而,把Docker的功能发挥到极致,并非一件易事.在深刻理解Docker架构的情况下,熟练掌握Docker C

Docker学习笔记 之 Docker安装配置使用

简介 Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的.可移植的.自给自足的容器.开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机).bare metal.OpenStack 集群和其他的基础应用平台. 环境:CentOS7.3 地址:192.168.1.137 首先注册阿里云开发者帐号帐号 https://cr.console.aliyun.com/ 登陆后取得专属加速器地址:https://XXXXX.mirror.aliyuncs.com

Docker入门之常用命令

写在前面 细数当前最流行的技术莫过于容器化和人工智能了,而容器化技术能有今天的热度,Docker可谓功不可没. 让我们一起来回顾一下Docker 是什么? 是一种虚拟化技术 能够将应用程序自动部署到容器 使用Go语言开源引擎 能够非常方便的将我们的应用程序以及运行所以来的环境部署到开发,测试及生产环境.一次编译,随处可用 有什么优势? 提供了简单轻量的建模方式 职责的逻辑分离 快速高效的开发生命周期 让应用部署具备了高可移植性 更方便的使用面向服务的架构 Docker的使用场景? 使用Docke

Docker(三):Dockerfile 命令详解

上一篇文章Docker(二):Dockerfile 使用介绍介绍了 Dockerfile 的使用,这篇文章我们来继续了解 Dockerfile ,学习 Dockerfile 各种命令的使用. Dockerfile 指令详解 1 FROM 指定基础镜像 FROM 指令用于指定其后构建新镜像所使用的基础镜像.FROM 指令必是 Dockerfile 文件中的首条命令,启动构建流程后,Docker 将会基于该镜像构建新镜像,FROM 后的命令也会基于这个基础镜像. FROM语法格式为: FROM <i

Docker容器操作中常用命令集合

docker pull 从仓库获取所需要的镜像 docker images 显示本地已有的镜像. docker commit 提交更新后的副本. docker build 创建一个新的镜像 ADD 复制本地文件到镜像 EXPOSE 命令来向外部开放端口 CMD 命令来描述容器启动后运行的程序 docker run -t -i ouruser/sinatra:v2 /bin/bash 启动容器docker tag 命令来修改镜像的标签.docker push 把自己创建的镜像上传到仓库中来共享do

Docker Client创建和命令执行

//后续补上Docker的架构分析 Docker Client创建及命令执行 Docker架构:http://www.infoq.com/cn/articles/docker-source-code-analysis-part1 从整体的架构图中,可以看出Docker client在架构中的位置,Docker client是用户用来和Docker Daemon(主体部分)建立通信的客户端.用户使用Docker可执行文件发起管理container的请求. Go语言:Go是Google开发的一种编译

docker简介和基础命令

一.Docker 概述 Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目.它基于 Google 公司推出的 Go 语言实现. 项目后来加入了 Linux 基金会,遵从了 Apache 2.0 协议,项目代码在 GitHub 上进行维护.Docker 自开源后受到广泛的关注和讨论, 以至于 dotCloud 公司后来都改名为 Docker Inc.Redhat 已经在其 RHEL6.5 中集中支持 Docker:Google 也在其 PaaS