Docker
0x00
前言
好久没更新博客了,感觉每天都在虚度光阴,要给自己指定一个学习计划,让自己忙起来!!
记一下最近刚接触的doker吧,把笔记知识点汇总一下。
0x01
Dcoker 是什么??

Docker的思想来自于集装箱,集装箱解决了什么问题?
在一艘大船上,可以把货物规整的摆放起来。
并且各种各样的货物被集装箱标准化了,集装箱和集装箱之间不会互相影响。
那么我就不需要专门运送水果的船和专门运送化学品的船了。
只要这些货物在集装箱里封装的好好的,那我就可以用一艘大船把他们都运走。
镜像(image)和容器(container)
讲docker 之前必须要提的两个词 镜像 and 容器
那么什么是镜像?什么又是容器呢?
容器
通俗来讲容器就是装东西的箱子,你可以把它理解为 集装箱
容器好比软件集装箱,它内部可以安装任何软件和库文件,做任意的运行环境配置。
- 镜像是静态的。
- 一个镜像可以创建多个容器。
镜像
你可以把镜像看成是我们电脑的里面的 软件安装包
Docker运行容器前需要本地存在对应的镜像,一个镜像可以创建多个容器,
- 容器是动态的。
- 镜像对于容器只是可读的。
0x02
搭建docker主要流程:
找镜像(search) -> 下镜像(pull) -> 查看镜像(images) -> 镜像中创建容器(run) -> 查看容器(ps)
我用的是centos7搭建的docker
检查centos版本是否支持docker
1.查看内核版本 (是否大于3.10)uname -r
2.安装dockeryum -y install docker
安装最新版本yum -y install docker-ce
安装出现问题–>文章
yum install docker-ce-
systemctl start docker 开启dockersystemctl 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
若安装失败 检查是否安装了ntpateyum 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 createdocker run //创建并启动容器
2.查看容器docker psdocker 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)正常的退出进程
0x03
docker logs errors and others
遇到问题、运行不了之类的先看日志报错信息!
1. Exited (1) 错误
这个报错信息 是我在使用php镜像创建一个新的容器时出现的,当时只知道傻乎乎的的去百度搜,不知道查看docker logs 报错,导致走了很长的弯路!
错误原因: php的配置文件里 server 被我打成了erver ,发现这个错误的时候 我真的是想把自己揍一顿(复制粘贴都能错)
总结: 细心细心再细心!!
docker los 命令
1 | docker logs [OPTIONS] CONTAINER |
2. 配置没问题,访问搭建的nginx不成功
错误原因:
重启下dockers
systemctl restart docker
重启容器
docker restart [name]
再次访问
success!
进入docker 方法
exec
docker exec [names] bashnsenter
1 . 查看容器[id]的进程的PIDdocker 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