Docker常用命令
帮助命令
# 显示Docker的版本信息
docker version
# 显示Docker的系统信息,包括镜像和容器的数量
docker info
# 帮助命令
docker -- help
镜像命令
Docker images 查看所有本地主机上的镜像
# 解释
REPOSITORY 镜像的仓库源
TAG 镜像的标签
IMAGE ID 镜像的ID
CREATED 镜像的创建时间
SIZE 镜像的大小
# 可选项
-a, --all 列出所有镜像
-q, --quiet 只显示镜像的ID
Docker search 搜索镜像
# 搜索mysql镜像
docker search mysql
# 可选项
--filter=STARS=3000
# 搜索出来的镜像就是STARS大于3000的镜像
docker search mysql --filter=STARS=3000
Docker pull 下载镜像
# 下载mysql镜像 docker pull镜像名[:tag] 不写tag,默认就是latest
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)
容器命令
说明:我们有了镜像才可以创建容器,Linux,下载一个Centos镜像来测试学习
docker pull centos
新建容器并启动
docker run [可选参数] images
# 参数说明
--name="name" 容器名字 用来区分容器
-d 后台方式运行
-it 使用交互方式运行,进入容器查看内容
-P 指定容器的端口 -P 8080:8080
-p ip:主机端口:容器端口
-p 主机端口:容器端口(常用)
-p 随机指定端口
# 测试
docker run -it centos /bin/bash
# 从容器中退出主机
exit
列出所有的运行的容器
# docker ps 命令
列出当前正在运行的容器
-a 列出当前正在运行的容器+带出历史运行过的容器
-n=? 显示最近创建的容器
-q 只显示容器的编号
退出容器
# 直接停止容器并退出
exit
# 容器不停止退出
Ctrl + P + Q
删除容器
docker rm 容器id # 删除容器,不能删除正在运行中的容器,如果要强制删除 rm -f
docker rm -f $(docker ps -a) # 删除所有的容器
docker ps -a -q | xargs docker rm # 删除所有的容器
启动和停止容器的操作
# 启动容器
docker start 容器id
# 重启容器
docker restart 容器id
# 停止当前正在运行的容器
docker stop 容器id
# 强制停止当前容器
docker kill 容器id
常用的其他命令
后台启动容器
# 命令 docker run -d 镜像名
docker run -d centos
# 问题docker ps,发现centos停止了
# 常见的坑,docker容器使用后台运行,就必须要有一个前台进程,docker发现没有应用,就会自动停止
# nginx,容器启动后,发现在即没有提供服务,就会立即停止,就是没有程序了
查看日志命令
docker logs -f -t --tail 容器id
# shell脚本
docker run -d centos /bin/bash -c "whil ture;do echo hella;sleep 1;done"
# 显示日志
-tf # 显示日志
--tail number # 要显示日志的条数
docker logs -tf --tail 10 容器id
查看容器中的进程信息
docker top 容器id
查看容器的元数据
docker inspect 容器id
进入当前正在运行的容器
# 我们的容器通常都是使用后台方式运行的,需要进入容器修改一些配置
# 命令
docker exec -it 容器id /bin/bash
# 方式二
docker attach 容器id
# 区别
docker exec 进入容器后开启一个新的终端,可以在里面操作
docker attact 进入容器正在执行的终端,不会启动新的终端
从容器拷贝文件到主机上面
docker cp 容器id:容器内路径+文件名 目的地的主机路径+文件名
从主机拷贝文件到容器上面
docker cp 主机路径+文件名 容器id:容器内路径+文件名
安装Nginx
Docker安装Nginx
# 1、搜索镜像
docker search nginx
# 2、下载镜像
docker pull nginx
# 3、运行测试
docker run -d --name nginx01 -p 3344:80 nginx
curl localhost:3344
安装Tomcat
# 启动运行
docker run -d -p 3355:8080 --name tomcat01 tomcat
# 测试访问没有权限
# 进入容器
docker exec -it tomcat01 /bin/bash
# 发现问题
# 1、Linux命令少了
# 2、没有webapps。阿里云镜像的原因,默认是最小的镜像,所有不必要的都删除掉,保证最小可运行环境
思考问题:我们以后要部署项目,如果每次都要进入进入容器是不是十分麻烦?我要是可以在容器外部提供一个映射路径,webapps,我们在外部放置项目,就自动同步到内部就好了!
部署es+kibana
# ES暴露的端口很多
# ES十分耗内存
# ES的数据一般需要放置到安全目录!挂在
# --net somenetwork 网络配置
# qidong elasticsearch
docker run -d --name elasticearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.6.2
Docker容器打包
# 将运行中的容器保存为镜像,保存后docker images可以查看
docker commit 容器ID 镜像名字:tag
# 将镜像打包为.tar文件,默认保存在当前目录
docker save -o 文件名.tar 镜像名:tag
# 从tar包导入镜像
docker load -i tar文件名.tar
# 查看镜像
docker images