docker入门学习

作者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的镜像原理

镜像是一种轻量级的,可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码、运行时所需的库、环境变量和配置文件。

为什么一个镜像那么大

联合文件系统,镜像被分层管理,体现是我们镜像多了之后,很多层不用重复下载

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值