Docker介绍

Docker 是一个能够把开发应用程序自动部署到容器的开源引擎。Docker 使用者不需要去关心容器的管理,使得操作更为简便。用户操作 Docker 的容器就像操作一个快速轻量级的虚拟机一样简单。

docker与虚拟机架构对比

docker与虚拟机特点对比

Docker概念和操作

概念

镜像、容器、仓库、Dockerfile、tar打包文件

  1. 镜像(Image):Docker 镜像就是一个模板,镜像可以用来创建 Docker 容器。
  2. 容器( Container):容器是从镜像创建的运行实例。Docker 利用容器来运行应用。
  3. 仓库( Repository):仓库是集中存放镜像的场所,目前最大的Docker公开仓库是Docker Hub。
  4. Docekrfile:镜像配置文件它指定一个镜像是如何构建的,构建镜像时额外的操作可通过dockerfile来指定。
  5. tar文件:这里的tar文件侠义指的是,docker将镜像存档的tar打包文件

操作

save、laod、build、run、commit、push、pull

  • 通过save 指令将镜像直接保存为一个tar文件,也可以通过load指令加载tar文件为一个镜像。
  • 通过build指令将Dockerfile构建成一个镜像
  • 通过run指令将镜像跑起来,把镜像实例化为容器
  • 通过commit指令将正在运行的容器打包成镜像
  • 通过push、pull指令来拉取或上传镜像文件(暂不深入)

Docker操作之间的关系

安装过程不同的系统有不同的教程,建议初学者先跳过docker的安装,直接进入到docker的操作当中来。
使用一个playwithdocker的网站就可以在线体验docker。labs.play-with-docker.com
如果没有账号的话需要先注册,登陆后点击Start就可以使用了

play-with-docker登陆后

play-with-docker点击start后

点击 ADD NEW INSTANCE 创建实例就可以使用在线的docker环境了,可以看这有4个小时的倒计时,就是说免费给用这个机器但是只能用4小时,四个小时之后要重新再申请。

docker常用命令

docker pull

//从官方仓库获取nginx镜像 docker pull [镜像名]:[版本号]
$docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
33847f680f63: Pull complete 
dbb907d5159d: Pull complete 
8a268f30c42a: Pull complete 
b10cf527a02d: Pull complete 
c90b090c213b: Pull complete 
1f41b2f2bf94: Pull complete 
Digest: sha256:8f335768880da6baf72b70c701002b45f4932acae8d574
dedfddaf967fc3ac90
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest

docker images

//查看本地已经安装的镜像
# docker images
REPOSITORY   TAG       IMAGE ID       CREATED      SIZE
nginx        latest    08b152afcfae   3 days ago   133M

docker run nginx

//简单的运行nginx镜像
# docker run nginx

//单纯使用docker run nginx只是简单的运行起一个容器,可以指定一些参数,-d 再后台运行不会阻塞当前的shell指令窗口 -p 指定内外端口映射 [内端口:外端口]
# docker run -d -p 80:80 nginx

docker ps

// 查看正在运行的容器进程
# docker ps
d351784c3154   nginx     "/docker-entrypoint.…"   10 minutes ago   Up 10 minutes   0.0.0.0:80->80/tcp   happy_cray

docker exec

//进入到容器的终端 docker exec -it [容器ID]
# docker exec -it d3 bash

//进入到终端后可以编辑 /usr/share/nginx/html/index.html文件更改nginx的welcome页面为hello world
# docker exec -it d3 bash
root@d351784c3154:/#  cd /usr/share/nginx/html
root@d351784c3154:/# echo "hello world" > index.html

docker commit

//将正在运行的容器打包成镜像 docker commit [镜像名]
# docker commit hello

docker buid

  • 假设在终端相对目录下已有一个“hello LAN”内容的index.html文件。
  • 编辑dockerfile文件将使用nginx镜像在构建容器时把本目录映射到/user/share/nginx/html目录下。
  • 命令后面有一个 [.] 不要漏了,意思是使用当前目录下的dockerfile文件构建容器。
# docker buid -t hello .

dockerfile文件内容如下

FORM nginx
ADD ./ /user/share/nginx/html

docker save &docker load

// 将镜像保存为tar文件 docker save [镜像名] -o [路径]
# docker save nginx -o 1.tar
//将tar文件加载为镜像 docker load [路径]
# docker load 1.tar

以下与以上命令作用是一样的

#docker save nginx > 1.tar
#docekr load < 1.tar

结束

Discuz!Q更新3.x之后,准备也同升级3.x,在看升级文档的时候又注意到了docker,又看到discuzQ官方建议使用docker来安装,对于docker 在之前确实有了解与使用过,但其实也没当回事,虽然觉得docker容器确实很厉害,但就是没继续了深入了。今天突然提起兴趣了。

最后修改:2021 年 08 月 01 日
如果觉得我的文章对你有用,请随意赞赏