1、帮助命令
查看docker的版本信息
docker version
查看docker信息,比version更全
docker info
查看docker的命令用法
docker --help
2、镜像命令
docker images
查看本机所有镜像
docker images
对应options
-a 列出本地所有的镜像,包含中间映像层
-q 只显示镜像id
--digests 显示镜像的摘要信息
--no-trunc 显示完整的镜像信息
docker search
罗列远程仓库(https://hub.docker.com)中所有对应的镜像,stars数越大越稳定
docker search 镜像名称 eg:docker search tomcat
对应options
--no-trunc 显示完整的镜像描述
-s num 列出stars(点赞数)大于等于num的镜像
--automated 只列出automated build类型的镜像
docker pull
去远程仓库下载镜像
docker pull 镜像名称[:TAG] 可以指定对应的版本(TAG)下载
eg: docker pull tomcat 等价于 docker pull tomcat:laster 不指定tag则默认为最新版本laster
docker rmi
删除指定的镜像
docker rmi 镜像名/镜像ID[:TAG] 可以指定对应的版本(TAG)删除
对应options
-f 强制删除,如果不加的话,镜像在使用的时候不能删除
eg: docker rmi -f 镜像名/镜像ID
备注:上面只能删除单个镜像,如果要删除多个镜像,只需要再接镜像名或ID, docker rmi -f 镜像1名/镜像1ID 镜像2名/镜像2ID ...
删除多个
eg: docker rmi -f $(docker images -qa)
3、容器命令
docker run
运行images,创建一个容器
eg:
docker pull centos 拉一个centos镜像
docker images 找到imagesid
docker run -it 1e1148e4cc2c 以交互的方式运行对应的images
options:
--name 指定一个容器名称
-d 后台运行容器,并返回容器ID,即启动守护式容器
-i 以交互模式运行容器,通常与-t同时使用
-t 为容器重新分配一个伪输入中断,通常与-i同时使用
-P 随机端口映射
-p 指定端口映射,有以下四种格式
ip:hostport:containerport
ip::containerport
hostport:containerport 常用
containerport
docker ps
docker ps 查看当前正在运行的容器(例如Linux 的ps命令 ,查看当前运行的进程)
options:
-a 列出当前所有正在运行的容器+历史运行过的容器
-l 显示最近一个创建的容器
-n 显示最近n个创建的容器 eg:docker ps -n 3
-q 静默模式,只显示容器ID
--no-trunc 不截断输出(显示完整ID)
退出容器
有两种方式
--容器停止退出
exit
--容器不停止退出
ctrl+P+Q
启动容器
docker start 容器ID/容器名
启动容器后,会返回容器ID/容器名(必须是已经被创建,但是已经停止的容器)
重启容器
docker restart 容器ID/容器名
重启容器后,会返回容器ID/容器名
停止容器
docker stop 容器ID/容器名
停止容器后,会返回容器ID/容器名
强制停止容器
docker kill 容器ID/容器名
强制停止容器后,会返回容器ID/容器名
相当于直接拔电源,电脑一下子就关机了,不像stop温柔,等待所有东西关闭
删除容器
docker rm 容器ID 删除停止运行的容器并返回容器ID
但是无法删除正在运行的容器
options:
-f 强制删除正在运行的容器 eg:docker rm -f 容器ID
一次性删除所有的容器
eg: docker rm $(docker ps -l)
查看容器日志
创建例子
docker run -d imagesID 以后台进程的方式运行容器,由于什么都没干,docker默认的机制是将没做事的容器kill掉,所以此时使用docker ps 查看不到UP状态的对应容器
docker run -d 1e1148e4cc2c /bin/sh -c "while true;do echo hello cwq;sleep 2;done"
通过shell脚本,使得该容器每2秒打印一次日志,这样容器就不会被docker 杀死了
这时候我们可以通过docker logs来查看日志,如下:
docker logs 容器ID 查看对应容器打印出来的日志
options:
-t 日志打印时间戳
-f 动态打印最新的日志记录
--tail 动态打印最后的n行日志记录
eg:docker logs -t -f --tail 3 0daa61c78ac9 每次打印最后3行日志记录
查看容器内运行的进程
docker top 容器ID
查看容器内部细节
docker inspect 容器ID
重新进入容器并以命令行交互
docker exec -it 容器ID 操作命令
eg:docker exec -t 1e07933a5dcb ls //在容器中执行ls命令, -t代表交互,不用进入容器中执行
注:docker exec -t 1e07933a5dcb /bin/bash 跟 docker attach 1e07933a5dcb 的效果是一样的,exec 后面执行的是/bin/bash,则是进入容器
[root@rocketmq-nameserver1 ~]# docker exec -t 1e07933a5dcb ls
anaconda-post.log dev home lib64 mnt proc run srv tmp var
bin etc lib media opt root sbin sys usr
docker attach 容器ID //重新进入容器交互界面
eg:docker attach 1e07933a5dcb
两者区别
1、attach 直接进入容器启动命令的终端,不会启动新的进程
2、exec 是在容器中打开新的终端,并且可以启动新的进程
将容器中的文件复制到主机
docker cp 容器ID:文件及对应的路径 主机的路径(存储位置)
eg:
[root@rocketmq-nameserver1 tmp]# docker cp 1e07933a5dcb:anaconda-post.log /tmp
[root@rocketmq-nameserver1 tmp]# ls
anaconda-post.lo
导出容器 :
sudo docker export containerid >aaa.tar
sudo docker save IMAGEID > aaa.tar
docker volume 介绍:
https://itbilu.com/linux/docker/4kiHC33_G.html
https://www.cnblogs.com/ivictor/p/4834864.html
https://www.cnblogs.com/kevingrace/p/6238195.html
http://dockone.io/article/129
容器共享volume :
sudo docker run --name my_container -v /some/path ...
sudo docker run --volumes-from my_container --name my_container2 ...
sudo docker run --name doserver -v /tmp/volume:/tmp/volume -d domain_server:base
sudo docker run --volumes-from doserver --name do-client -d doclient:base
# 上面的命令将告诉Docker从第一个容器挂载相同的Volume到第二个容器,它可以在两个容器之间共享数据。