Docker命令大致可以按照以下进行分类, 也便于记忆掌握
1. 环境信息类
info;version
2. docker hub相关类
login;push/pull;search
3. 系统运维相关类
attach; build; commit; cp; diff; export; images; exec;
import/save/load; inspect; kill;
ps; rm; rmi; run; start/stop/restart; tag; top; wait;
port; pause/unpause;
4. 日志信息类
events; history; logs
为了避免死记硬背命令, 我们通过docker 安装Ubuntu场景, 来演示docker命令的使用过程, 更加便于我们记忆.
前提条件:
Docker环境-> 官网提供安装包:https://www.docker.com/products/docker-desktop
1. 看下docker本地环境信息类
1.1 info
这个命令是把本地的配置信息提取出来,同时也方便了解docker基本信息
命令构成
docker info
louie-mac:~ louiezhou$ docker info
Client:
Debug Mode: false
Server:
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
Server Version: 19.03.8
Storage Driver: overlay2
Backing Filesystem: <unknown>
Supports d_type: true
Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 7ad184331fa3e55e52b890ea95e65ba581ae3429
runc version: dc9208a3303feef5b3839f4323d9beb36df0a9dd
init version: fec3683
Security Options:
seccomp
Profile: default
Kernel Version: 4.19.76-linuxkit
Operating System: Docker Desktop
OSType: linux
Architecture: x86_64
CPUs: 2
Total Memory: 1.943GiB
Name: docker-desktop
ID: GLTH:5VOS:Y4ZK:U3JL:UZOZ:WRSG:OFU3:GKLE:IMHC:AQGX:VJ2M:PKRN
Docker Root Dir: /var/lib/docker
Debug Mode: true
File Descriptors: 33
Goroutines: 49
EventsListeners: 3
HTTP Proxy: gateway.docker.internal:3128
HTTPS Proxy: gateway.docker.internal:3129
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: false
Product License: Community Engine
1.2 Version
显示docker 的版本号, API版本, Git commit, docker客户端和后台进程的Go版本号
命令构成
docker version
louie-mac:~ louiezhou$ docker version
Client: Docker Engine - Community
Version: 19.03.8
API version: 1.40
Go version: go1.12.17
Git commit: afacb8b
Built: Wed Mar 11 01:21:11 2020
OS/Arch: darwin/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 19.03.8
API version: 1.40 (minimum version 1.12)
Go version: go1.12.17
Git commit: afacb8b
Built: Wed Mar 11 01:29:16 2020
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: v1.2.13
GitCommit: 7ad184331fa3e55e52b890ea95e65ba581ae3429
runc:
Version: 1.0.0-rc10
GitCommit: dc9208a3303feef5b3839f4323d9beb36df0a9dd
docker-init:
Version: 0.18.0
GitCommit: fec3683
2.Docker hub 相关
2.1 search
通过docker 安装Ubuntu, 就要知道docker hub上有哪些Ubuntu版本, 即搜索共享的images
命令构成
docker search Ubuntu
2.2 pull/push
pull 从docker hub 仓库中拉取对应镜像, push分享image到hub服务上
命令构成
docker pull ubuntu
louie-mac:~ louiezhou$ docker pull ubuntu:latest
latest: Pulling from library/ubuntu
5bed26d33875: Pull complete
f11b29a9c730: Pull complete
930bda195c84: Pull complete
78bf9a5ad49e: Pull complete
Digest: sha256:bec5a2727be7fff3d308193cfde3491f8fba1a2ba392b7546b43a051853a341d
Status: Downloaded newer image for ubuntu:latest
docker.io/library/ubuntu:latest
2.3 login
登录hub 服务
命令构成
docker login -u 用户名-p 密码
3. 系统运维相关
3.1 images
查看本地镜像, 罗列出本地镜像列表
命令构成
$ docker images
louie-mac:~ louiezhou$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest 4e5021d210f6 3 weeks ago 64.2MB
此命令扩展: docker image ls
3.2 run
运行启动容器, 可以配置多达28个参数, 详细解释可以通过docker run --help查看
在大部分的场景下,我们希望 docker 的服务是在后台运行的
命令结构
$ docker run -itd --name ubuntu-test ubuntu
louie-mac:~ louiezhou$ docker run -itd --name ubuntu-test ubuntu
02414c1ddaa792c08f3f8ee19f0084623cee84ff3c26ca936c3d4cb51a1753b2
注:加了 -d 参数默认不会进入容器(仅在后台运行),想要进入容器需要使用指令 docker exec后面有介绍
3.3 ps
查看容器运行信息, docker ps -a 打印出所有运行过的容器
命令结构
$ docker ps
louie-mac:~ louiezhou$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
02414c1ddaa7 ubuntu "/bin/bash" 2 minutes ago Up About a minute ubuntu-test
当前Ubuntu镜像的容器id为02414c1ddaa7 已经处于运行状态
3.4 inspect
查看容器运行时详细信息
命令构成
docker inspect container|image
3.5 exec
在运行中的容器中执行命令
命令构成
$ docker exec[OPTIONS] CONTAINER COMMAND
louie-mac:~ louiezhou$ docker exec -it 02414c1ddaa7 /bin/bash
root@02414c1ddaa7:/# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
root@02414c1ddaa7:/#
这样就可以进入容器, 一个Ubuntu的系统就此可以玩起来了.
参数说明:
-i: 交互式操作
-t: 终端
ubuntu: ubuntu 镜像(此处使用容器id:02414c1ddaa7)
/bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash
3.6 stop
停止容器一个容器
$ docker stop <容器 ID>
3.7 restart
重新启动容器
$ docker restart <容器 ID>
3.8 attach
连接正在运行中的容器
$ docker attach <容器 ID>
louie-mac:~ louiezhou$ docker attach 02414c1ddaa7
root@02414c1ddaa7:/# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
root@02414c1ddaa7:/#
attach 必须是登陆到一个已经运行的容器里,如果从这个容器中 exit 退出的话,会导致容器停止.
3.9 stats
显示一个活着的容器资源使用情况
docker stats container
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
02414c1ddaa7 ubuntu-test 0.00% 796KiB / 1.943GiB 0.04% 1.4kB / 0B 0B / 0B 1
3.10 export/import
导出容器 1e560fca3906 快照到本地文件 ubuntu.tar
$ docker export 1e560fca3906> ubuntu.tar
import导入
通过指定 URL 或者某个目录来导入
$ docker import http://example.com/exampleimage.tgz example/imagerepo
3.11 rm
删除容器
$ docker rm -f 1e560fca3906
3.12 port
查看映射端口
~$ docker port bf08b7f2cd89
5000/tcp ->0.0.0.0:5000
3.13 commit
可以将正在运行的容器,commit 成新的镜像
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
OPTIONS说明:
-a :提交的镜像作者
-c :使用Dockerfile指令来创建镜像
-m :提交时的说明文字
-p :在commit时,将容器暂停
docker commit -a "ubuntu" -m "myubuntn" a404c6c174a2 myubuntu:v1
sha256:37af1236adef1544e8886be23010b66577647a40bc02c0885a6600b33ee28057
4. 日志信息类
4.1 history
打印指定镜像中每一层Image命令行的历史记录
命令结构
docker history image
louie-mac:~ louiezhou$ docker history ubuntu
IMAGE CREATED CREATED BY SIZE COMMENT
4e5021d210f6 3 weeks ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0B
<missing> 3 weeks ago /bin/sh -c mkdir -p /run/systemd && echo 'do… 7B
<missing> 3 weeks ago /bin/sh -c set -xe && echo '#!/bin/sh' > /… 745B
<missing> 3 weeks ago /bin/sh -c [ -z "$(apt-get indextargets)" ] 987kB
<missing> 3 weeks ago /bin/sh -c #(nop) ADD file:594fa35cf803361e6… 63.2MB
4.2 log
查看应用程序log
docker logs [ID或者名字] 可以查看容器内部的标准输出
~$ docker logs -f bf08b7f2cd89
* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
192.168.239.1 - - [09/May/2016 16:30:37] "GET / HTTP/1.1" 200 -
更多docker 命令可以使用命令
docke command --help
参考:
https://docs.docker.com/release-notes/
Docker 资源汇总
Docker 官方主页: https://www.docker.com
Docker 官方博客: https://blog.docker.com/
Docker 官方文档: https://docs.docker.com/
Docker Store: https://store.docker.com
Docker Cloud: https://cloud.docker.com
Docker Hub: https://hub.docker.com
Docker 的源代码仓库: https://github.com/moby/moby
Docker 发布版本历史: https://docs.docker.com/release-notes/
Docker 常见问题: https://docs.docker.com/engine/faq/
总结:
测试是一门技术, 更是一门艺术. 也许你今天拥有的技术, 明天就会被淘汰. 同时需要我们开拓思维和眼界, 积极拥抱变化, 学习新知识, 新方法,新技能, 计算机领域讲究的是实践, 学习更要讲究方式方法. 学习和动手一定要结合, 光看不练,犹如看武功秘籍, 是永远成不了武功大侠的.
关注我们获得更多精彩内容!