Docker系列学习(篇三):Docker常用指令


前言

环境及相关软件:CentOS、docker-ce。


一、Docker信息

1、显示 Docker 系统信息

docker info                  # 显示 Docker 系统信息,包括镜像和容器数

2、显示 Docker 版本信息

docker version           # 显示 Docker 版本信息

二、本地镜像管理

1、列出本地镜像

docker images

2、删除本地一个或多个镜像

docker rmi [OPTIONS] IMAGE [IMAGE...]
# 或
docker image rm [OPTIONS] 镜像名标签或者ID
# OPTIONS:		-f :强制删除			--no-prune :不移除该镜像的过程镜像,默认移除;

例:

$ docker images
REPOSITORY                     TAG             IMAGE ID       CREATED         SIZE
ubuntu-18.04                   docker_V5       c4321ebafada   20 hours ago    897MB
ubuntu-18.04                   docker_V4       f5010437cbf8   24 hours ago    897MB
<none>                         <none>          5bf8c451761b   25 hours ago    897MB
$ docker image rm -f 5bf8c451761b
Deleted: sha256:5bf8c451761b07b28989d72266283064fc2666d0c315a58f3f5e6d8930e00482
Deleted: sha256:0a4de1ff4cb00ce7deb0399144af2c816475b2c5c361cb6e3b38a895083bd98b

3、镜像导入与导出

## 方法一:
# 或 docker save -o xxx.tar image:tag
# -o :输出到的文件
docker save image:tag > xxx.tar                   # save导出.tar
# 或 docker load -i xxx.tar
# --input , -i : 指定导入的文件,代替 STDIN
# --quiet , -q : 精简输出信息
docker load < xxx.tar                             # load导入镜像
## 方法二:
docker export image > xxx.tar                     # export导出成.tar
cat xxx.tar | sudo docker import - image:tag      # import导入镜像

注:两种方法不可混用

4、镜像制作

## 方法1(容器rootfs命令中): 
# 保持 container 的当前状态到image后,然后生成对应的 image
docker commit     

## 方法2: 
# 使用dockerfile 文件自动化制作 image
docker build         

5、标记本地镜像

# 标记本地镜像,将其归入某一仓库。
docker tag [OPTIONS] IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]

例:

$ docker tag  ubuntu-18.04:compile_V2 10.27.170.21:80/ubuntu-18.04:compile_V2

6、查看指定镜像的创建历史

docker history [OPTIONS] IMAGE
## OPTIONS说明:
# -H :以可读的格式打印镜像大小和日期,默认为true;
# --no-trunc :显示完整的提交记录;
# -q :仅列出提交记录ID。

三、容器生命周期管理

1、运行容器

docker run -it ubuntu-18.04:build_V1 /bin/bash
# -d: 后台运行容器    -i:以交互模式运行容器    -t:为容器重新分配一个伪输入终端   -it常一起使用
# -p: 指定端口映射,格式为:主机(宿主)端口:容器端口    --name="nginx-lb":为容器指定一个名称
# -v: 挂载目录    -e username="ritchie":设置环境变量    -env-file=[]:从指定文件读入环境变量  -m :设置容器使用内存最大值
# --rm: 在容器退出时能够自动清理容器内部的文件系统,--rm 选项不能与 -d 同时使用(或者说同时使用没有意义),即只能自动清理 foreground 容器,不能自动清理detached容器,其等价于在容器退出后,执行 docker rm -v

2、启动一个或多个已经被停止的容器

docker start 容器名或ID

3、停止运行中的容器

docker stop 容器名或ID

4、重启容器

docker restart 容器名或ID

5、杀掉运行中的容器

docker kill -s KILL 容器名或者ID
# -s :向容器发送一个信号

6、删除容器

docker rm 容器名或ID
# -f :通过 SIGKILL 信号强制删除一个运行中的容器         -l :移除容器间的网络连接,而非容器本身            -v :删除与容器关联的卷。

7、暂停容器中所有进程

# 暂停数据库容器db01提供服务:   
docker pause db01

8、恢复容器中所有的进程

# 恢复数据库容器db01提供服务:   
docker unpause db01

9、创建一个新的容器但不启动它

# 语法同docker run
docker create 镜像名或ID

例:(使用docker镜像nginx:latest创建一个容器,并将容器命名为myrunoob)

docker create  --name myrunoob  nginx:latest

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

docker exec -it 容器名或ID /bin/bash
# -d:分离模式,在后台运行     -i:即使没有附加也保持打开     -t:分配一个伪终端

