版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第 3 章 Docker 高级实践在这一部分我们来介绍一些Docker的高级内容: Dockerle 和 Docker compose3.1 Dockerle3.1.1 Dockerle简介什么是Dockerle Dockerle类似于我们学习过的化的方式实现出来。Dockerle的作用 1、找一个镜像: ubuntu 2、创建一个容器: docker run ubuntu3、进入容器: docker exec -it 容器 命令4、操作: 各种应用配置.5、构造新镜像: docker commit,将我们在上面学到的docker镜像,使用自动Dockerle 使用准则 1、大: 首字母必须大
2、写D2、空: 尽量将Dockerle放在空目录中。3、单: 每个容器尽量只有一个功能。4、少: 执行令越少越好。Dockerle 分为四部分:基础镜像信息 从哪来?维护者信息 我是谁? 镜像操作指令 怎么干?容器启动时执行指令 嗨!Dockerle文件内容:首行注释信息指令(大写) 参数Dockerle使用命令:3.1.2 Dockerle快速入门接下来我们快速的使用Dockerle来基于ubuntu创建一个定制化的镜像:nginx。dockerle内容1234567891011121314# 构建一个基于ubuntu的docker定制镜像# 基础镜像FROM ubuntu# 镜像作者MAIN
3、TAINER panda# 执行命令RUN mkdir hello RUN mkdir worldRUN sed -i 's/mi/g'/etc/apt/sources.listRUN sed -i 's/s/mi/g'/etc/apt/sources.list RUN apt-get updateRUN apt-get install nginx -y1 #创建Dockerfile目录2 :$ mkdir ./docker/images/nginx -p3 :$ cd docker/images/nginx/4 #创建Dockerfile文件5 :/docke
4、r/images/nginx$ vim Dockerfile1 #构建镜像命令格式:2 docker build -t 镜像名:版本号Dockerfile所在目录3 #构建样例:4 docker build -t nginx:v0.2 /opt/dockerfile/nginx/5 #参数详解:6 -t指定构建后的镜像信息,7 /opt/dockerfile/nginx/则代表Dockerfile存放位置,如果是当前目录,则用 . (点)表示151617# 对外端口EXPOSE80进行构建操作优化刚刚的Dockerle文件123456789# 构建一个基于ubuntu的docker定制镜像#
5、基础镜像FROM ubuntu# 镜像作者MAINTAINER panda# 执行命令RUN mkdir hello1 #构建镜像2 :/docker/images/nginx$ docker build -t ubuntu-nginx:v0.1 .3 #查看新生成镜像4 :/docker/images/nginx$ docker images5 REPOSITORYTAGIMAGE IDCREATEDSIZE6 ubuntu-nginx v0.1a853de1b8be4 9 seconds ago 208MB7 nginxlatest e548f1a579cf 6 days ago109MB
6、8 ubuntulatest 0458a4468cbc 4 weeks ago112MB9 #查看构建历史10 :/docker/images/nginx$ docker history a853de1b8be411 IMAGECREATEDCREATED BYSIZE COMMENT12 #镜像创建时间依赖命令大小评论13 a853de1b8be4 41 seconds ago/bin/sh -c #(nop) EXPOSE 80 0B14 925825b680fd 42 seconds ago/bin/sh -c apt-get install nginx -y 56.5MB15 4c57
7、d6c99603 About a minute ago /bin/sh -c apt-get update 40MB16 b6d030a0d123 About a minute ago /bin/sh -c sed - i's/s/mir 2.77kB17 3357bf8069ca About a minute ago /bin/sh -c sed - i's/mirr 2.77kB18 7bfb90c1e20d About a minute ago /bin/sh -c mkdir world 0B19 972d6ab76d01 About a minute ago /bin
8、/sh -c mkdir hello 0B20 a76394bfad01 About a minute ago /bin/sh -c #(nop) MAINTAINER panda kstwoak4 0B21 #注意:22 因为容器没有启动命令,所以肯定不了231011RUN mkdir world RUN sed -i 's/etc/apt/sources.list RUN sed -i 's/s/etc/apt/sources.list RUN apt-get updateRUN apt-get install nginx/mi/g'12/mi/g'1314
9、151617-y# 对外端口EXPOSE 80运行修改好的Dockerle进行构建Dockerle构建过程: 从基础镜像1运行一个容器A遇到一条Dockerle指令,都对容器A做一次修改操作执行完毕一条命令,提交生成一个新镜像2再基于新的镜像2运行一个容器B遇到一条Dockerle指令,都对容器B做一次修改操作执行完毕一条命令,提交生成一个新镜像31 :/docker/images/nginx$ docker build -t ubuntu-nginx:v0.2 .2 :/docker/images/nginx$ docker history ubuntu-nginx:v0.23 IMAGEC
10、REATEDCREATED BY SIZECOMMENT4 eaba9bd1c4ac 3 minutes ago/bin/sh -c #(nop) EXPOSE 80 0B5 ed08d6e29eb1 3 minutes ago/bin/sh -c apt-get update && apt-get install 96.5MB6 eef6238ec5bd 6 minutes ago/bin/sh -c sed -i 's/mirr 2.77kB7 58f755a1b29c 6 minutes ago/bin/sh -c mkdir hello && m
11、kdir world 0B8 a76394bfad01 25 minutes ago /bin/sh -c #(nop) MAINTAINER panda kstwoak4 0B9 #对比两个镜像的大小10 :/docker/images/nginx$ docker images11 REPOSITORYTAGIMAGE IDCREATEDSIZE12 ubuntu-nginx v0.2 eaba9bd1c4ac 7 seconds ago208MB13 ubuntu-nginx v0.1 a853de1b8be4 21 minutes ago 208MB14 #深度对比连个镜像的大小15 :
12、/docker/images/nginx$ docker inspect a853de1b8be4 16"Size": 208237435,17"VirtualSize": 208237435,18 :/docker/images/nginx$ docker inspect eaba9bd1c4ac 19"Size": 208234662,20"VirtualSize": 208234662,*构建过程镜像介绍构建过程中,创建了很多镜像,这些中间镜像,我们可以直接使用来启动容器,通过查看容器效果,从 侧面能看到我们
13、每次构建的效果。提供了镜像调试的能力3.1.3 基础指令详解FROMMAINTAINERRUN1 RUN2 #格式:3 RUN <command>(shell模式)4 RUN"executable", "param1", "param2"(exec 模式)5 #解释:6 #表示当前镜像构建时候运行令,如果有确认输入的话,一定要在命令中添加 -y7 #如果命令较长,那么可以在命令结尾使用 来换行8 #生产中,推荐使用上面数组的格式9 #注释:10 #shell模式:类似于 /bin/bash -c command11 #举例
14、: RUN echo hello12 #exec模式:类似于 RUN"/bin/bash", "-c", "command"13 #举例: RUN"echo", "hello"1 MAINTAINER2 #格式:3 MAINTAINER <name>4 #解释:5 #指定该dockerfile文件的维护者信息。类似我们在docker commit 时候使用-a参数指定的信息1 FROM2 #格式:3 FROM <image>4 FROM <image>:<
15、;tag>5 #解释:6 #FROM 是 Dockerfile 里的第一条而且只能是除了首行注释之外的第一条指令7 #可以有多个FROM语句,来创建多个image8 #FROM 后面是有效的镜像名称,如果该镜像没有在你的本地仓库,那么就会从仓库Pull取, 如果也没有,就报错失败9 #下面所有的 系统可执行指令 在 FROM 的镜像中执行。1011EXPOSE3.1.4 运行时指令详解CMD1234567891011121314151617181920212223CMD#格式:CMD CMD CMD#解释:(exec 模式)推荐(shell模式)提供给ENTRYPOINT的默认参数;&q
16、uot;executable","param1","param2"command param1 param2"param1","param2"#CMD指定容器启动时默认执行令#每个Dockerfile只能有一条CMD命令,如果指定了多条,只有最后一条会被执行#如果你在启动容器的时候使用docker run 指定的运行命令,那么会覆盖CMD命令。#举例: CMD "/usr/sbin/nginx","-g","daemon off;"nginx命令
17、设置配置文件外的全局指令守护程序开启方式 关闭"/usr/sbin/nginx" "-g""daemon off;"#CMD指令实践:#修改Dockerfile文件内容:#在上一个Dockerfile文件内容基础上,末尾增加下面一句话: CMD "/usr/sbin/nginx","-g","daemon off;"#构建镜像:/docker/images/nginx$ docker build -t ubuntu-nginx:v0.3 . #根据镜像创建容器,创建时候,不添
18、加执行命令:/docker/images/nginx$ docker run -name nginx-1 -itd ubuntu-nginx:v0.3 #根据镜像创建容器,创建时候,添加执行命令/bin/bash:/docker/images/nginx$ docker run -name nginx-2 -itd ubuntu- nginx:v0.3 /bin/bashdocker ps2425262728#发现两个容器令行是不一样的itcastitcast-virtual-machine:/docker/images/nginx$docker ps -aCREATEDCONTAINER I
19、D IMAGENAMESCOMMAND29921d00c3689f ubuntu-nginx:v0.3 "/bin/bash"nginx-25 seconds ago1 EXPOSE2 #格式:3 EXPOSE <port> <port>.4 #解释:5 设置Docker容器对外的端,Docker为了安全,自动对外打开端口,如果需要外部提供,6 还需要启动容器时增加-p或者-P参数对容器的端口进行分配。ENTRYPOINT1 ENTRYPOINT2 #格式:3 ENTRYPOINT "executable", "para
20、m1","param2" (exec 模式)4 ENTRYPOINT command param1 param2 (shell 模式)5 #解释:6 #和CMD 类似都是配置容器启动后执行令,并且被docker run 提供的参数覆盖。7 #每个Dockerfile 中只能有一个ENTRYPOINT,当指定多个时,只有最后一个起效。8 #生产中我们可以同时使用ENTRYPOINT 和CMD,9 #想要在docker run 时被覆盖,可以使用"docker run -entrypoint"10 #ENTRYPOINT指令实践:11 #修改Doc
21、kerfile文件内容:12 #在上一个Dockerfile 文件内容基础上,修改末尾的CMD 为ENTRYPOINT:13 ENTRYPOINT "/usr/sbin/nginx","-g","daemon off;" 1415 #构建镜像16 :/docker/images/nginx$ docker build -t ubuntu-nginx:v0.4 . 1718 #根据镜像创建容器,创建时候,不添加执行命令19 :/docker/images/nginx$ docker run -name nginx-3 -itd ubun
22、tu- nginx:v0.42021 #根据镜像创建容器,创建时候,添加执行命令/bin/bash22 :/docker/images/nginx$ docker run -name nginx-4 -itd ubuntu- nginx:v0.4 /bin/bash2324 #查看ENTRYPOINT是否被覆盖25 :/docker/images/nginx$ docker ps -a26 CONTAINER ID IMAGECOMMANDCREATED NAMES27 e7a2f0d0924e ubuntu-nginx:v0.4 "/usr/sbin/nginx -g "
23、59 seconds agonginx-428 c92b2505e28e ubuntu-nginx:v0.4"/usr/sbin/nginx -g "About a minute agonginx-32930 #根据镜像创建容器,创建时候,使用-entrypoint参数,添加执行命令/bin/bash31 docker run -entrypoint "/bin/bash" -name nginx-5 -itd ubuntu- nginx:v0.43233 #查看ENTRYPOINT是否被覆盖34 :/docker/images/nginx$ docke
24、r ps35 CONTAINER ID IMAGECOMMANDCREATED NAMES36 6c54726b2d96 ubuntu-nginx:v0.4"/bin/bash"3 seconds ago nginx-5373031e6c39be8e696 ubuntu-nginx:v0.3 "/usr/sbin/nginx -g " 14 seconds ago nginx-1CMD ENTRYPOINT 综合使用实践3.1.5 文件编辑指令详解ADD1234567891011#ADD#格式:ADD <src>. <dest>A
25、DD "<src>",. "<dest>"#解释:#将指定的<src> 文件到容器文件系统中的<dest>#src 指的是宿主机,dest 指的是容器#所有拷贝到container 中的文件和文件夹权限为0755,uid #如果文件是可识别的压缩格式,则docker 会帮忙解压缩#注意:和gid 为0#1、如果源路径是个文件,且目标路径是以/ 结尾, 则docker 会把目标路径当作一个目录,会把源文件拷贝到该目录下;#如果目标路径不存在,则会自动创建目标路径。121 #修改Dockerfile文件内容:
26、23 # 在上一个Dockerfile文件内容基础上,修改末尾的ENTRYPOINT 45 :/docker/images/nginx$ vim Dockerfile6 ENTRYPOINT "/usr/sbin/nginx" 7CMD "-g"8 #构建镜像9 :/docker/images/nginx$ docker build -t ubuntu-nginx:v0.5 .10 #根据镜像创建容器,创建时候,不添加执行命令11 :/docker/images/nginx$ docker run -name nginx-6 -d ubuntu-ngin
27、x:v0.5 1213 #查看效果14 :/docker/images/nginx$ docker ps -a15 CONTAINER IDIMAGECOMMANDCREATED NAMES16 e28875d281ebubuntu-nginx:v0.5"/usr/sbin/nginx -g"9 seconds agonginx-617 #根据镜像创建容器,创建时候,不添加执行命令,覆盖cmd的参数 -g "daemon off;"18 :/docker/images/nginx$ docker run -name nginx-7 -d ubuntu-n
28、ginx:v0.5 -g "daemon off;"1920 #查看效果21 itcastitcast-virtual-machine:/docker/images/nginx$ docker ps -a22 CONTAINER IDIMAGECOMMANDCREATED NAMES23 e5addad86ef5ubuntu-nginx:v0.5"/usr/sbin/nginx -g "5 seconds ago nginx-724 #注释:25 #任何docker run设置令参数或者CMD指令令,都将作为ENTRYPOINT 指令令参数,追加到ENT
29、RYPOINT指令之后131415#2、如果源路径是个文件,且目标路径是不是以/ 结尾,则docker 会把目标路径当作一个文件。1617#如果目标路径不存在,会以目标路径为名创建一个文件,内容同源文件;#如果目标文件是个存在的文件,会用源文件覆盖它,当然只是内容覆盖,文件名还是目标文件名。#如果目标文件实际是个存在的目录,则会源文件拷贝到该目录下。注意,这种情况下,最好显示的以/18结尾,以避免。192021#3、如果源路径是个目录,且目标路径不存在,则docker 会自动以目标路径创建一个目录,把源路径目录下的文件拷贝进来。#如果目标路径是个已经存在的目录,则docker 会把源路径目录下
30、的文件拷贝到该目录下。2223242526272829303132333435363738394041424344454647484950515253545556575859606162636465#4、如果源文件是个压缩文件,则docker 会自动帮解压到指定的容器目录中。#ADD实践:#拷贝普通文件:/docker/images/nginx$ vim Dockerfile#Dockerfile文件内容# 构建一个基于ubuntu的docker定制镜像# 基础镜像FROM ubuntu # 镜像作者MAINTAINER panda# 执行命令ADD RUN RUNRUN"sourc
31、es.list","/etc/apt/sources.list"apt-get apt-getapt-getclean updateinstall nginx -y# 对外端口EXPOSE 80#构建镜像:/docker/images/nginx$ docker build -t ubuntu-nginx:v0.6.#根据镜像创建容器,创建时候,不添加执行命令进入容器查看效果docker run -name nginx-8 -it ubuntu-nginx:v0.6#拷贝压缩文件tar zcvf this.tar.gz ./* #Dockerfile文件内容.#
32、执行命令.# 增加文件ADD "linshi.tar.gz","/nihao/".#构建镜像:/docker/images/nginx$ docker build -t ubuntu-nginx:v0.7 #根据镜像创建容器,创建时候,不添加执行命令进入容器查看效果docker run -name nginx-9 -it ubuntu-nginx:v0.7.:/docker/images/nginx$ docker run -name nginx-9 -it ubuntu-nginx:v0.7COPYVOLUME1 #COPY2 #格式:3 COPY &
33、lt;src>. <dest>4COPY "<src>",. "<dest>"5 #解释:6 #COPY 指令和ADD 指令功能和使用方式类似。只是COPY 指令做自动解压工作。7 #单纯文件场景,Docker 推荐使用COPY8 #COPY实践9 #修改Dockerfile文件内容:10 # 构建一个基于ubuntu的docker定制镜像11 # 基础镜像12 FROM ubuntu13 # 镜像作者14 MAINTAINER panda15 # 执行命令16 ADD "sources.list&qu
34、ot;,"/etc/apt/sources.list"17 RUN apt-get clean18 RUN apt-get update19 RUN apt-get install nginx -y20 COPY "index.html","/var/www/html/"21 # 对外端口22 EXPOSE 8023 #运行时默认命令24 ENTRYPOINT "/usr/sbin/nginx","-g","daemon off;"25 index.html 文件内容:26
35、<h1>hello world </h1>27 <h1>hello docker </h1>28 <h1>hello nginx</h1> 2930 #构建镜像31 :/docker/images/nginx$ docker build -t ubuntu-nginx:v0.8 .32 #根据镜像创建容器,创建时候,不添加执行命令33 :/docker/images/nginx$ docker run -name nginx-10 -itd ubuntu-nginx:v0.834 #查看nginx-10信息35 :/doc
36、ker/images/nginx$docker inspect nginx-1036 #浏览器nginx查看效果VOLUME实践3.1.6 环境指令详解ENVENV实践12#ENV实践:#命令行创建ENV的容器1 #ENV2 #格式:3 ENV <key> <value>(一次设置一个环节变量)4 ENV <key>=<value> .(一次设置一个或多个环节变量)5 #解释:6 #设置环境变量,可以在RUN 之前使用,然后RUN 命令时调用,容器启动时这些环境变量都会被指定1 #VOLUME实践2 #修改Dockerfile文件内容:3 #将C
37、OPY替换成为VOLUME4 :/docker/images/nginx$vim Dockerfile5 VOLUME "/helloworld/" 6 .7 #构建镜像8 :/docker/images/nginx$docker build -t ubuntu-nginx:v0.9 .9 #创建数据卷容器10 :/docker/images/nginx$docker run -itd -name nginx-11 ubuntu-nginx:v0.911 #查看镜像信息12 :/docker/images/nginx$docker inspect nginx-1113 #验
38、证操作14 :/docker/images/nginx$docker run -itd -name vc-nginx-1 -volumes-from nginx-11 nginx15 :/docker/images/nginx$docker run -itd -name vc-nginx-2 -volumes-from nginx-11 nginx16 #进入容器117 :/docker/images/nginx$docker exec -it vc-nginx-1 /bin/bash18 :/# echo 'nihao itcast' > helloworld/niha
39、o.txt19 #进入容器220 :/docker/images/nginx$ docker exec -it vc-nginx-2 /bin/bash21 :/# cat helloworld/nihao.txt1 #VOLUME2 #格式:3 VOLUME "/data"4 #解释:5 #VOLUME 指令可以在镜像中创建挂载点,这样只要通过该镜像创建的容器都有了挂载点6 #通过VOLUME 指令创建的挂载点,无法指定主机上对应的目录,是自动生成的。7 #举例:8 VOLUME "/var/lib/tomcat7/webapps/"WORKDIRWO
40、RKDIR实践1234567891011121314#WORKDIR实践:#修改Dockerfile文件内容:# 在上一个Dockerfile 文件内容基础上,在RUN 下面增加一个WORKDIR WORKDIR /nihao/itcast/RUN "touch","itcast1.txt" WORKDIR /nihaoRUN "touch","itcast2.txt" WORKDIR itcastRUN "touch","itcast3.txt".#构建镜像:/docker
41、/images/nginx$ docker build -t ubuntu-nginx:v0.11 . #根据镜像创建容器,创建时候,不添加执行命令docker run -name nginx-13 -itd ubuntu-nginx:v0.111 #WORKDIR2 #格式:3 WORKDIR /path/to/workdir (shell 模式)4 #解释:5 #切换目录,为后续的RUN、CMD、ENTRYPOINT 指令配置工作目录。相当于cd6 #可以多次切换(相当于cd 命令),7 #也可以使用多个WORKDIR 指令,后续命令如果参数是相对路径,则会基于之前命令指定的路径。例如8
42、#举例:9 WORKDIR /a10 WORKDIR b11 WORKDIR c12 RUN pwd13 #则最终路径为/a/b/c3456789101112131415161718:$ docker run -e NIHAO="helloworld" -itd -name ubuntu-111 ubuntu/bin/bash#进入容器ubuntu-111:$ docker exec -it ubuntu-111 /bin/bash:/# echo $NIHAO#修改Dockerfile文件内容:#在上一个Dockerfile 文件内容基础上,在RUN 下面增加一个ENV
43、ENV NIHAO=helloworld.#构建镜像docker build -t ubuntu-nginx:v0.10 .#根据镜像创建容器,创建时候,不添加执行命令docker run -name nginx-12 -itd ubuntu-nginx:v0.10 docker exec -it nginx-12 /bin/bashecho $NIHAOUSER与ARG3.1.7 触发器指令详解触发器指令触发器实践123456789101112#编辑Dockerfile:/docker/images/nginx$ #内容如下:vim Dockerfile# 构建一个基于ubuntu的dock
44、er定制镜像# 基础镜像FROM ubuntu # 镜像作者MAINTAINER panda# 执行命令ADDRUN RUN"sources.list","/etc/apt/sources.list" apt-get cleanapt-get update1 ONBUILD2 #格式:3 ONBUILD command4 #解释:5 #当一个镜像A被作为其他镜像B的基础镜像时,这个触发器才会被执行,6 #新镜像B在构建的时候,会触发器中的指令。7 #使用场景对于版本和方便传输,适用于其他用户。81 #USER2 #格式:3 USER daemon4 #解
45、释:5 #指定运行容器时的用户名和UID,后续的RUN 指令也会使用这里指定的用户。6 #如果不输入任何信息,表示默认使用root 用户78 #ARG9 #格式:10 ARG <name>=<default value>11 #解释:12 #ARG 指定了一个变量在docker build 的时候使用,可以使用-build-arg <varname>=<value>来指定参数的值,不过13 #如果构建的时候不指定就会报错。141516#进入镜像docker exec -it nginx-13 /bin/bash3.1.8 Dockerle构建缓存
46、我们第一次构建很慢,之后的构建都会很快,因为他们用到了构建的缓存。3.2 Dockerle构建go环境接下来我们就来做一个工作实践,搭建一个go环境,然后尝试使用Dockerle的方式,构造一个镜像。3.2.1 项目描述1 #取消缓存:2 docker build -no-cache -t 镜像名:镜像版本Dockerfile位置1 #构建子镜像Dockerfile文件2 FROM ubuntu-nginx:v0.123 MAINTAINER panda4 EXPOSE 805 ENTRYPOINT "/usr/sbin/nginx","-g",&quo
47、t;daemon off;" 67 #构建子镜像8 :/docker/images/nginx$ docker build -t ubuntu-nginx:v0.13 .9 #根据镜像创建容器,10 docker run -p 80 -name nginx-15 -itd ubuntu-nginx:v0.1311 #查看镜像信息12 :/docker/images/nginx$ docker inspect ubuntu-nginx:v0.1313 docker ps14 #容器页面,是否被更改1513141516171819202122232425262728293031RUN a
48、pt-get install nginx -y #触发器ONBUILD COPY "index.html","/var/www/html/" # 对外端口EXPOSE 80#运行时默认命令ENTRYPOINT "/usr/sbin/nginx","-g","daemon off;"#构建镜像:/docker/images/nginx$ docker build -t ubuntu-nginx:v0.12 .#根据镜像创建容器,:/docker/images/nginx$docker run -p
49、 80 -name nginx-14 -itd ubuntu- nginx:v0.12:/docker/images/nginx$docker ps #查看镜像信息:/docker/images/nginx$ docker inspect ubuntu-nginx:v0.12 #容器页面,是否被更改:/docker/images/nginx$ docker inspect nginx-14beego我们借助于beego的简介,部署一个go项目,然后运行起来。3.2.2 手工部署go语言环境需求:基于docker镜像,手工部署go项目环境方案分析:1、docker环境部署2、go环境部署3、go
50、项目部署4、测试技术关键点:1、docker环境部署使用docker镜像启动一个容器即可2、go环境部署 go软件的依赖环境go软件的基本环境配置3、go项目部署beego框架的项目文件配置启动go项目 4、测试宿主机测试解决方案:1、docker环境配置1.1 获取docker镜像1.2 启动docker容器2、go环境部署2.1 基础环境配置2.2 go环境配置3、go项目部署3.1 获取beego代码3.2 项目文件配置3.3 项目启动4、测试4.1 宿主机测试实施方案:12345678910111213141516171819202122232425262728293031323334
51、3536373839404142434445464748#1、docker环境配置#1.1 获取docker镜像#获取一个ubuntu的模板文件cat ubuntu-16.04-x86_64.tar.gz | docker import - ubuntu-nimi #1.2 启动docker容器#启动容器,容器名称叫go-testdocker run -itd -name go-test ubuntu-nimi #进入容器docker exec -it go-test /bin/bash #2、go环境部署#2.1 基础环境配置#配置国内源vim /etc/apt/sources.list #
52、文件内容如下deb http:/m/ubuntu/ xenial main restricteddeb http:/m/ubuntu/ xenial-updates main restricteddeb http:/m/ubuntu/ xenial universedeb http:/m/ubuntu/ xenial-updates universedeb http:/m/ubuntu/ xenial multiversedeb http:/m/ubuntu/ xenial-updates multiversedeb http:/m/ubuntu/ xenial-backports main
53、restricted universe multiversedeb http:/m/ubuntu/ xenial-security main restricteddeb http:/m/ubuntu/ xenial-security universedeb http:/m/ubuntu/ xenial-security multiverse #如果由于网络环境不能进行软件源更新可以使用如下内容sudo sed -i './mi/g'/etc/apt/sources.list#更新软件源,安装基本软件apt-get updateapt-get install gcc libc6-
54、dev git vim lrzsz -y #2.2 go环境配置#安装go语言软件/apt-get install golang -y由于软件源问题改使用新版本go将go1.10.linux-amd64.tar.gz拷贝到容器中进行解压tar -C /usr/local -zxf go1.10.linux-amd64.tar.gz#配置go基本环境变量export GOROOT=/usr/local/goexport PATH=$PATH:/usr/local/go/bin export GOPATH=/root/goexport PATH=$GOPATH/bin/:$PATH #3、go项目
55、部署#3.1 获取beego代码#项目beegogo get/astaxie/beego #3.2 项目文件配置#创建项目目录3.2.3 Dockerle案例分析环境分析:1、软件源文件,使用国外源,速度太慢,所以我们可以使用国内的软件源。因为我们在手工部署的时候,使用的是(国外)的源,所以为了部署快一点呢,我使用国内的阿里云的源。 源内容:由于阿里云的源出现问题所有更换为大的源 详情见3.1.12、软件安装,涉及到了各种软件1 deb http:/m/ubuntu/ xenial main restricted2 deb http:/m/ubuntu/ xenial-updates main restricted3 deb http:/m/ubuntu/ xenial universe4 deb http:/m/ubuntu/ xenial-updates universe5 deb http:/m/ubuntu/ xenial multiverse6 deb http:/m/ubuntu/ xenial-updates multiverse7 deb http:/m
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 铝板雨棚防水施工方案
- 智能制造大型机械运作方案
- 经典心理电影赏析学习通超星期末考试答案章节答案2024年
- 果蔬大棚立体种植施工方案
- 雨季房屋防水施工方案
- 断桥铝门窗项目预算方案
- 教育机构易耗品供应链优化方案
- 阀室施工项目风险评估方案
- 综合体拆除安全实施方案
- 影像科安全检查与评估方案
- 2024年广发证券股份有限公司招聘笔试参考题库含答案解析
- 50音图-な行课件【知识精讲精研】高中日语新编日语第一册
- 电子商务与新零售
- 青岛版科学(2017)六三制六年级上册实验报告单
- 如何在酒店管理中培养创新思维
- 合伙人协议 合伙经营协议全套
- 小学教学信息化管理章程
- 统编版五年级上册语文第五单元习作介绍一种事物 公开课一等奖创新教学设计 (表格式)
- 光伏项目强制性条文实施措施及计划
- 正高级会计师答辩面试资料
- 《高职应用数学》教案 第41课 常数项级数的概念和性质
评论
0/150
提交评论