Docker常用命令

13 篇文章 0 订阅
6 篇文章 0 订阅

Docker常用命令

官方文档都给常用的命令给出了详细的解释 官方文档
在这里插入图片描述

1. docker images 查看本地主机的所有镜像

[root@node01 ~]# docker  images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
mysql         latest    9da615fced53   40 hours ago   514MB
hello-world   latest    feb5d9fea6a5   2 weeks ago    13.3kB

#解释:
1.REPOSITORY  镜像的仓库源

2.TAG  镜像的标签

3.IMAGE ID 镜像的id

4.CREATED 镜像的创建时间

5.SIZE 镜像的大小


# 可选参数

-a/--all 列出所有镜像

-q/--quiet 只显示镜像的id

2. docker search 搜索镜像

[root@node01 ~]# docker search mysql

#搜索收藏数大于3000的镜像
[root@node01 ~]# docker search mysql --filter=stars=3000
NAME      DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql     MySQL is a widely used, open-source relation…   11533     [OK]       
mariadb   MariaDB Server is a high performing open sou…   4378      [OK]       

3. docker pull 镜像名[:tag] 下载镜像

[root@node01 ~]# docker pull mysql
Using default tag: latest    #如果不写tag默认就是latest
latest: Pulling from library/mysql
b380bbd43752: Pull complete 
f23cbf2ecc5d: Pull complete     #分层下载,docker image的核心-联合文件系统
30cfc6c29c0a: Pull complete 
b38609286cbe: Pull complete 
8211d9e66cd6: Pull complete 
2313f9eeca4a: Pull complete 
7eb487d00da0: Pull complete 
a5d2b117a938: Pull complete 
1f6cb474cd1c: Pull complete 
896b3fd2ab07: Pull complete 
532e67ebb376: Pull complete 
233c7958b33f: Pull complete 
Digest: sha256:5d52dc010398db422949f079c76e98f6b62230e5b59c0bf7582409d2c85abacb
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest
#下载来源的真实地址  #docker pull mysql等价于docker pull docker.io/library/mysql:latest


#指定版本下载
[root@node01 ~]# docker pull mysql:5.7
5.7: Pulling from library/mysql
b380bbd43752: Already exists  #前面已经下载过了最新版本的,所以有相同的部分的地方就不用下载了,
f23cbf2ecc5d: Already exists  #只需要下载后面的不同的部分
30cfc6c29c0a: Already exists 
b38609286cbe: Already exists 
8211d9e66cd6: Already exists 
2313f9eeca4a: Already exists 
7eb487d00da0: Already exists 
bb9cc5c700e7: Pull complete 
88676eb32344: Pull complete 
8fea0b38a348: Pull complete 
3dc585bfc693: Pull complete 
Digest: sha256:b8814059bbd9c80b78fe4b2b0b70cd70fe3772b3c5d8ee1edfa46791db3224f9
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7

4. docker rmi 删除镜像


#删除指定容器id
[root@node01 ~]# docker rmi -f  8a8a506ccfdc   (-f  全部删除)

#删除多个容器id
[root@node01 ~]# docker rmi -f $(docker images -aq)

#删除所有容器id
[root@node01 ~]# docker rmi -f $(docker images -aq)  ($括号里面 通过命令查出镜像,再递归一个个删除)

容器命令

有镜像才可以创建容器
(r容器是运行程序的地方,镜像是静态的,每一层都只是可读的,而容器是动态的,里面运行着我们指定的应用。每一个容器里面都有一个简易的linux环境)

1. 下载容器 docker pull centos

[root@node01 ~]# docker pull centos

docker images 命令查看
在这里插入图片描述
注意:下载以后内部的centos和外部的centos不一样

2. 运行容器 docker run -it centos /bin/bash 退出容器 1. exit / 2. ctrl+p+q 容器不停止退出

docker run [可选参数] image

#参数说明
--name="名字"           指定容器名字 ,用来区分容器
-d                     后台方式运行
-it                    使用后台交互方式运行,进入容器查看内容
-p                     指定容器的端口 -p 8080:8080
(
    -p ip:主机端口:容器端口  配置主机端口映射到容器端口
    -p 主机端口:容器端口(常用)
    -p 容器端口
)
-P                     随机指定端口(大写的P)

