作者Gitee地址 https://gitee.com/thciweicloud
作者项目 面包博客,一个微服务架构的前后端分离博客系统。前后端使用Vue+SpringCloud,鉴权登录使用JWT,使用ElasticSearch作为博客检索引擎,使用ELK进行日志收集,GithubActions完成持续集成和交付
# 查看镜像|搜索|删除 检查版本:docker --version 检查镜像是否生效:docker info 查看镜像:docker images 搜索镜像:docker search mysql:5.7.0 (5.7.0:搜索指定的版本) 列出当前运行的容器:docker ps 删除:docker rmi 容器id/mysql:版本号 强制删除:docker rmi 容器id -f 简写rm也可以 docker rmi -f $(docker images 镜像名 -q) ctrl c 结束一般步骤
docker pull nginx
docker images
docker run -d -p 80:80 --name xx nginx
docker ps
{
docker ps -a 历史运行
docker rm 容器id 可删除历史中的容器
}
docker ps
docker exec -it 容器id /bin/bash 进入容器进行交互
cd /usr/share/nginx/html/
ls
(xxxx index.html)
echo "i love java" > index.html
cat index.html --i love java
docker commit 容器id lovenginx:1.11 上传自己修改的镜像
docker images
docker stop 容器id
docker ps
docker rm $(docker ps -qa) 删除所有运行
docker run -d -p 80:80 容器id 运行自己的镜像,须通过id
docker ps
ctrl insert复制
shift insert 粘贴
容器
一个镜像是一个应用环境
外部指令# 运行容器 启动应用:docker run mysql -d 启动守护式容器(在后台启动容器,不占用窗口) --name 起别名 -p 映射端口:原始端口号 指定端口号启动 -P 随机分配端口 例:不占用窗口并映射访问路径:docker run -d -p 80:80 mysql 自定义名称:docker run -d -p 80:80 --name mynginx nginx # 查看运行容器 查看运行容器:docker ps 显示所有容器:docker ps -a -a 显示正在运行和历史运行 -q 静默模式,只显示容器编号 一起用:docker ps -qa # 停止|关闭 开启容器:docker start 容器名字或者id 重启容器:docker restart 容器名字或者id 结束容器:docker stop 对应的id 立即停止容器:docker kill id # 删除容器 删除容器:docker rm id 强制删除:docker rm id -f 删除所有:docker rm -f $(docker ps -qa) # 删除镜像 docker ps -a 查看容器id docker rmi 容器id ,先删除容器再删除镜像 docker rm -f 镜像id # 挂载文件目录 docker run -d -p 9090:9090 --name prometheus -v linux地址:容器内地址 bitnami/prometheus:latest 如挂载多个使用 作为换行符 --name mysql -v /mydata/mysql/log:/var/log/mysql -v /mydata/mysql/data:/var/lib/mysql # 设置容器自启动 docker update redis --restart=always内部指令
# 查看容器内进程 查看容器内的进程:docker top 容器id或容器name # 查看容器内部细节 查看内部细节:docker inspect 容器id # 查看容器的运行日志 查看日志:docker logs[OPTIONS] 容器id或容器名 -t 加入时间戳 -f 跟随最新的日志打印 --tail 数字 显示最后多少条 例:docker logs -t -f e6a ctrl c 结束进阶命令(容器内数据交互)
linux/windows --》 docker(引擎) --》mynginx(容器)
requires at least xx arguments 至少需要的参数 # 进入容器内部 docker exec 容器id -i 以交互模式运行容器,通常与 -t一起使用 -t 分配一个伪终端 shell窗口 /bin/bash docker exec -it 容器id /bin/bash ls:列出目录文件 # root权限进入 docker exec -u 0 -it 容器名 /bin/bash # 查看修改容器内软件配置 查看主页:cat /usr/share/nginx/html/index.html 更改主页内容:echo "i love docker" > /usr/share/nginx/html/index.html 也可以用vim修改 # 容器内安装安装软件 安装apt-get update 终端:apt-get install vim Ubuntu窗口,用来修改index vim /usr/share/nginx/html/index.html 编辑好shift zz 保存退出 # 容器内换源 mv /etc/apt/sources.list /etc/apt/sources.list.bak cat <交互步骤/etc/apt/sources.list deb http://mirrors.ustc.edu.cn/debian stable main contrib non-free deb http://mirrors.ustc.edu.cn/debian stable-updates main contrib non-free EOF apt update apt install vim mv /etc/apt/sources.list.bak /etc/apt/sources.list # 退出容器 exit # 将容器打包为新的镜像 docker commit -a="作者" -m="描述信息" 容器ID 目标镜像名称:TAG # 拷贝 docker cp id:容器内资源路径 宿主机目录路径 将容器资源拷贝到宿主机
docker exec -it id /bin/bash cd /usr/share/nginx/html/ ls pwd 查看当前位置 exit ls 检查当前已有文件 docker cp id:位置(/usr/share/nginx/html) . ls
pwd 是 Print Working Directory 的缩写,其功能是显示当前所在工作目录的全路径
docker的镜像原理镜像是一种轻量级的,可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码、运行时所需的库、环境变量和配置文件。
为什么一个镜像那么大
联合文件系统,镜像被分层管理,体现是我们镜像多了之后,很多层不用重复下载



