docker 使用总结
1.docker说明
docker是一个轻量级的虚拟化技术,类似于虚拟机的作用,却比虚拟机更加的轻便,可同时开启的数量也更多,这也就奠定了他拥有更加广阔的空间。
1.1 docker的组成
1)image镜像
镜像是一些打包好的已有的环境,可以被用来启动和创建容器,本身不能被直接修改。比如,一个镜像可以包含一个完整的centos,里面仅安装apache或用户的其他应用,镜像可以用来创建docker容器,另外docker提供了一个很简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接从其他人那里下载一个已经做好的镜像来直接使用
2)container容器
容器是镜像的实例化,是可以修改的,但是都是临时修改。docker利用容器来运行应用,容器是从镜像创建的运行实例,它可以被启动,开始、停止、删除、每个容器都是互相隔离的,保证安全的平台,可以把容器看做是简易版的linux环境(包括root用户权限、镜像空间、用户空间和网络空间等)和运行再其中的应用程序
3)repostory仓库
仓库是集中存储镜像文件的地方,registry是仓库主从服务器,实际上参考注册服务器上存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)
仓库分为两种,公有参考,和私有仓库,最大的公开仓库是docker Hub,存放了数量庞大的镜像供用户下载
2.Docker 常用命令
1)、普通指令
启动 Docker
sudo systemctl start docker
停止 Docker
sudo systemctl stop docker
普通重启 Docker
sudo systemctl restart docker
修改配置后重启 Docker
sudo systemctl daemon-reload sudo systemctl restart docker
查看版本
docker version
查看Docker 信息
docker info
Docker 帮助
docker --help
2)、镜像命令
列出本机Docker上已经安装的镜像:
docker images
搜索Docker hub上面的镜像
# 普通搜索,以Tomcat为例 docker search tomcat # 搜索star大于50的镜像实例 docker search -s 50 tomcat
从Docker Hub上面下载镜像
# 以下载tomcat为例 docker pull tomcat[:version]
删除本地的某一个镜像
# 以删除tomcat为例 docker rmi tomcat[:version] # 通过镜像ID删除 docker rmi -f 镜像ID # 通过镜像ID删除多个 docker rmi -f 镜像名1:TAG 镜像名2:TAG # 删除全部 # docker images -qa : 获取所有镜像ID docker rmi -f $(docker images -qa)
镜像打包与运行
#打包一个我们自己的 tomcat docker commit -a jianghai -m="package my tomcat" 要打包的镜像ID jianghai/tomcat:1.0 # -a : 作者名称 # -m : 打包信息 #启动我们自己打包生成的 tomcat docker run -it -p 7700:8080 jianghai/tomcat:1.0
3)、容器命令
启动容器
# 新建并进入容器,最后一个为本地容器的ID docker run -it --name="rivercentos001" 9f38484d220f # 为容器启一个名称 -name="新容器名称" # 后台运行容器,并返回容器ID,也就是启动守护士容器 -d # 以交互模式运行容器,通常与-t同时使用. -i # 为容器重新分配一个伪终端,通过与-i同时使用 -t # 随机端口映射 [大写P] -P # 端口映射 [小写P] -p # 数据卷 加参数 ro:容器内的目录只读,不可写 -v /宿主机绝对路径目录:/容器内目录[:ro] 镜像名
查看当前正在运行的Docker 容器
docker ps # 参数 # 列出当前正在运行的以及历史上运行过的 -a # 显示最近创建的容器 -l # 显示最近创建的N个容器 -n # 静默模式,只显示容器编号 -q # 不截断输出 --no-trunc
退出容器
# 退出并停止 exit # 容器不停止退出 ctrl+P+Q
启动容器
docker start 容器ID或容器name
重启容器
docker restart 容器ID或容器name
停止
docker stop 容器ID或容器name
强制停止
docker kill 容器ID或容器name
删除容器
# 删除已经停止的容器 docker rm 容器ID或容器name # 强制删除已经停止或正在运行的容器 docker rm -f 容器ID或容器name 一次性删除所有正在运行的容器 docker rm -f $(docker ps -qa)
重新进入容器
# 第一种方式 docker attach 容器ID或容器名称 # 第二种方式{隔山打牛式,在宿主机向容器发送命令并获取结果} docker exec -t 容器ID或容器名称 ls# 列出文件列表# 交互docker exec -it rivertomcat /bin/bash
从容器内拷贝文件到宿主机
docker cp 容器ID或容器名称:/文件路径与文件名 宿主机地址 # 例,拷贝容器river的aaa文件夹下的a.txt到宿主机的当前位置 docker cp river:/aaa/a.txt .
4)、日志命令
docker logs -f -t --tail 10 容器ID或容器名称
# 加入的时间戳
-t
# 跟随最新的日志打印
-f
# 输出最后几行的日志
--tail 行数
# 启动一个centos,并且每两秒在Console输出一个Hello jianghai
docker run -d --name river centos /bin/sh -c "while true;do echo hello jianghai;sleep 2;done"
# 查看最后10行的日志
docker logs -f -t --tail 10 river
#查看容器内的进程
docker top 容器ID或容器名称