Docker常用命令

帮助命令

# docker版本信息
$ docker version
# 显示docker系统信息
$ docker info
# 帮助命令
$ docker --help

镜像命令

查看镜像列表

$ docker images

# 可选项
-a, --all       # 所有镜像
-q, --quiet     # 只显示镜像id
-f, --filter    # 过滤

# 参考
Options:
  -a, --all             Show all images (default hides intermediate images)
      --digests         Show digests
  -f, --filter filter   Filter output based on conditions provided
      --format string   Pretty-print images using a Go template
      --no-trunc        Don't truncate output
  -q, --quiet           Only show numeric IDs

搜索镜像

# 搜索 docker hub 镜像列表
$ docker search mysql 

NAME                              DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
mysql                             MySQL is a widely used, open-source relation…   10202               [OK]                
mariadb                           MariaDB is a community-developed fork of MyS…   3753                [OK]                

# 过滤搜索
$ docker search mysql --filter=STARS=10202

下载镜像

# 默认使用最新版本
$ docker pull mysql

# 指定版本 (mysql 5.7版本)
$ docker pull mysql:5.7

删除镜像

# 删除指定容器
$ docker rmi -f 容器id 容器id2
# 删除全部容器
$ docker rmi -f ${docker images -aq}

练习容器命令

下载一个centos镜像

$ docker pull centos

启动

$ docker run [可选参数] image
# 参数选项
--name="Name" 窗口名字,区分容器
-d 后台运行
-it 使用交互方式运行,进入容器查看内容
-p  指定容器的端口 -p 8080:8080
      -p 主机端口:容器端口(常用)
      -p 容器端口
-p 随机指定端口

# 启动并进入容器
$ docker run -it centos /bin/bash
==
[root@VM-0-10-centos /]# docker run -it centos /bin/bash
[root@fbdd3a57cdc4 /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
==

# 退出容器
$ exit

列出所有运行的容器

$ docker ps

# 列出当前正在运行的容器,列出历史运行的容器
-a 

# 显示最近创建的?个容器
-n=?

# 只显示容器id
-q

删除容器

$ docker rm 容器id
# 强制删除运行中的容器
$ docker rm -f 容器id
# 强制删除所有容器
$ docker rm -f $(docker ps -aq)

$ docker ps -a -q|xargs docker rm

启动和停止容器操作

$ docker start 容器id
$ docker restart 容器id
$ docker stop 容器id
$ docker kill 容器id # 强制停止当前容器

常用其它命令

后台启动

$ docker run -d centos

docker ps 发现centos 停止了

常见的坑:
docker容器使用后台运行,就必须要有一个前台进程,docker 发现没有应用,就会自动停止

启动一个不停止的容器

$ docker run -d centos /bin/sh -c "while true; do echo yang; sleep 1; done"
# 查看容器列表
$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
d455f26b323d        centos              "/bin/sh -c 'while t…"   3 seconds ago       Up 2 seconds                            hungry_lederberg


# 查看日志
$ docker logs -tf --tail 10 d455f26b323d
2020-11-25T13:53:52.900071191Z yang
2020-11-25T13:53:53.901806792Z yang
2020-11-25T13:53:54.903569271Z yang
2020-11-25T13:53:55.905309521Z yang
2020-11-25T13:53:56.907025703Z yang
2020-11-25T13:53:57.908753610Z yang

查看容器进程信息

$ docker top 容器id
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                18210               18194               0                   21:52               ?                   00:00:00            /bin/sh -c while true; do echo yang; sleep 1; done
root                21049               18210               0                   22:03               ?                   00:00:00            /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 1

查看镜像元数据

$ docker inspect 容器id
![](https://img2020.cnblogs.com/blog/1616253/202011/1616253-20201125220642620-2098317748.png)

进入运行的容器

# 容器通常是后台运行,需要进入容器,修改配置等操作

# 查看运行中的容器
$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
4334cea3e4c3        centos              "/bin/sh -c 'while t…"   49 seconds ago      Up 48 seconds                           admiring_joliot
# 方式一
$ docker exec -it 4334cea3e4c3 /bin/bash

# 方式二
$ docker attach -it 4334cea3e4c3 /bin/bash


# docker exec # 进入容器后开户一个新的终端
# docker attach # 进入容器正在执行的终端,不会启动新的进程

从容器内拷文件到主机

$ docker cp . .
posted @ 2021-11-17 10:08  ++超  阅读(27)  评论(0)    收藏  举报