作者Gitee地址 https://gitee.com/thciweicloud
作者项目 面包博客,一个微服务架构的前后端分离博客系统。前后端使用Vue+SpringCloud,鉴权登录使用JWT,使用ElasticSearch作为博客检索引擎,使用ELK进行日志收集,GithubActions完成持续集成和交付
docker 命令
# 查看镜像|搜索|删除
检查版本: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 <<EOF >/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的镜像原理
镜像是一种轻量级的,可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码、运行时所需的库、环境变量和配置文件。
为什么一个镜像那么大
联合文件系统,镜像被分层管理,体现是我们镜像多了之后,很多层不用重复下载