Docker介绍
Docker 是一个能够把开发应用程序自动部署到容器的开源引擎。Docker 使用者不需要去关心容器的管理,使得操作更为简便。用户操作 Docker 的容器就像操作一个快速轻量级的虚拟机一样简单。
Docker概念和操作
概念
镜像、容器、仓库、Dockerfile、tar打包文件
- 镜像(Image):Docker 镜像就是一个模板,镜像可以用来创建 Docker 容器。
- 容器( Container):容器是从镜像创建的运行实例。Docker 利用容器来运行应用。
- 仓库( Repository):仓库是集中存放镜像的场所,目前最大的Docker公开仓库是Docker Hub。
- Docekrfile:镜像配置文件它指定一个镜像是如何构建的,构建镜像时额外的操作可通过dockerfile来指定。
- tar文件:这里的tar文件侠义指的是,docker将镜像存档的tar打包文件
操作
save、laod、build、run、commit、push、pull
- 通过save 指令将镜像直接保存为一个tar文件,也可以通过load指令加载tar文件为一个镜像。
- 通过build指令将Dockerfile构建成一个镜像
- 通过run指令将镜像跑起来,把镜像实例化为容器
- 通过commit指令将正在运行的容器打包成镜像
- 通过push、pull指令来拉取或上传镜像文件(暂不深入)
安装过程不同的系统有不同的教程,建议初学者先跳过docker的安装,直接进入到docker的操作当中来。
使用一个playwithdocker的网站就可以在线体验docker。labs.play-with-docker.com
如果没有账号的话需要先注册,登陆后点击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容器确实很厉害,但就是没继续了深入了。今天突然提起兴趣了。
3 条评论
作者的才华横溢,让这篇文章成为了一篇不可多得的艺术品。
?语言类评语?
作者对主题的挖掘深入骨髓,展现了非凡的洞察力和理解力。