Docker
1. 概述
1.1 为什么
我的代码在我的机子上能跑,在你的机子上竟然崩了!!!docker解决这个问题!
1.2 是什么
通过docker直接把运行环境打包且跨平台。隔离是docker的核心思想。
1.3 怎么做
通过Docker Engine 直接使用宿主机的内核,相比虚拟机少了一层Guest OS的抽象层,所以占用空间少。
2. 常用命令
官方命令地址:docker login | Docker Documentation
docker verison # 显示docker的版本信息
docker info # 显示docker的系统信息,包括镜像和容器的数量
docker 命令 --help #万能命令
2.1 搜索
docker search
docker search mysql --filter=STARS=3000
2.2 拉取
docker pull
# docker pull 镜像名字:tag
# 如果不写tag就下载最新的 latest
#
2.3 运行
docker run [可选参数] image
--name="name" #名字
-d #后台运行
-it #交互方式进行
-p 指定容器的端口, -p 8080:8080
-P 随机指定端口
2.4 列出容器
docker ps 正在运行
-a 正在运行+历史运行
2.5 退出容器
exit #直接退出容器并停止
Ctrl + P + Q #容器不停止退出
2.6 删除容器
docker rm id #镜像是rmi
docker rm -f $(docker ps -aq)
2.7 停止容器
docker stop id
docker kill id
docker start id
docker restart id
2.8 查看内部信息
docker top id # 查看内部信息
2.9 常用其他命令
2.9.1 后台启动命令
docker run -d centos
# 问题docker ps 如果退出会停止,容器使用后台进程,容器中必须要有一个进程在跑着,不然就自动停了。
2.9.2 查看日志
docker logs -ft --tail 10 容器id #查看id容器的日志,且一开始打印最新的10条log(如果还有新日志,会一直增加显示新日志)
docker inspect 容器id # 查看容器信息
2.9.3 进入当前容器
docker exec -it 容器id /bin/bash # 进入容器后开启新的终端,可以在里面操作(常用)
docker attach 容器id # 进入容器正在执行的终端,不会启动新的进程
2.9.4 容器内的文件拷贝到机子上
# 进入容器后!!!
docker cp 容器id:/dir/XXX.java /home