专栏首页测试工程师成长之道测试必会 | Docker 核心命令技能

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

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

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/

总结:

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

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

本文分享自微信公众号 - 测试工程师成长之道(louiezhou001),作者:Louiezhou

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-04-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • FineUICore基础版部署到docker实战

    FineUI用了好多年,最近出了FineUICore版本,一直没时间是试一下docker,前几天买了一个腾讯云服务器,1核2g,装了centos7.6,开始的时...

    louiezhou001
  • Dockerfile究竟是做什么的

    我们在之前的文章中分享过Docker的三个关键名称:仓库, 镜像, 容器之间的概念和关系.

    louiezhou001
  • Docker容器无法启动,里面的配置文件如何修改

    当修改一个容器, 如mysql里的配置文件/etc/mysql/my.cnf , 修改完成后重启mysql 容器, 使用docker ps -a 查看容器,显示...

    louiezhou001
  • docker的常用命令以使用

    docker引擎的基础是linux容器技术。与虚拟机的相似,但又不同。docker是一种轻量级的虚拟化方式,docker容器的启动和停止可以在秒级实现,速度比...

    93年的老男孩
  • Docker1.12尝试

    前言:在docker1.12中默认增加了swarm mode 编排功能,并且官方支持更多的插件来进行docker的网路和外接存储插件,不过目前测试swarm m...

    BGBiao
  • docker学习(1) 安装

    docker是啥就不多讲了,简言之就是更轻量、更牛叉的新一代虚拟机技术。下面是安装步骤: 一、mac/windows平台的安装 docker是在linux内核基...

    菩提树下的杨过
  • Docker 存储调整的几种方法

    通常情况下,不管是使用云服务器,还是物理服务器,根目录不会设置太大,很多docker使用者会遇到一个问题,就是默认所有的资源存储在/var/lib/docker...

    李俊鹏
  • 定制一个 Docker 版 Jenkins 镜像

    对于如何备份 Jenkins 除了用 Jenkins 插件来定期备份或是定期将配置文件上传到 Git,最近尝试了另外一种方式:就是把 Jenkins 安装到 D...

    Peter Shen
  • Docker-如何清理磁盘占用

    最近开始打包我们的一些应用,不得不说,我已经爱上了Docker这个工具。在AWS EC2上,它的存在使我们的工作方便了许多。然而,我们遇到的唯一问题是Docke...

    Shedray大数据专栏
  • Java开源博客My-Blog之docker容器组件化修改

    前言 5月13号上线了自己的个人博客,《Docker+SpringBoot+Mybatis+thymeleaf的Java博客系统开源啦》,紧接着也在github...

    我是十三

扫码关注云+社区

领取腾讯云代金券