前言
前文介绍了docker的基本概念与原理,已经了解了docker的架构(C/S架构),本文将简述docker client的所有命令,并通过一个完整的例子讲述命令的基本用法。
版本信息
[root@t24app1sg ~]<20181106 11:26:43># docker version
Client:
Version: 18.06.1-ce
API version: 1.38
Go version: go1.10.3
Git commit: e68fc7a
Built: Tue Aug 21 17:20:43 2018
OS/Arch: linux/amd64
Experimental: false
Server:
Engine:
Version: 18.06.1-ce
API version: 1.38 (minimum version 1.12)
Go version: go1.10.3
Git commit: e68fc7a
Built: Tue Aug 21 17:28:38 2018
OS/Arch: linux/amd64
Experimental: false
命令大全
说明:不同的版本命令数量可能是不同的,软件是不断迭代开发的嘛。本文简要描述docker 18相关命令,分为management commands和commands。
management commands管理命令
config Manage Docker configs --管理docker的配置
container Manage containers --管理容器
image Manage images --管理镜像
network Manage networks --管理网络
node Manage Swarm nodes --管理集群节点swarm nodes
plugin Manage plugins --管理docker插件
secret Manage Docker secrets --管理docker安全组件(密码之类的)
service Manage services --管理Swarm编排中的服务
stack Manage Docker stacks --管理docker 栈
swarm Manage Swarm --管理集群
system Manage Docker --管理docker(磁盘空间、系统事件event等)
trust Manage trust on Docker images --docker镜像中的内容信任
volume Manage volumes --管理磁盘卷
Commands—一般命令:
attach Attach local standard input, output, and error streams to a running container --分离模式
build Build an image from a Dockerfile --通过dockerfile构建镜像
commit Create a new image from a container's changes --从容器创建新的镜像
cp Copy files/folders between a container and the local filesystem --容器与本地系统间相互拷贝
create Create a new container --创建一个容器
diff Inspect changes to files or directories on a container's filesystem --检查容器文件系统的差别
events Get real time events from the server --从服务中获取实时事件
exec Run a command in a running container --在容器中运行命令
export Export a container's filesystem as a tar archive --导出容器的文件系统
history Show the history of an image --显示镜像的历史信息
images List images --显示所有镜像
import Import the contents from a tarball to create a filesystem image --从tarball导出内容到文件系统镜像
info Display system-wide information --显示docker 系统层信息
inspect Return low-level information on Docker objects --显示docker对象的底层信息
kill Kill one or more running containers --杀死容器
load Load an image from a tar archive or STDIN --载入一个镜像
login Log in to a Docker registry --登入docker仓库
logout Log out from a Docker registry --退出登录仓库
logs Fetch the logs of a container --获取容器的log信息
pause Pause all processes within one or more containers --暂停容器的处理
port List port mappings or a specific mapping for the container --暂停容器的端口映射
ps List containers --查看所有容器
pull Pull an image or a repository from a registry --从仓库中pull一个镜像
push Push an image or a repository to a registry --向仓库推送一个镜像
rename Rename a container --重命名一个容器
restart Restart one or more containers --重启容器
rm Remove one or more containers --删除容器
rmi Remove one or more images --删除镜像
run Run a command in a new container --在新容器中执行命令
save Save one or more images to a tar archive (streamed to STDOUT by default) --保存镜像到tar文件
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 --显示容器的资源利用率
stop Stop one or more running containers --停止运行中的容器
tag Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE --给镜像创建一个tag标签
top Display the running processes of a container --显示容器的运行进程
unpause Unpause all processes within one or more containers --取消暂停
update Update configuration of one or more containers --更新容器的配置
version Show the Docker version information --显示docker版本信息
wait Block until one or more containers stop, then print their exit codes --阻塞到某个容器停止
一个完整的例子
1. docker images查看所有镜像
[root@t24app1sg docker_pj]<20181106 11:49:28># docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
jboss_t24 v1 3104141b0b0c 19 hours ago 801MB
csdev.registry.cmbchina.cn/public/cmb-rhel7.5 7.5-433 7b875638cfd8 6 weeks ago 201MB
2. docker pull XXX仓库获取一个镜像
[root@t24app1sg docker_pj]<20181106 11:49:41># docker pull csdev.registry.cmbchina.cn/public/cmb-jboss-eap-71:latest
latest: Pulling from public/cmb-jboss-eap-71
378837c0e24a: Pull complete
e17262bc2341: Pull complete
0eeb656bc1e6: Pull complete
77187f02cbef: Pull complete
72a204610612: Pull complete
fb9ea86bb958: Pull complete
Digest: sha256:8d7d7157fd0d672365cd35197a0ec2e169bdaa4279ddd09cb993aeef8a5edbbe
Status: Downloaded newer image for csdev.registry.cmbchina.cn/public/cmb-jboss-eap-71:latest
[root@t24app1sg docker_pj]<20181106 11:50:55>#
3. 再次docker images查看所有镜像
[root@t24app1sg docker_pj]<20181106 11:50:55># docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
jboss_t24 v1 3104141b0b0c 19 hours ago 801MB
csdev.registry.cmbchina.cn/public/cmb-rhel7.5 7.5-433 7b875638cfd8 6 weeks ago 201MB
csdev.registry.cmbchina.cn/public/cmb-jboss-eap-71 latest 810ff889c8f7 3 months ago 986MB
4. docker run 在一个新的容器中运行命令
[root@t24app1sg docker_pj]<20181106 12:51:24># docker run -ti 810ff889c8f7 /bin/bash
[jboss@5a89f41a3be7 ~]$
说明:-t, --tty Allocate a pseudo-TTY(分配一个伪终端)
-i, --interactive Keep STDIN open even if not attached(交互式保持标准输入open状态)
5. docker ps查看所有容器
由此可以发现,我们的容器5a89f41a3be7加载镜像810ff889c8f7启动成功。
总结
通过上面的例子可以看出,docker的命令通俗易懂,一般人都能看懂。然而,要强调的是仅仅掌握docker images/pull/run/ps等命令是远远不够的,后续还有port、volume、swarm、event等高级应用以及其背后的原理(网络、计算、存储和内核命名空间namespace),系列博文将会一一讲述。