Docker的一个简单示例

0.从官网下载与操作系统相应的docker安装文件并安装,docker -v查看安装结果

1.新建一个文件夹,cd进入之

2.下载http://mirrors.aliyun.com/repo/Centos-7.repo文件放到该文件夹下(用于为容器的yum指定阿里云的源)

3.在该文件夹下建立index.html(用于拷贝到镜像中),并建立test_www文件夹(用于挂载到容器中),在test_www文件夹中也建立index.html

4.在该文件夹下建立Dockerfile文件,内容填为:

#以centos为基础建立镜像
FROM centos
MAINTAINER qidafang me@427studio.net
#将本地文件Centos-7.repo拷贝到镜像中作为/etc/yum.repos.d/CentOS-Base.repo
ADD ./Centos-7.repo /etc/yum.repos.d/CentOS-Base.repo
#以下的四行RUN都是执行bash,使用yum安装nginx
RUN yum clean all
RUN yum makecache
RUN yum -y install epel-release
RUN yum -y install nginx
#将本地文件index.html拷贝到镜像的/usr/share/nginx/html下
ADD ./index.html /usr/share/nginx/html
#暴露80端口
EXPOSE 80
#不作为守护进程运行
CMD ["nginx", "-g", "daemon off;"]

5.使用Dockerfile建立镜像:

sudo docker build -t="qidafang/test_docker" .

6.使用镜像启动容器:

docker run -p 6080:80 -v $PWD/test_www:/usr/share/nginx/html/test_www qidafang/test_docker

其中

docker run qidafang/test_docker是使用镜像启动容器的标准写法
-p 6080:80是将容器的80端口绑定到本机的6080端口
-v $PWD/test_www:/usr/share/nginx/html/test_www是将本机的目录挂载到容器的目录下,$PWD意为本机当前目录

至此,访问本机的localhost:6080和localhost:6080/test_www都能看到网页了,区别是前者的网页文件是拷贝到镜像中的,而后者的网页文件是存放在本机,挂载后被容器访问的。

7.传输镜像:

本机:docker save -o test_docker_image qidafang/test_docker

服务器:docker load -i test_docker_image

附:

docker的好处:一次配置,到处部署。容器们运行在Docker之上,正如Java程序运行在JVM之上,Docker/JVM屏蔽了底层的细节,使“针对统一的环境进行配置/开发”成为了可能。开发机安装Docker,服务器也安装Docker,在开发机上配置完毕的容器,拿到服务器上即可直接运行,不必再每次见到一个新的服务器都哼哧哼哧地进行毫无趣味的配置工作了。

关于服务:把提供服务进程的软件(如Nginx),做好配置,装到镜像里,以后部署的时候把这个镜像放到服务器上,启动容器就可以了。

关于程序:对已经开发完的程序,可以直接放置到镜像中。开发中的程序则可以放到本地文件夹,用挂载的方式被容器访问,方便调试。

关于数据:docker应该是无状态的,所以状态(如数据库的数据文件夹)不适合放到docker中。可以把数据文件夹放在本地,把数据库程序放到docker中,以挂载的方式访问。

关于镜像:不要用docker image的方法把容器制作成镜像,这种镜像时间久了、转手多了,后面的人将不知道里面都有什么东西。用Dockfile的方式,后面的人通过阅读Dockerfile,能完全知道制作镜像的过程中做了些什么,并可以进行修改。

  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
afiregame
  • 本文由 发表于 2021年12月11日22:57:19
  • 转载请务必保留本文链接:https://www.afiregame.com/zixun/9542/
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: