Docker02:Docker常用命令

本文详细介绍了Docker的基础命令,包括查看和管理镜像(搜索、下载、删除)以及容器(创建、启动、停止、删除)。通过示例展示了如何使用docker run、docker ps、docker rm、docker exec等命令进行交互。此外,还提到了日志查看、容器进程检查、容器内部详情查看以及从容器内拷贝文件到主机的操作。这些内容对于理解和操作Docker容器至关重要。
摘要由CSDN通过智能技术生成

1、帮助命令

#显示docker的版本信息
docker Version

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

#显示docker帮助命令
docker --help

2、镜像命令

(1)查看所有本地的主机上的镜像
[root@hcz666 bin]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
hello-world   latest    d1165f221234   5 months ago   13.3kB

#解释
REPOSITORY  表示镜像的仓库源
TAG         表示镜像的标签
IMAGE ID    表示镜像的id
CREATED     表示镜像的创建时间
SIZE        表示镜像的大小

#可选项
-a 列出本地所有的镜像(含中间映射层)
-q 只显示镜像ID
--digests 显示镜像的摘要信息
--no-trunc 显示完整的镜像信息
(2)docker search 搜索镜像
[root@hcz666 bin]# docker search mysql
NAME                              DESCRIPTION                                     STARS     OFFICIAL AUTOMATED
mysql                             MySQL is a widely used, open-source relation…   11332     [OK]       
mariadb                           MariaDB Server is a high performing open sou…   4305      [OK]  

#可选项
  --filter=STARS=3000  #搜索出来的镜像就是STARS大于3000的

[root@hcz666 bin]# docker search mysql --filter=STARS=3000
NAME      DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql     MySQL is a widely used, open-source relation…   11332     [OK]       
mariadb   MariaDB Server is a high performing open sou…   4305      [OK]      
(3)下载镜像
#默认下载
docker pull 镜像名字

[root@hcz666 bin]# docker pull mysql
Using default tag: latest   #如果不写tag默认就是latest
latest: Pulling from library/mysql
e1acddbe380c: Pull complete    #分层下载,docker image的核心-联合文件系统
bed879327370: Pull complete 
03285f80bafd: Pull complete 
ccc17412a00a: Pull complete 
1f556ecc09d1: Pull complete 
adc5528e468d: Pull complete 
1afc286d5d53: Pull complete 
6c724a59adff: Pull complete 
0f2345f8b0a3: Pull complete 
c8461a25b23b: Pull complete 
3adb49279bed: Pull complete 
77f22cd6c363: Pull complete 
Digest: sha256:d45561a65aba6edac77be36e0a53f0c1fba67b951cb728348522b671ad63f926  #签名
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest  #下载来源的真实地址  #docker pull mysql等价于docker pull docker.io/library/mysql:latest


#指定版本下载
docker pull 镜像名字[:TAG]

[root@hcz666 bin]# docker pull mysql:5.7
5.7: Pulling from library/mysql
e1acddbe380c: Already exists 
bed879327370: Already exists 
03285f80bafd: Already exists 
ccc17412a00a: Already exists 
1f556ecc09d1: Already exists 
adc5528e468d: Already exists 
1afc286d5d53: Already exists 
4d2d9261e3ad: Pull complete 
ac609d7b31f8: Pull complete 
53ee1339bc3a: Pull complete 
b0c0a831a707: Pull complete 
Digest: sha256:7cf2e7d7ff876f93c8601406a5aa17484e6623875e64e7acc71432ad8e0a3d7e
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7

(4)删除镜像
#删除单个 
docker rm -f 镜像ID
[root@hcz666 bin]# docker rmi -f 6c20ffa54f86  
Untagged: mysql:5.7
Untagged: mysql@sha256:7cf2e7d7ff876f93c8601406a5aa17484e6623875e64e7acc71432ad8e0a3d7e
Deleted: sha256:6c20ffa54f8674203e91e3225e489aa505fa04b8d482954a8b6d7414842c6de4
Deleted: sha256:7ecf077dd9d6725f0e594b9cd5eb214ad1b3764fa75bf5940ab08b05b8bae184
Deleted: sha256:c28edab85681de37f9d2a75dde941a20d2e1ac6e4efb7dee391913d3ec722fef
Deleted: sha256:6c11b187da1ecb65ce10b25f54354f3515ce9d26fabcd859cdb43dbd625df907
Deleted: sha256:d0dfc5be0883ed4af9f642a8e4f2312a93c4241ec8e89f22219b0f0a0d26c8d3
[root@hcz666 bin]# docker images 
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
mysql         latest    5a4e492065c7   10 days ago    514MB
hello-world   latest    d1165f221234   5 months ago   13.3kB

#删除多个 
docker rm -f 镜像名1:TAG 镜像名2:TAG

#删除多个 先查询出docker中的所有镜像id,再遍历删除
docker rmi -f ${docker images -qa}

注意

rmi 是删除镜像,rm 是删除容器

3、容器命令

  • 有镜像才能创建容器,这是根本前提(下载一个Centos镜像演示)
(1)新建镜像并启动容器
#拉取centos镜像
[root@hcz666 bin]# docker pull centos
Using default tag: latest
latest: Pulling from library/centos
7a0437f04f83: Pull complete 
Digest: sha256:5528e8b1b1719d34604c87e11dcd1c0a20bedf46e83b5632cdeac91b8c04efc1
Status: Downloaded newer image for centos:latest
docker.io/library/centos:latest

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

docker run [可选参数] image
#参数说明
--name="容器新名字":为容器指定一个名称;
-d:后台运行容器,并返回容器ID, 也即启动守护式容器;
-i:以交互模式运行容器,通常与-t同时使用;
-t:为容器重新分配一个伪输入终端,通常与-i同时使用;
-it:使用交互方式运行,进入容器查看内容;
-P:随机端口映射;
-p:指定端口映射,有以下四种格式
	ip:hostPort:containerPort
	ip::containerPort
	hostPort:containerPort
	containerPort

(2)查看容器镜像的状态
[root@hcz666 bin]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

[root@hcz666 bin]# docker ps -a
CONTAINER ID   IMAGE         COMMAND       CREATED         STATUS                     PORTS     NAMES
53625f49bbe5   centos        "/bin/bash"   4 minutes ago   Exited (0) 3 minutes ago             elated_hofstadter
2a5f12acf3c0   hello-world   "/hello"      14 hours ago    Exited (0) 14 hours ago              festive_varahamihira
ef72d9753ac3   hello-world   "/hello"      2 weeks ago     Exited (0) 2 weeks ago               goofy_bardeen

[root@hcz666 bin]# docker ps -aq
53625f49bbe5
2a5f12acf3c0
ef72d9753ac3

[root@hcz666 bin]# docker ps -n=3
CONTAINER ID   IMAGE         COMMAND       CREATED          STATUS                      PORTS     NAMES
53625f49bbe5   centos        "/bin/bash"   11 minutes ago   Exited (0) 10 minutes ago             elated_hofstadter
2a5f12acf3c0   hello-world   "/hello"      14 hours ago     Exited (0) 14 hours ago               festive_varahamihira
ef72d9753ac3   hello-world   "/hello"      2 weeks ago      Exited (0) 2 weeks ago                goofy_bardeen


#可选项参数(常用) :
-a :列出当前所有正在运行的容器+历史上运行过的
-|:显示最近创建的容器。
-n=?:显示最近n个创建的容器。
-q :静默模式,只显示容器编号。
--no-trunc :不截断输出。
(3)退出容器
  • 两种退出方式

    • exit 容器停止退出

    • ctrl+P+Q 容器不停止退出

#第一种退出方式:exit
[root@bd1b8900c547 /]# exit
exit
[root@hcz666 bin]#

#第二种退出方式:ctrl+P+Q
[root@hcz666 bin]# docker run -it centos /bin/bash
[root@6f3c128a5351 /]# [root@hcz666 bin]# docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS          PORTS     NAMES
6f3c128a5351   centos    "/bin/bash"   22 seconds ago   Up 21 seconds             awesome_mestorf

(4)删除容器
docker rm 容器id                 #删除指定的容器,不能删除正在运行的容器,强制删除使用 rm -f
docker rm -f $(docker ps -aq)   #删除所有的容器
docker stop $(docker ps -aq) & docker rm -f $(docker ps -aq) #停用并删除所有的容器
docker ps -a -q|xargs docker rm #删除所有的容器

(5)启动和停止容器
docker start 容器id          #启动容器
docker restart 容器id        #重启容器
docker stop 容器id           #停止当前运行的容器
docker kill 容器id           #强制停止当前容器
#启动容器
[root@hcz666 bin]# docker run -it centos /bin/bash
#退出容器
[root@2d675efa4e5d /]# exit
exit
#查看容器镜像状态
[root@hcz666 bin]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@hcz666 bin]# docker ps -a
CONTAINER ID   IMAGE     COMMAND       CREATED              STATUS                        PORTS     NAMES
2d675efa4e5d   centos    "/bin/bash"   About a minute ago   Exited (127) 16 seconds ago             wonderful_zhukovsky
#启动容器
[root@hcz666 bin]# docker start 2d675efa4e5d
2d675efa4e5d
[root@hcz666 bin]# docker ps 
CONTAINER ID   IMAGE     COMMAND       CREATED              STATUS         PORTS     NAMES
2d675efa4e5d   centos    "/bin/bash"   About a minute ago   Up 6 seconds             wonderful_zhukovsky
#停止当前运行的容器
[root@hcz666 bin]# docker stop 2d675efa4e5d
2d675efa4e5d
[root@hcz666 bin]# docker ps 
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
#重新启动容器
[root@hcz666 bin]# docker restart 2d675efa4e5d
2d675efa4e5d
[root@hcz666 bin]# docker ps 
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS         PORTS     NAMES
2d675efa4e5d   centos    "/bin/bash"   11 minutes ago   Up 2 seconds             wonderful_zhukovsky

