0x00前言
好久没更新博客了,感觉每天都在虚度光阴,要给自己指定一个学习计划,让自己忙起来!! 记一下最近刚接触的doker吧,把笔记知识点汇总一下。
0x01Dcoker 是什么??
Docker的思想来自于集装箱,集装箱解决了什么问题?
在一艘大船上,可以把货物规整的摆放起来。
并且各种各样的货物被集装箱标准化了,集装箱和集装箱之间不会互相影响。
那么我就不需要专门运送水果的船和专门运送化学品的船了。
只要这些货物在集装箱里封装的好好的,那我就可以用一艘大船把他们都运走。
还不懂什么是docker?那就看看这两个生动形象通俗易懂的例子吧 Case1 Case2
镜像(image)和容器(container)讲docker 之前必须要提的两个词 镜像 and 容器
那么什么是镜像?什么又是容器呢?
容器通俗来讲容器就是装东西的箱子,你可以把它理解为 集装箱
容器好比软件集装箱,它内部可以安装任何软件和库文件,做任意的运行环境配置。
镜像是静态的。
一个镜像可以创建多个容器。
镜像你可以把镜像看成是我们电脑的里面的 软件安装包
Docker运行容器前需要本地存在对应的镜像,一个镜像可以创建多个容器,
容器是动态的。
镜像对于容器只是可读的。
0x02搭建docker主要流程:
找镜像(search) -> 下镜像(pull) -> 查看镜像(images) -> 镜像中创建容器(run) -> 查看容器(ps)
我用的是centos7搭建的docker 检查centos版本是否支持docker
1.查看内核版本 (是否大于3.10)
uname -r
2.安装docker
yum -y install docker
安装最新版本
yum -y install docker-ce
安装出现问题–>文章
yum install docker-ce- (指定安装版本)
systemctl start docker 开启docker
systemctl enable docker 开机启动
docker version 查看docker版本号
3.验证是否安装成功
docker run hello-world
到这里其实docker已经安装好了,但!安装好仅仅只是第一步骤; 后面还要下载所需的镜像或者使用dockerfile自行构建docker镜像; 最后再部署安装你的应用程序到docker容器中。
一. 镜像下载CentOS7 镜像
docker pull centos
安装时遇到的问题 x509: certificate has expired or is not yet valid错误解决
这个问题基本上是因为证书出现过期导致。
解决办法
查看虚拟机和远程服务器的时间是否同步:
👇👇
date
若时间不同步,执行
ntpdate cn.pool.ntp.org
若安装失败 检查是否安装了ntpate
yum install ntpdate -y
镜像命令1.搜索镜像
docker search 关键词
2.获取镜像 docker pull 仓库名称[:tag]
3.查看镜像
docker images
4.删除镜像
docker rmi [image id]
docker rmi [tag] //仓库名
使用 docker rmi [id] 命令时,必须确保该镜像没有被容器使用才能进行; 删除时系统会先删除掉指向该镜像的所有标签,然后删除镜像本身。
5.存出镜像和载入镜像
docker save -o 存储文件名 存储的镜像
二.容器1.创建容器
docker create
docker run //创建并启动容器
2.查看容器
docker ps
docker ps -a // 查看所有docker
3.启动/终止容器
docker start [names]
docker stop [names]
4.删除容器
终止状态的容器
docker rm [CONTAINER ID]正在运行的容器
docker rm -f [CONTAINER ID]
5.进入容器
docker exec -it [name] bash 进入容器
docker run -i -t centos /bin/bash 创建centos
exec是进入已经存在的容器,run是创建新容器
5.退出容器
ctrl+d 退出容器且关闭
ctrl+p+q 退出容器但不关闭
docker kill -s HUP [容器名]
HUP(1)是让进程挂起,睡眠; kill (9)六亲不认的杀掉 term(15)正常的退出进程
0x03docker logs errors and others
遇到问题、运行不了之类的先看日志报错信息!
1. Exited (1) 错误这个报错信息 是我在使用php镜像创建一个新的容器时出现的,当时只知道傻乎乎的的去百度搜,不知道查看docker logs 报错,导致走了很长的弯路!
错误原因: php的配置文件里 server 被我打成了erver ,发现这个错误的时候 我真的是想把自己揍一顿(复制粘贴都能错)
总结: 细心细心再细心!!
docker los 命令
2. 配置没问题,访问搭建的nginx不成功错误原因:
重启下dockers systemctl restart docker 重启容器 docker restart [name]
再次访问 success!
进入docker 方法
exec
docker exec [names] bashnsenter
1 . 查看容器[id]的进程的PID
docker inspect -f \{\{.State.Pid\}\} [CONTAINER ID]
2 . 使用pid进入容器
nsenter --target $PID --mount --uts --ipc --net --pid
$PID为第一步查询到的PID
docker卸载查看已安装的包
yum list installed | grep docker
删除包
yum -y remove docker-engine.x86_64