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] bash

  • nsenter

1 . 查看容器[id]的进程的PID docker inspect -f \{\{.State.Pid\}\} [CONTAINER ID]

2 . 使用pid进入容器 nsenter --target $PID --mount --uts --ipc --net --pid $PID为第一步查询到的PID

about nsenter install

docker卸载查看已安装的包

yum list installed | grep docker

删除包 yum -y remove docker-engine.x86_64


推荐两个doker 搭建nginxphp 、mysql 的文章

参考:https://blog.51cto.com/11134648/2160257