前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >测试必会 | Docker 核心命令技能

测试必会 | Docker 核心命令技能

作者头像
louiezhou001
发布2020-04-21 11:09:04
5610
发布2020-04-21 11:09:04
举报

Docker命令大致可以按照以下进行分类, 也便于记忆掌握

  • 环境信息类
  • docker hub相关类
  • 系统运维相关类
  • 日志信息类

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

代码语言:javascript
复制
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

代码语言:javascript
复制
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

代码语言:javascript
复制
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 服务

命令构成

代码语言:javascript
复制
docker login -u 用户名-p 密码

3. 系统运维相关

3.1 images

查看本地镜像, 罗列出本地镜像列表

命令构成

代码语言:javascript
复制
$ docker images
代码语言:javascript
复制
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 的服务是在后台运行的

命令结构

代码语言:javascript
复制
$ docker run -itd --name ubuntu-test ubuntu
代码语言:javascript
复制
louie-mac:~ louiezhou$ docker run -itd --name ubuntu-test ubuntu
02414c1ddaa792c08f3f8ee19f0084623cee84ff3c26ca936c3d4cb51a1753b2

注:加了 -d 参数默认不会进入容器(仅在后台运行),想要进入容器需要使用指令 docker exec后面有介绍

3.3 ps

查看容器运行信息, docker ps -a 打印出所有运行过的容器

命令结构

代码语言:javascript
复制
$ docker ps
代码语言:javascript
复制
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

在运行中的容器中执行命令

命令构成

代码语言:javascript
复制
$ docker exec[OPTIONS] CONTAINER COMMAND
代码语言:javascript
复制
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

停止容器一个容器

代码语言:javascript
复制
$ docker stop <容器 ID>

3.7 restart

重新启动容器

代码语言:javascript
复制
$ docker restart <容器 ID>

3.8 attach

连接正在运行中的容器

代码语言:javascript
复制
$ docker attach <容器 ID>
代码语言:javascript
复制
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

代码语言:javascript
复制
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

代码语言:javascript
复制
$ docker export 1e560fca3906> ubuntu.tar

import导入

通过指定 URL 或者某个目录来导入

代码语言:javascript
复制
$ docker import http://example.com/exampleimage.tgz example/imagerepo

3.11 rm

删除容器

代码语言:javascript
复制
$ docker rm -f 1e560fca3906

3.12 port

查看映射端口

代码语言:javascript
复制
~$ docker port bf08b7f2cd89
5000/tcp ->0.0.0.0:5000

3.13 commit

可以将正在运行的容器,commit 成新的镜像

代码语言:javascript
复制
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

OPTIONS说明:

-a :提交的镜像作者

-c :使用Dockerfile指令来创建镜像

-m :提交时的说明文字

-p :在commit时,将容器暂停

代码语言:javascript
复制
docker commit -a "ubuntu" -m "myubuntn" a404c6c174a2  myubuntu:v1 
sha256:37af1236adef1544e8886be23010b66577647a40bc02c0885a6600b33ee28057

4. 日志信息类

4.1 history

打印指定镜像中每一层Image命令行的历史记录

命令结构

docker history image

代码语言:javascript
复制
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或者名字] 可以查看容器内部的标准输出

代码语言:javascript
复制
~$ 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/

总结:

测试是一门技术, 更是一门艺术. 也许你今天拥有的技术, 明天就会被淘汰. 同时需要我们开拓思维和眼界, 积极拥抱变化, 学习新知识, 新方法,新技能, 计算机领域讲究的是实践, 学习更要讲究方式方法. 学习和动手一定要结合, 光看不练,犹如看武功秘籍, 是永远成不了武功大侠的.

关注我们获得更多精彩内容!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-04-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试工程师成长之道 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档