官方命令帮助地址:https://docs.docker.com/reference/
帮助命令
docker version #显示docker的版本信息
docker info #显示docker的系统信息,包括镜像和容器的信息
docker 命令 --help #docker帮助信息
镜像命令
docker images 查看本地的主机上的镜像
[root@myboy ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql 5.7 a4fdfd462add 2 weeks ago 448MB
hello-world latest bf756fb1ae65 5 months ago 13.3kB
# 解释
REPOSITORY 镜像的仓库源
TAG 镜像的标签
IMAGE ID 镜像的id
CREATED 镜像的创建时间
SIZE 镜像的大小
# 参数
Options:
-a, --all 显示所有镜像
-q, --quiet 只显示镜像的id
# 使用
[root@myboy ~]# docker images -a
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql 5.7 a4fdfd462add 2 weeks ago 448MB
hello-world latest bf756fb1ae65 5 months ago 13.3kB
[root@myboy ~]# docker images -aq
a4fdfd462add
bf756fb1ae65
docker search 搜索镜像
docker search 镜像名 #搜索镜像
#参数
--filter=START=3000 搜索stars数大于3000的镜像
#例子
docker search mysql --filter=STARS=3000 #搜索star数大于3000的mysql镜像
docker pull 下载镜像
docker pull 镜像名 #下载最新版镜像
docker pull 镜像名:tag #下载指定版本的镜像
docker rmi 删除镜像
docker rmi -f 镜像id #删除指定镜像
docker rmi -f 镜像id1,镜像id2 #同时删除多个指定镜像
docker rmi -f $(docker images -qa) #删除所有镜像
容器命令
说明:我们有了镜像才可以创建容器,下载一个centos镜像来测试学习
docker pull centos
新建容器并启动
docker run [可选参数] 镜像ID
#参数说明
--name="Name" 容器名字 tomcat01 tomcat02,用来区分容器
-d 后台方式运行
-it 使用交互方式运行,进入容器查看内容
-p(小写) 指定容器的端口 -p 8080:8080
-p ip:主机端口:容器端口
-p 主机端口:容器端口(常用)
-p 容器端口
-P(大写) 随机指定端口
#测试,启动并进入容器
[root@myboy ~]# docker run -it centos /bin/bash
[root@cee9f4b704bb /]# ls #查看容器中的目录
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
[root@cee9f4b704bb /]# exit #从容器中退回主机
exit
列出所有运行的容器
#命令
docker ps #列出当前正在运行的容器
#参数
-a #列出正在运行的容器+之前运行过的容器
-a -n=k #列出最近创建的k个容器
-q #只显示容器id
#测试
[root@myboy ~]# docker ps -a -n=1 #显示最近1个容器
[root@myboy ~]# docker ps -aq #只显示所有容器id
退出容器
exit #退出并停止容器
ctrl + P + Q #退出容器不停止
删除容器
docker rm 容器id #删除指定容器,不能删除正在运行的容器
docker rm -f 容器id #强制删除指定容器,可以删除正在运行的容器
rocker rm -f $(docker ps -aq) #删除所有容器,包括正在运行的容器
docker ps -aq | xargs docker rm #删除所有容器
启动和停止容器
docker start 容器id #启动和停止容器
docker restart 容器id #重启容器
docker stop 容器id #停止当前正在运行的容器
docker kill 容器id #强制停止当前容器
常用其他命令
后台启动容器
[root@myboy ~]# docker run -d centos #后台启动镜像
通过docker ps 查看进程发现镜像停止了
原因:docker容器使用后台运行,就必须有一个前台进程,docker发现没有应用,就会自动停止
查看日志
[root@myboy ~]# docker logs --help
Options:
-f, --follow 实时跟踪
--since string 从何时之后的日志,如 2013-01-02T13:23:37
--tail string 从末尾数第几行日志
-t, --timestamps 显示时间戳
--until string 从何时之前的日志
#实例
[root@myboy ~]# docker logs -f -t --tail 10 f8198cbef3e8 #实时跟踪末尾第10条日志
#模拟日志输出,后台不断打印
[root@myboy ~]# docker run -d centos bin/bash -c "while true;do echo kuangshen;sleep 1;done"
[root@myboy ~]# docker logs -ft --tail 10 a1aadf1c3c5e #查看日志
查看容器中进程的信息
#命令
docker top 容器id
#实例
[root@myboy ~]# docker top a1aadf1c3c5e
UID PID PPID C STIME TTY TIME CMD
root 10363 10346 0 21:26
root 10446 10363 0 21:27
查看容器的元数据
#命令
docker inspect a1aadf1c3c5e
#作用:查看容器的详细信息
[root@myboy ~]# docker inspect a1aadf1c3c5e
[
{
"Id": "a1aadf1c3c5e625c98c4279af2db77fe0c579dd27e32ad7e2c643cc5e03f9dbe",
"Created": "2020-06-08T13:20:31.535615378Z",
"Path": "bin/bash",
"Args": [ #参数
"-c",
"while true;do echo kuangshen;sleep 1;done"
], #状态
"State": {
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 10363,
"ExitCode": 0,
"Error": "",
"StartedAt": "2020-06-08T13:26:55.504671216Z",
"FinishedAt": "2020-06-08T13:24:09.766309911Z"
},
...
]
进入当前正在运行的容器
#我们通常容器都是使用后台方式运行的,我们可以通过命令进入后台运行中的容器
#方式一 开启新的终端
docker exec -it 容器id /bin/bash
#方式二 进入正在执行的终端
docker attach 容器id
从容器内拷贝文件到终端
#命令
docker cp 容器id:容器内路径 容器外路径
#该命令可以在容器停止运行状态下使用,因此容器停止了,数据还是存在的
#实例
[root@myboy ~]# docker attach 3c8482aafaf7
[root@3c8482aafaf7 /]# cd /home
[root@3c8482aafaf7 home]# ls
[root@3c8482aafaf7 home]# touch text.java
[root@myboy ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED
3c8482aafaf7 centos "/bin/bash" About a minute ago
[root@myboy ~]# docker cp 3c8482aafaf7:/home/text.java /home
[root@myboy ~]# cd /home
[root@myboy home]# ls
text.java
小结
version #查看docker版本信息
info #查看docker详细信息
images #查看所有的本地镜像
search #搜索镜像
stats #查看docker容器占用cpu内存情况
pull #从远程拉去镜像
rmi #删除本地镜像
run #运行docker镜像
rm #删除容器
ps #列出容器列表
start #启动容器
restart #重启容器
stop #停止容器
kill #杀死进程
logs #查看日志
top #查看容器中的进程信息
inspect #查看容器元数据
exec #开启新终端进入正在运行的容器
attach #进入正在运行的容器
cp #从容器内拷贝数据到外部