4、其它重要的命令

(1)后台启动命令
# 命令 docker run -d 镜像名
[root@hcz666 bin]# docker run -d centos

#问题 docker ps 发现 centos 停止了

#因为docker 容器使用后台启动,就必须有一个前台进程,docker发现没有应用,就会自动停止
(2)日志的查看
#命令
docker logs -f -t --tail 容器ID 
#可选参数
​	-t 是加入时间戳

​	-f 跟随最新的日志打印

​	--tail 数字显示最后多少条

#测试======================================================
#docker容器后台运行,必须要有一个前台的进程,否则会自动停止
#编写shell脚本循环执行,使得centos容器保持运行状态
[root@hcz666 bin]# docker run -d centos /bin/sh -c "while true;do echo hcz;sleep 5;done"
804e6016642b1bf7bd58fc11a31662b161d9830b96bf37e130aa02314799ecc8
[root@hcz666 bin]# docker ps 
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS     NAMES
804e6016642b   centos    "/bin/sh -c 'while t…"   4 seconds ago   Up 3 seconds             mystifying_dubinsky
[root@hcz666 bin]# docker logs -tf --tail 10 804e6016642b
2021-08-28T06:01:40.313398507Z hcz
2021-08-28T06:01:45.354464458Z hcz
2021-08-28T06:01:50.354649666Z hcz
2021-08-28T06:01:55.369907323Z hcz
2021-08-28T06:02:00.372413573Z hcz
2021-08-28T06:02:05.399700507Z hcz
2021-08-28T06:02:10.409882551Z hcz
2021-08-28T06:02:15.411941590Z hcz
2021-08-28T06:02:20.415990001Z hcz
2021-08-28T06:02:25.433052089Z hcz
(3)查看容器内的进程
#命令 
docker top 容器id

#测试
[root@hcz666 bin]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS     NAMES
804e6016642b   centos    "/bin/sh -c 'while t…"   6 minutes ago   Up 6 minutes             mystifying_dubinsky
[root@hcz666 bin]# docker top 804e6016642b
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                14821               16248               0                   14:10               ?                   00:00:00            /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 5
root                16248               16229               0                   14:01               ?                   00:00:00            /bin/sh -c while true;do echo hcz;sleep 5;done
(4)查看容器内部细节
#命令 
docker inspect 容器id

#测试
[root@hcz666 bin]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS     NAMES
804e6016642b   centos    "/bin/sh -c 'while t…"   6 minutes ago   Up 6 minutes             mystifying_dubinsky
[root@hcz666 bin]# docker inspect 804e6016642b
[
    {
        "Id": "804e6016642b1bf7bd58fc11a31662b161d9830b96bf37e130aa02314799ecc8",
        "Created": "2021-08-28T06:01:39.081223691Z",
        "Path": "/bin/sh",
        "Args": [
            "-c",
            "while true;do echo hcz;sleep 5;done"
        ],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 16248,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2021-08-28T06:01:40.315218151Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        },
…………省略…………
(5)进入正在运行的容器并以命令行交互
#命令
docker exec -it 容器ID bashShell

#方式一:
[root@hcz666 bin]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS     NAMES
804e6016642b   centos    "/bin/sh -c 'while t…"   28 minutes ago   Up 28 minutes             mystifying_dubinsky
[root@hcz666 bin]# docker exec -it 804e6016642b /bin/bash
[root@804e6016642b /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@804e6016642b /]# ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 06:01 ?        00:00:00 /bin/sh -c while true;do echo hcz;sleep 5;done
root       357     0  0 06:30 pts/0    00:00:00 /bin/bash
root       373     1  0 06:30 ?        00:00:00 /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 
root       374   357  0 06:31 pts/0    00:00:00 ps -ef

#命令
docker attach 容器ID
#方式二:
[root@hcz666 bin]# docker attach 804e6016642b

区别

docker exec 进入容器后开启一个新的终端,可以在里面操作

docker attach 进入容器正在执行的终端,不会启动新的进程

(6)从容器内拷贝文件到主机上
#命令
docker cp 容器ID:容器内路径 目的主机路径

#测试
[root@hcz666 bin]# docker exec -it 804e6016642b /bin/bash
[root@804e6016642b /]# cd home
[root@804e6016642b home]# ls
#在容器的home目录下新建一个demo.java文件
[root@804e6016642b home]# touch demo.java
[root@804e6016642b home]# ls
demo.java
[root@804e6016642b home]# exit
exit
[root@hcz666 bin]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS     NAMES
804e6016642b   centos    "/bin/sh -c 'while t…"   37 minutes ago   Up 37 minutes             mystifying_dubinsky
#将这个文件从容器/home目录下拷贝到主机上
[root@hcz666 bin]# docker cp 804e6016642b:/home/demo.java /home
[root@hcz666 bin]# cd /home
[root@hcz666 home]# ls
demo.java  hcz  hcz1.txt  hcz666  hcz.txt  hilde  lighthouse  test2  www  zsx

5、小结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@烟雨倾城ゝ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值