form1.cn
Make a little progress every day

docker常用命令整理

17th of June 2021 Linux Command 2089

零、帮助命令

docker version  # 显示docker的版本信息
docker info  # 显示docker 的系统信息,包括镜像和容器的数量
docker [命令名称] --help  # 帮助命令


一、镜像命令

docker images   # 查看镜像
docker images --help   # 查看后面可选参数
docker images -a   # 列出所有镜像
docker images -q   # 只显示镜像 id
docker search   # 搜索镜像
docker search mysql --filter=STARS=3000   # 搜索收藏数大于 3000 的镜像
docker pull   # 下载镜像
docker pull mysql   # 下载最新版镜像
docker pull mysql:5.7   # 下载指定版本镜像
docker rmi   # 删除镜像
docker rmi -f 镜像id                 #删除指定容器
docker rmi -f 镜像id 镜像id 镜像id    #删除多个镜像
docker rmi -f $(docker images -aq)  #删除全部镜像


二、容器命令

1、先创建一个linux centos 的容器

docker pull centos


2、新建容器并启动

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

docker run -d -p 3344:80 --name nginx01 nginx   # 例 启动一个nginx的容器


3、列出所有的运行容器

docker ps #列出所有正在运行的容器
-a      #列出当前正在运行的容器,附带显示历史运行的容器
-n=?     #显示最近创建的容器
-q      #只显示容器的编号


4、退出容器

exit       #停止运行容器并退出
Ctrl + P + Q  #容器不停止退出


5、删除容器

docker rm 容器 id             #删除指定的容器
docker rm -f $(docker ps -aq)   #删除所有的容器
docker ps -a -q|xargs docker rm   #删除所有的容器


6、启动和停止容器的操作

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


三、常用其他命令

1、后台启动容器

docker run -d 镜像名
#docker run -d centos
#问题:docker ps后,发现 centos 停止了
#常见的坑,docker 容器使用后台运行,就必须要有要一个前台进程,如果前台没有应用,就会自动停止
#例如 Nginx 容器启动后,发现自己没有提供服务,会立刻停止


2、查看日志

docker logs -f -t --tail 数量 容器 #没有日志
#自己编写一段 shell 脚本
docker run -d centos /bin/sh -c "while true;do echo duty;sleep 1;done"
#显示日志
-tf            #显示日志
--tail number  #要显示的日志数
docker logs -tf --tail 10 d83f235d0a49


3、查看容器中进程信息

docker top 容器ID


4、查看镜像的元数据

docker inspect 容器id


5、进入当前正在运行的容器

#容器通常使用后台方式运行,需要进入容器,修改一些配置
#方式一
docker exec -it 容器ID bashShell
docker exec -it d83f235d0a49 /bin/bash
ps -ef #centos中查看进程信息
#方式二
docker attach 容器id
#区别
docker exec      #进入容器后开启一个新的终端,可以在里面操作(常用)
docker attach    #进入容器正在执行的终端,不会启动新的进程


6、从容器内拷贝文件到主机上 或 从主机拷贝文件到容器中

#从容器内拷贝文件到主机上 
docker cp 容器id:容器内路径 目的主机路径
#例子
docker cp 961e906713be:/home/test.java /home

# 从主机拷贝文件到容器中
docker cp 目的主机路径 容器id:容器内路径
#例子
docker cp  /home 961e906713be:/home/test.java

#拷贝是一个手动过程,使用 -v 卷技术可以实现自动同步


7、查看容器占用CPU和内存

docker stats


四、commit镜像

# 命令用法
docker commit -m="描述信息" -a="作者名称" 容器ID 目前镜像名称:[TAG 版本号]
docker commit -m="add webapps" -a="zjwlgr" cfbf032173e4 tomcat01:1.0

# 之后查看本地镜像会多一个tomcat01  TAG 1.0 的镜像,然后启动它
docker run -d -p 8080:8080 --name tomcat02 tomcat01:1.0