IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> docker初探和基础搭建 -> 正文阅读

[系统运维]docker初探和基础搭建

个人博客
docker中文手册

Docker 是什么?

  • docker是一个开源的软件部署解决方案;
  • docker也是轻量级的应用容器框架;
  • docker可以打包、发布、运行任何的应用。

在我的粗浅理解中,docker就像是一个虚拟机,和vm、pd、vb间类似但又有很大的不同。它更适合于集群式的部署,例如同时部署在成百上千的服务器上,这是普通虚拟机软件所无法做到的。同时它又是一个极其轻量化的“虚拟机”,占用的资源很小,很适合部署在服务器上。另外它还有很强的可移植性、可操作性、自定义权限。


Docker 的一些基础概念

下面画一张图供大家更好的理解:

镜像:类似于虚拟机的iso、ova、vmk镜像

容器:可以看做是一个一个开启的虚拟机,相互独立,但可以通过volumns共享宿主机的一块存储

仓库:是一个大型的镜像库,里面有各种镜像,要使用的时候直接pull拉取下来即可使用。当然也可以将自己的镜像上传上去

Dockerfile:是用来构建镜像的构建文件,是由一系列命令和参数组成的构建脚本。

tar文件:可以将镜像打包成tar文件便于在其他地方传播


Docker 基本命令

docker images # 查看本地所有镜像
docker ps # 查看本地容器
docker rm [ID/NAME] # 删除容器
docker stop [ID/NAME] # 停止容器
docker restart [ID/NAME] # 重启容器
docker rmi [] # 删除本地镜像
docker pull nginx # 从镜像库下载最新nginx
docker run -d -p 81:80 --name test -v `pwd`:/usr/share/nginx/html nginx # 将nginx镜像的80端口映射到外面的81端口,命名为test,将外面的当前目录映射到容器的html目录,且在后台运行
docker exec -it [ID] bash # 进入这个容器的命令行
docker build -t [NAME] . # 以当前目录下的Dockerfile构建为名字NAME的镜像
docker commit [ID] [NAME] # 把ID这个容器封装成NAME这个镜像
docker save [NAME] > [NAME].tar # 把NAME这个镜像打包
docker load < [NAME].tar # 解包[NAME].tar为镜像


Docker 基本搭建

基本的docker安装直接google就好了。测试也可以使用docker的线上测试平台。

https://labs.play-with-docker.com

先从远程仓库下载一个1.20版本的nginx,如不写版本号则默认是最新版(不推荐)

docker pull nginx:1.20

下载完后查看下载的镜像

docker images

接下来启动这个镜像,生成一个新的容器

docker run -d -p 81:80 --name nginx_test -v /root:/home/docker nginx:1.20

-d 表示后台运行,不会直接接管当前控制台

-p 表示端口映射,这里表示用宿主机的81号端口映射这个容器的80端口

–name 给这个容器起个名字

-v 数据卷,将宿主机的一个目录映射到容器。这里表示将宿主机的/root目录映射到容器的/usr/share/nginx/html目录,这两个目录里的文件完全同步,有些类似于linux中的硬链接逻辑

最后加上要启动的镜像,或用ID表示

查看当前所有容器,可以看到nginx_test已经开起来,访问宿主机81号端口就能看到nginx生效了。

docker ps

为了测试volumns的环境,咋宿主机的/root目录写一个index.html

echo "haha" > index.html

接下来我们进入nginx_test的命令行。(exit可以退出)

docker exec -it nginx_test bash

nginx_test也可以用容器的前几位ID代替

查看/home/nginx就能看到index.html了。当我们修改这个目录里的东西,宿主机的/root里的东西也会跟着修改。

接着我们修改一下/usr/share/nginx/html/中的index.html。退回到宿主机

echo "haha123" > /usr/share/nginx/html/index.html
exit

接下来将nginx_test这个容器打包成镜像nginx_img

docker commit nginx_test nginx_img

接下来继续将镜像nginx_img打包成tar包

docker save nginx_img > nginx_test.tar

然后把镜像nginx_img和容器nginx_test删除

docker rmi nginx_img
docker rm -f nginx_test

把刚刚打包的tar释放出镜像来,然后就能在docker images中看到恢复的docker_img镜像,重新docker run起来访问81号端口就能看到我们刚刚写入的haha123了,说明打包后的镜像和原本的镜像是完全一样的,有些类似于虚拟机的快照。

docker load < nginx_img.tar

最后我们再尝试一下Dockerfile怎么玩

在宿主机/root目录下写一个Dockerfile

vi Dockerfile

FROM [] # 基于镜像
WORKDIR [] # 下面所有命令的工作目录(目标的)
COPY <本地路径> <目标路径> # 拷贝
RUN [] # 允许执行任意原生支持的shell命令(创建镜像时候使用)
CMD [ , ]

FROM nginx:1.20
ADD ./ /usr/share/nginx/html			# 把宿主机当前目录下所有文件添加到容器的html目录中

然后基于这个Dockerfile进行构建

docker build -t m1 .			# 最后的 . 表示在当前目录查找Dockerfile文件

run这个镜像就能发现已经成功将当前目录的文件复制到了html,首页也变成了haha

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-10-04 13:11:34  更:2021-10-04 13:13:28 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 18:31:01-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码