文章目录

  • Docker常用命令
  • 帮助命令
  • 镜像命令
  • 容器命令
  • 常用的其它命令⭐
  • 小结


Docker常用命令

参考官网

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

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

[root@localhost /]# docker images 
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
hello-world   latest    bf756fb1ae65   11 months ago   13.3kB

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

#可选项
-a, --all   #列出所有的镜像
-q, --quiet #只显示镜像的id

docker search 镜像搜索

#可选项,通过收藏来过滤
--filter=STARS=3000 #搜索出来的镜像的收藏数是大于3000的

docker pull 下载镜像

#下载镜像 docker pull 镜像名[:tag]
若不加版本号默认下载最新版本
docker pull mysql
加版本号
docker image mysql:5.7

docker rmi 删除镜像

docker rmi -f 镜像id # 删除指定的镜像
docker rmi -f 镜像id 镜像id 镜像id # 删除多个镜像
docker rmi -f $(docker image -aq) #删除全部的镜像
容器命令

说明:我们有了镜像才可以创建容器,linux,下载一个centos镜像来测试学习

docker pull centos

新建容器并启动

docker run [可选参数] image

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


#测试,启动并进入容器
[root@localhost /]# docker run -it centos /bin/bash
[root@c6b64bddbb8c /]# ls  #查看容器内的centos,基础版本,很多命令不完善
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

#从容器中退回主机
[root@c6b64bddbb8c /]# exit  
exit
[root@localhost /]# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@localhost /]#

列出所有正在运行的容器

docker ps     #查看正在运行的容器
-a            #列出当前正在运行的容器+历史运行过的容器
-n=?          #显示最近创建的容器
-q            #只显示容器的编号

退出容器

exit  #直接容器停止并退出
ctrl+P+Q #容器不停止退出

删除容器

docker rm 容器id  #删除指定容器,不能删除正在运行的容器,如果要强制删除则用rm -f
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 镜像名
[root@localhost /]# docker run -d centos

# 问题docker ps,发现centos停止了
#常见的坑:docker 容器使用后台运行,就必须要有一个前台进程,docker发现没有应用,就会自动停止
#例如在docker容器中装了一个nginx,将该容器启动后发现自己并没有提供服务,就会立刻停止

查看日志

docker logs  -f -t --tail number 容器id

#自己编写一段shell脚本
[root@localhost /]# docker run -d centos /bin/sh -c "while true;do echo zlw;sleep 1;done"
865ae2720b00c7b4959f1a923912a6409204054d3aac5625dc748bc26c5b08be
[root@localhost /]# docker ps
CONTAINER ID   IMAGE           
865ae2720b00   centos    

#显示日志
-tf      #显示日志
--tail number  #要显示日志条数
[root@localhost /]# docker logs -tf --tail 5 865ae2720b00

查看容器中的进程信息

top命令
[root@localhost /]# docker top 865ae2720b00
UID                 PID                 PPID                C                   STIME     
root                5084                5064                0                   21:53                        
root                5616                5084                0                   22:00

查看容器的元数据
用于查看容器的详细信息(挂载,网络等)

#命令
docker inspect 容器id
#测试
[root@localhost /]# docker inspect 865ae2720b00

进入当前正在运行的容器

#我们通常容器都是使用后台方式运行的,需进入容器,修改一些配置

#命令
docker exec -it 容器id bashShell

#测试
[root@localhost /]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS     NAMES
865ae2720b00   centos    "/bin/sh -c 'while t…"   18 minutes ago   Up 18 minutes             competent_elbakyan
[root@localhost /]# docker exec -it 865ae2720b00 /bin/bash
[root@865ae2720b00 /]# ps -ef
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0 13:53 ?        00:00:00 /bin/sh -c while true;do echo zlw;sleep 1;done
root       1173      0  0 14:12 pts/0    00:00:00 /bin/bash
root       1192      1  0 14:12 ?        00:00:00 /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 1
root       1193   1173  0 14:12 pts/0    00:00:00 ps -ef


#方式二
docker attach 容器id

#测试
docker attach 865ae2720b00
正在执行当前的代码

#docker exec   #进入容器后开启一个新的终端,可以在里面操作(常用)
#docker attach #进入容器正在执行的终端,不会启动新的进程

从容器内拷贝文件到主机

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

#查看运行的容器
[root@localhost home]# docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED              STATUS              PORTS     NAMES
912c9ac7851b   centos    "/bin/bash"   About a minute ago   Up About a minute             sad_snyder
#进入docker容器内部
[root@localhost home]# docker attach 912c9ac7851b
[root@912c9ac7851b /]# cd /home
#在容器内创建一个文件
[root@912c9ac7851b home]# touch zlw.java
[root@912c9ac7851b home]# ls
zlw.java
#退出容器,退出容器并不影响里面的数据,因此即便不运行也可以将容器内的文件拷贝到主机
[root@912c9ac7851b home]#exit
[root@localhost home]# docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED         STATUS         PORTS     NAMES
912c9ac7851b   centos    "/bin/bash"   2 minutes ago   Up 2 minutes             sad_snyder
#将文件拷贝出来到主机上
[root@localhost home]# docker cp 912c9ac7851b:/home/zlw.java /home
[root@localhost home]# ls
zl.java  zlw.java

#拷贝是一个手动过程,未来我们使用 -v 卷的技术,可以实现同步文件
小结

docker logs error 输出_docker