一、Docker常用命令

Linux下启动docker systemctl start docker

1、帮助命令

  • docker version 查看版本
  • docker info 查看docker详细信息
  • docker --help 查看帮助

    2、 镜像命令

    一个镜像可以生成多个容器实例

1.1 docker images 列出本地的镜像

统一仓库源可以有多个TAG,代表着这个仓库员的不同版本,我们使用 REPOSITORY:TAG来定义不同的镜像 如果你不指定一个镜像的版本标签,例如你只是用 ubuntu,docker将默认使用 ubuntu:latest 镜像

携带参数:
-a 表示全部的(含中间镜像层)
-q 只显示镜像的ID
--digests 显示镜像的详细信息

  1. [root@localhost ~]# docker images
  2. REPOSITORY TAG IMAGE ID CREATED SIZE
  3. hello-world latest d1165f221234 5 weeks ago 13.3kB
  4. 各个选项说明:
  5. - PEPOSITORY:表示镜像的仓库源
  6. - TAG:表示镜像的标签【版本】
  7. - CREATED:镜像创建时间
  8. - SIZE:镜像大小

1.2 **docker search 某个镜像的名字** 查看dockerhub上的镜像

  1. [root@localhost ~]# docker search tomcat
  2. NAME DESCRIPTION STARS OFFICIAL AUTOMATED
  3. tomcat Apache Tomcat is an open source implementati 2991 [OK]
  4. tomee Apache TomEE is an all-Apache Java EE certif 86 [OK]
  5. dordoka/tomcat Ubuntu 14.04, Oracle JDK 8 and Tomcat 8 base 57 [OK]
  6. ...

1.3 docker pull 镜像名字:tag 拉取镜像到本地

tag可省略,默认最新版 latest

  1. [root@localhost ~]# docker pull tomcat
  2. Using default tag: latest
  3. latest: Pulling from library/tomcat
  4. ...
  5. # docker pull tomcat 等价于 docker pull tomcat:latest

1.4 docker rmi 镜像名字 删除镜像

-f 表示强制删除,如果镜像运行了,那么就需要-f 强制删除

删除单个:docker rmi -f 镜像
删除多个:docker rmi -f 镜像名1:tag 镜像名2:tag
删除全部:docker rmi -f ${docker images -qa}

  1. [root@localhost ~]# docker rmi tomcat
  2. Untagged: tomcat:latest
  3. Untagged: tomcat@sha256:62ce5fac47750e5508991c0140d96567c3fb2ab3e096d40d714e7ab3db19a21e
  4. Deleted: sha256:b72e45a11ad98b68b7054db33a1511cee308d5a98418cbe5e51910b9286f6eec
  5. ...

3、容器命令

有镜像才能创建出容器,这是根本前提,提前拉取一个 centos docker pull centos

3.1 dcoker ``[options] ``run``[command][arg] ``镜像名 新建并启动容器

opetions 参数说明:— / -
--name=“容器的新名字”:为容器指定一个名字
-d:后台运行容器,并返回容器ID,也即启动守护式容器

-i:以交互模式运行容器,通常与-t同时使用
-t:为容器重新分配一个伪输入终端,通常与-i同时使用
-P:随机端口映射
-p:指定端口映射,有一下4中方式

  • ip:hostPort:containerPort
  • ip:contrinerPort
  • hostPort:containerPort
  • containerPort

-it 启动交互式容器

  1. [root@localhost ~]# docker run -it centos
  2. [root@4c73b4cef3b3 /]# ls
  3. bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
  4. 进入了docker为我们创建的伪终端 @4c73b4cef3b3

3.2 docker ps [options] 查看docker容器列表

**docker ps** 默认显示当前正在运行的

  • -a:显示所有正在运行的容器+历史上运行过的
  • -l:显示最近创建的容器
  • -n:显示最近n个创建个容器
  • -q:静默模式,只显示容器编号
  1. [root@localhost ~]# docker ps -a
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. 4c73b4cef3b3 centos "/bin/bash" 4 minutes ago Exited (130) 40 seconds ago xenodochial_khayyam
  4. 8bf1414e0265 centos "/bin/bash" 4 minutes ago Exited (130) 4 minutes ago confident_keller
  5. e92d9254ea86 tomcat "catalina.sh run" 5 minutes ago Exited (130) 5 minutes ago goofy_hofstadter
  6. effcaf170748 centos "/bin/bash" 7 minutes ago Exited (0) 7 minutes ago funny_tu
  7. 333f4a151354 centos "/bin/bash" 27 minutes ago Exited (0) 27 minutes ago hardcore_meninsky
  8. eecfd6c66604 d1165f221234 "/hello" 8 hours ago Exited (0) 8 hours ago gifted_sammet

3.3 退出容器

前提是在docker创建的交互式终端中

两种方式:

  • exit:容器停止退出
  • ctrl+p+q:退出容器 但是容器不停止,进行运行
    • 看4.5 小结

3.4 启动容器【启动已经创建的】

docker start 容器id/容器名

3.4 重启容器【重启已经创建的】

docker restart 容器id/容器名

3.5 停止容器

docker stop 容器id/容器名 温柔停止
docker kill 容器id/容器名 强制停止容器【拔电源】

3.6 删除以停止的容器

docker rm 容器ID
-f 强制删除

3.7 一次性删除多个容器

docker rm -f ${docker ps -a -q}
docker ps -a -q | xargs docker rm

4、容器【重要】

4.1 启动守护式容器并返回容器id

docker run ``-d`` centos 启动后查看以运行的docker容器 发现并没有

  1. [root@localhost ~]# docker run -d centos
  2. cbfde531b8fa446b121cd855afabf3e774777536976cbd58f8e17aeb6f42932d
  3. [root@localhost ~]# docker ps
  4. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  5. [root@localhost ~]#
  6. 容器以退出

问题:使用docker run -d centos 后再使用 docker ps 发现容器已退出

很重要的要说明一点:Docker容器后台运行,就必须有一个前台进程
容器运行的命令如果不是哪些一直挂起的命令(比如运行top,tail),就是会自动退出。
所以最佳解决方案是:将你要运行的程序以前台进行的形式进行。

4.2 查看容器日志

容器id可以通过 docker ps 获得

docker logs -f -t --tail 容器id
-t 加入时间戳
-f 不停的追加
--tail 数字 显示最后多少条

4.3 查看容器内运行的进程

容器id可以通过 docker ps 获得

docker top 容器id

4.4 查看容器内部细节

docker inspect 容器ID
以JSON串的形式告诉你容器的全部细节

4.5 进入正在运行的容器,并以命令行交互

这就是之前的 ctrl + p+q 退出容器但是不退出,从这里进去退出来的容器

两种方式:

  • docker exec -it 容器ID bashSell 隔山打牛,bashshell的直接把结果给你 【在外面干活】
  • docker attach 容器ID 进去容器交互式模式 【进去之后在干活】

4.6 从容器内拷贝文件到主机上

docker cp 容器ID:容器内路径 目的主机路径
图像.png