当前位置: 首页 > Linux

01-Docker入门

时间:2023-04-06 22:33:35 Linux

第一步:了解Docker的开源容器平台:Golanghttps://github.com/docker/dockerDockerHub:用于共享和管理Docker容器的DockerSaaS平台——DockerHubDocker使用客户端——服务器(C/S)架构模式。Docker客户端与Docker守护进程通信。Docker守护进程处理构建、运行和发布Docker容器的繁重工作。Docker客户端和守护进程可以运行在同一个系统上,当然你也可以使用Docker客户端连接远程的Docker守护进程。Docker客户端和守护进程之间的通信是通过套接字或>RESTfulAPI。我的安装是centos7.2安装,请参考官方Installtext文档Step2:Docker基本命令查看$dockersearchcentosdownload$dockerpullcentos使用阿里云镜像阿里云镜像-打开管理界面-我的加速器$sudocp-n/lib/systemd/system/docker.service/etc/systemd/system/docker.service$sudosed-i"s|ExecStart=/usr/bin/dockerdaemon|ExecStart=/usr/bin/$dockerdaemon--registry->mirror=https://***.mirror.aliyuncs.com|g"/etc/systemd/system/docker.service$sudosystemctldaemon-reload$sudoservicedockerrestartStep3:创建容器#docker运行centos#dockerrunimage(如果没有这个镜像,回去自动下载)创建一个容器,执行命令#dockerruncentosls查看正在运行的容器#dockerps查看所有容器#dockerps-a(-all)Step4:管理容器*基于一个镜像,可以创建多个容器。创建容器并添加名称#dockerrun--namedemo-servercentos/bin/echo'demo'查看容器#dockerps-aremovecontainer#dockerrm(containerID|name)查看日志#dockerlogsdemo-server(容器名称)官方命令文档:DocStep5:DockerRunwithinteractivecontainer使用方法:dockerrun[OPTIONS]IMAGE[COMMAND][ARG...]Createanewcontainer#Parameteroptios:containerwithinteraction,你可以进入在容器内运行:-i,--interactive保持STDIN打开,即使没有附加每个人都知道tty是什么,对吧?-t,--tty分配伪TTY官方交互案例:我的官方案例:Step6:后台运行容器后台运行:-d,--detach后台运行容器并打印容器ID停止运行#dockerstop(id|name)删除所有停止的容器#dockerrm$(dockerps-a-q)Step7:退出容器后,重新进入交互式容器退出容器#exit退出并重新进入交互式容器#dockerattach(id|name)Step8:根据当前centosnodejs环境提交容器##添加【官方文档】(https://docs.docker.com/engine/reference/commandline/commit/)我们在修改容器的时候,想将其发布为新图像。这里我使用centos安装的nodejs环境作为图片提交#!当然,如果你想学习Nodejs,那么请转至我博客中的Nodejs分类;#dockercommit-azhaojunlike-m'test-commitnodejs'nodejs-testzhaojunlike/nodejs-test:latest#控制官方文件#dockerrmi[id|name]部分文件提交图片说明Usage:dockercommit[OPTIONS]CONTAINER[REPOSITORY[:TAG]]Createanewimagefromacontainer'schangesOptions:-a,--authorstring作者(例如,“JohnHannibalSmithh")-c,--changevalueApplyDockerfileinstructiontothecreatedimage(default[])--helpPrintusage-m,--messagestring提交消息-p,--pause提交时暂停容器(默认true)查看镜像#dockerimages接下来我们使用自己的镜像#dockerrunzhaojunlike/nodejs-testnode-e'console.log(1)'output:1#Step9:使用方法Dockerfile在创建镜像的官方文档Dockerfile中,我们使用指令来指定一些操作的配置,建议对照官方文档,指令描述没有错:FROM:-FROM-FROM:-FROM@MAINTAINERauthorRUN-RUN(shell形式,命令在shell中运行,Linux默认是/bin/sh-c或者cmd/S/ConWindows)-RUN["executable","param1","param2"](execform)CMD命令太多了,官方文档每条解释都挺全的,现在写了个Dockerfile,让我们构建他的官方文档。由于本人孤陋寡闻,贴了一个端安装nginx的代码#FROM是根据第一张图创建的,这里我们是根据安装好的centosFROMcentosMAINTAINERzhaojunlike#当然不是这么写的,我只是测试RUNyuminstallzlib-develpcre-develgccwgetmake-yRUNwgethttp://nginx.org/download/nginx-1.10.2.tar.gzRUNmkdir/home/tmpRUNtar-zxf/nginx-1.10.2.tar.gz-C/home/tmpRUNcd/home/tmp/nginx-1.10.2&&./configure--prefix=/usr/local/nginx1.10.2/RUNcd/home/tmp/nginx-1.10.2&&make&&makeinstallRUN/usr/local/nginx1.10.2/sbin/nginx然后构建镜像#[root@localhostmyDocker]#dockerbuild--tagzhaojunlike:centos-nginx-install。原因是docker会自动到当前目录去寻找Dockerfile。这个文件的过程就是把所有的sh丢进去,构建成功后,我们可以看到我们的镜像有#dockerimages,但是这些到底是什么东西,可能是我多次生成失败的缓存在build的时候,还得rmi一下#dockerrm$(dockerps-a-q)然后看看docker是不是真的爽,妈妈再也不用担心了,环境安装麻烦。但是接下来的问题是让我访问这个镜像中的nginxweb,所以下一篇文章应该是如何守护进程和运行容器,以及如何管理网络。附页dockerhub上千个容器,大部分都是其他开发者上传的,所以我们也上传一个。具体工作请阅读官方文档