#例:
[root@node01 ~]# docker run -it centos /bin/bash  启动并且进入容器
[root@459b46f39369 /]#   这里主机名 node01变成了容器ID
[root@459b46f39369 /]# ls  (和我们服务器目录一样,可以说就是一个小型的服务器)查看内部centos
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

#例子:
-d 后台方式 和 --name命名  -p端口
[root@node01 ~]# docker run -d --name nginx01 -p 3344:80 nginx

注意:
#docker容器后台运行,必须要有一个前台的进程,否则会自动停止

[root@459b46f39369 /]# exit
exit
[root@node01 ~]# 

3. 列出运行过的容器 docker ps

[root@node01 /]# docker ps 
     # 列出当前正在运行的容器
-a   # 列出正在运行的容器+历史运行的容器(容器记录)
-n=? # 显示最近创建的n个容器
-q   # 只显示容器的编号

[root@node01 ~]# docker ps -a   #列出所有容器的运行记录
CONTAINER ID   IMAGE          COMMAND       CREATED          STATUS                     PORTS     NAMES
459b46f39369   centos         "/bin/bash"   14 minutes ago   Exited (0) 4 minutes ago             cranky_almeida
2e8ab39c827e   feb5d9fea6a5   "/hello"      3 hours ago      Exited (0) 3 hours ago               fervent_williams
13fcfc4eb690   feb5d9fea6a5   "/hello"      16 hours ago     Exited (0) 16 hours ago              elastic_ardinghelli

[root@node01 ~]# docker ps  #列出当前正在运行的容器
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

[root@node01 ~]# docker ps -n=1  #显示最近创建的n个容器
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS                      PORTS     NAMES
459b46f39369   centos    "/bin/bash"   19 minutes ago   Exited (0) 10 minutes ago             cranky_almeida

4. 删除容器 docker rm 容器id


[root@node01 ~]# docker rm 459b46f39369     #不能删除正在运行的容器 但是可以使用参数 -f强制删除
[root@node01 ~]# docker rm -f $(docker ps -aq)  #删除所有容器
[root@node01 ~]# docker ps -a -q|xargs docker rm #删除所有的容器

5. 启动和停止容器

docker start 容器id          #启动容器
docker restart 容器id        #重启容器
docker stop 容器id           #停止当前运行的容器
docker kill 容器id           #强制停止当前容器

6. 其它常用命令

后台启动容器

[root@node01 ~]# docker run -d centos
  1. 显示日志 docker logs -f -t --tail 数量 容器id

-tf 容器id (查询全部日志)
–tail number 容器id number 为要显示的日志条数 (查询10条日志)
为了更好的测试显示日志命令,可以先执行下列命令,让容器一直保持启动运行状态,

#编写shell脚本循环执行,使得centos容器保持运行状态
[root@iZwz99sm8v95sckz8bd2c4Z ~]# docker run -d centos /bin/sh -c "while true;do echo hi;sleep 5;done"
[root@node01 ~]# docker logs -f -t --tail 10 3db6a6d202a3  查询10条  (可以把t 和 f放在一起写)

[root@node01 ~]# docker logs -tf 3db6a6d202a3  查询全部
  1. 查看容器中进程的信息 docker top 容器id
[root@node01 ~]# docker top f684d5c9cbec 
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                3976                3955                0                   08:47               pts/0               00:00:00            /bin/bash
  1. 查看镜像的元数据 docker inspect 容器id
[root@node01 ~]# docker inspect f684d5c9cbec
  1. 进入当前正在运行的容器

因为通常我们的容器都是使用后台方式来运行的,有时需要进入容器,修改一些配置
方式一:
docker exec -it 容器id bashShell ( 进入容器中开启一个新的终端,可以在里面操作(常用))
方式二:
docker attach 容器id ( 进入容器正在执行的终端,不会启动新的进程 )

#测试 docker exec -it 容器id  bashShell:
[root@node01 ~]# docker exec -it f684d5c9cbec /bin/bash
[root@f684d5c9cbec /]# ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 00:47 pts/0    00:00:00 /bin/bash
root        16     0  0 01:14 pts/1    00:00:00 /bin/bash
root        30    16  0 01:15 pts/1    00:00:00 ps -ef

[root@node01 ~]# docker attach  f684d5c9cbec
  1. 拷贝容器的文件到主机中

docker cp 容器id:容器内路径 目的主机路径

[root@node01 ~]# docker cp f0424f0cf5ab:/test.java /etc/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值