四、容器操作

1、列出容器

docker ps   
# -a:显示所有的容器    -f:根据条件过滤显示    -l:显示最近创建的容器  
# -q:静默模式,只显示容器编号     -s:显示总的文件大小。

2、获取容器/镜像的元数据

# 显示容器的IP
docker inspect 容器名或ID | grep IPAddress 
# -f :指定返回值的模板文件        -s :显示总的文件大小        --type :为指定类型返回JSON

3、获取容器的日志

docker logs  
# -f:跟踪日志输出  --since:显示某个开始时间的所有日志  -t:显示时间戳  --tail:仅列出最新N条容器日志

4、查看容器中运行的进程信息,支持 ps 命令参数

容器运行时不一定有/bin/bash终端来交互执行top命令,而且容器还不一定有top命令,可以使用docker top来实现查看container中正在运行的进程。

docker top 容器名或ID

5、查看容器的端口映射情况

docker port 容器名或ID

6、显示容器资源的使用情况

docker stats [OPTIONS] [CONTAINER...]
# --all , -a :显示所有的容器,包括未运行的        --format :指定返回值的模板文件        --no-stream :展示当前状态就直接退出了,不再实时更新        --no-trunc :不截断输出

输出详情介绍:
CONTAINER ID 与 NAME: 容器 ID 与名称。
CPU % 与 MEM %: 容器使用的 CPU 和内存的百分比。
MEM USAGE / LIMIT: 容器正在使用的总内存,以及允许使用的内存总量。
NET I/O: 容器通过其网络接口发送和接收的数据量。
BLOCK I/O: 容器从主机上的块设备读取和写入的数据量。
PIDs: 容器创建的进程或线程数。

7、将文件系统作为一个tar归档文件导出到STDOUT

docker export [OPTIONS] CONTAINER
# -o :将输入内容写到文件

例:(将id为a404c6c174a2的容器按日期保存为tar文件)

docker export -o mysql-`date +%Y%m%d`.tar a404c6c174a2

五、容器rootfs命令

1、从容器创建一个新的镜像

docker commit -a "作者" -m "说明文字" 容器名或ID 镜像名:标签
# -a :提交的镜像作者        -c :使用Dockerfile指令来创建镜像        -m :提交时的说明文字        -p :在commit时,将容器暂停。

2、容器与主机之间数据拷贝

# 主机拷贝到容器内,容器ID通过docker ps查询
docker cp  ~/work/docker-img/ d4526b4d855b:/home/mysql-20220601.tar.gz
# 容器内文件拷贝到主机
docker cp d137b99b2472:/public/work/mysql-2021.12.1.tar.gz ~/work/docker-img
# -L :保持源目标中的链接

3、检查容器中文件结构的更改

# 查看容器mymysql的文件结构更改
docker diff mymysql

六、镜像仓库

1、登陆到Docker镜像仓库

docker login -u 用户名 -p 密码  # 登陆到Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库Docker Hub

2、登出Docker镜像仓库

docker logout  # 登出Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub

3、从镜像仓库拉取镜像

docker pull java:latest    # 拉去镜像库最新的java镜像

4、将镜像上传到镜像仓库

docker push 10.76.10.25:80/ubuntu-18.04:build_V2

5、从Docker Hub查找镜像

docker search 
# --automated:只列出 automated build类型的镜像          --no-trunc :显示完整的镜像描述          -s :列出收藏数不小于指定值的镜像        -f <过滤条件>:列出收藏数不小于指定值的镜像

例:(从 Docker Hub 查找所有镜像名包含 java,并且收藏数大于 10 的镜像)

$ docker search -f stars=10 java
NAME                  DESCRIPTION                           STARS   OFFICIAL   AUTOMATED
java                  Java is a concurrent, class-based...   1037    [OK]       
anapsix/alpine-java   Oracle Java 8 (and 7) with GLIBC ...   115                [OK]
develar/java                                                 46                 [OK]
isuper/java-oracle    This repository contains all java...   38                 [OK]
lwieske/java-8        Oracle Java 8 Container - Full + ...   27                 [OK]
nimmis/java-centos    This is docker images of CentOS 7...   13                 [OK]

参数说明:
NAME: 镜像仓库源的名称
DESCRIPTION: 镜像的描述
OFFICIAL: 是否 docker 官方发布
stars: 类似 Github 里面的 star,表示点赞、喜欢的意思。
AUTOMATED: 自动构建。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值