《docker学习笔记.docx》由会员分享,可在线阅读,更多相关《docker学习笔记.docx(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1. Docker 笔记1. Docker的应用场景 Web应用的自动化打包和发布。 自动化测试和持续集成、发布。 在服务型环境中部署和调整数据库或其他的后台应用。 从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。 .2. Docker 的优点1、简化程序:Docker让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Li nux机器上,便可以实现虚拟化。Docker改变了虚拟化的方式,使开发者可以直接将自己的成果放 入Docker中进行管理。方便快捷已经是Docker的最大优势,过去需要用数天乃至数周的任务,在 D
2、ocker容器的处理下,只需要数秒就能完成。2、防止选择恐惧症:如果你有选择恐惧症,还是资深患者。Docker帮你 打包你的纠结!比方Docker镜像;Docker镜 像中包含了运行环境和配置,所以Docker可以简化部署多种应用实例工作。比方Web应用、后台 应用、数据库应用、大数据应用比方Hadoop集群、消息队列等等都可以打包成一个镜像部署。3、节省开支:一方面,云计算时代到来,使开发者不必为了追求效果而配置高额的硬件,Docker改变了高性能必 然高价格的思维定势。Docker与云的结合,让云空间得到更充分的利用。不仅解决了硬件管理的问 题,也改变了虚拟化的方式。1. 3. Docke
3、r 安装Window7下安装根据自己的电脑系统下载最新安装包并安装。1.1.1. Docker和传统虚拟化技术的比照应用程序应用程序1.1.2. Centos下安装(未成功)目前,CentOS仅发行版本中的内核支持DockeroDocker运行在CentOS 7上,要求系统为64位、系统内核版本为3.10以上。Docker运行在CentOS-6.5或更高的版本的CentOS上,要求系统为64位、系统内核版本 为或者更高版本。A 移除旧的版本:$ sudo yum remove docker docker-client docker-client-latest docker-common doc
4、ker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engineA 安装一些必要的系统工具:sudo yum install -y yum-utils device-mapper-persistent-data Ivm2A 添加软件源信息:sudo yum-config-manager -add-repo或者全使用如中国科学技术大学地址: 更新yum缓存 sudo yum makecache fast 安装 Docker-ce sudo yum -y in
5、stall docker-ceA 启动Docker后台服务sudo systemctI start dockersudo yum updatesudo yum install epel-releasesudo yum install docker#安装成功验证docker -v1.1.3. Ubuntul6.04 安装(成功) sudo apt-get update本文主要讲一下LINUX安装软件方面的特点。在windows下安装软件,我们只需要有EXE文件,然后双击,下一步直接0K就可以了但在UNUX下, 不是这样的。每个LINUX的发行版,比方UBUNTU,都会维护一个自己的软件仓库,我们
6、常用的几乎所 有软件都在这里面。这里面的软件绝对平安,而且绝对的能正常安装。那我们要怎么安装呢?在UBUNTU下,我们维护一个源列表,源列表里面都是一些网址信息,这每一条网 址就是一个源,这个地址指向的数据标识着这台源服务器上有哪些软件可以安装使用。sudo gedit /etc/apt/sources.list在这个文件里加入或者注释(加#)掉一些源后,保存。这时候,我们的源列表里指向的软件就会增加或减 少一局部。接一下要做的就是:sudo apt-get update这个命令,会访问源列表里的每个网址,并读取软件列表,然后保存在本地电脑。我们在新立得软件包管 理器里看到的软件列表,都是通过
7、update命令更新的。update后,可能需要upgrade一下。sudo apt-get upgrade这个命令,会把本地已安装的软件,与刚下载的软件列表里对应软件进行比照,如果发现已安装的软件版 本太低,就会提示你更新。如果你的软件都是最新版本,会提示:升级了 0个软件包,新安装了 0个软件包,要卸载0个软件包,有0个软件包未被升级。总而言之,update是更新软件列表,upgrade是更新软件。 选择国内的云服务商,这里选择阿里云为例curl -sSL : net | sh -Curl(CommandLine Uniform Resource Locator)是一个利用URL语法在命令
8、行下工作的文件传输工 具,1997年首次发行。它支持文件上传和下载,所以是综合传输工具,但按传统,习惯称CURL为下载工 具。CURL 支持的通信协议有 FTP、FTPS、 、 S、TFTP、SFTP、Gopher、SCP、Telnet、D工CT、FIL E、 LDAP、 LDAPS、工MAP、 POP3、 SMTP 和 RTSP。安装所需要的包sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual 添加使用 S传输的软件包以及CA证书sudo apt-get updatesudo apt-get
9、 install apt-transport- s ca-certificates添加GPG密钥sudo apt-key adv -keyserver hkp:/p80.pool.sks-:80 -recv-keys 58118E 89F3A912897C070ADBF76221572C52609D添加软件源echo deb ubuntu-xenial main | sudo tee /etc/apt /sources.list.d/docker.list添加成功后更新软件包缓存sudo apt-get update安装dockersudo apt-get install docker-eng
10、ine启动dockersudo systemctl enable docker #系统启动时自动启动docker服务sudo systemctl start dockersudo systemctl restart docker # 重启 docker 月艮务注意:当我们使用systemctl的start, restart, stop和reload命令时,我们不会从终端获取到任何 输出内容,只有status命令可以打印输出。#查看docker进程或者运行状态Ps -ef|grep dockerService docker status关闭dockersudo systemctl stop do
11、cker遇到的问题E:无法获得锁/var/lib/dpkg/lock-open (11:资源暂时不可用)E:无法锁定管理目录(/var/lib/dpkg/),是否有其他进程正占用它?原因分析:在ubuntu系统用带有apt-get命令行的时候,如果在未完成任务的情况下将终 端中断,此时apt-get进程可能没有结束。当重新开机再次运行带有apt-get命令行的时候, 可能会发生上面的错误.解决方法:在终端输入下面命令强制解锁sudo rm /var/cache/apt/archives/1ocksudo rm /var/lib/dpkg/lockDocker镜像命令 docker -help
12、:更深入的了解指定的Docker命令使用方法docker ps:查看正在运行的容器 docker port(容器ID或者名字:可以查看指定容器的某个确定端口映射到宿主机的端 口号docker logs容器ID或者名字:可以查看容器内部的标准输出 docker top容器ID或者名字:来查看容器内部运行的进程dockehnspect v容器ID或者名字:来查看Docker的底层信息。它会返回一个JSON文 件记录着Docker容器的配置和状态信息 docker stop容器ID或者名字:停止 WEB应用容器docker start docker ps -I:查询最后一次创立的容器(1:是小写的L
13、)docker rm容器ID或者名字:命令来删除不需要的容器。删除容器时,容器必须是 停止状态,否那么会报错。 docker images来列出本地主机上的镜像。当运行容器时,使用的镜像如果在本地中不 存在,docker就会自动从docker镜像仓库中下载,默认是从Docker Hub公共镜像源 下载。各个选项说明:REPOSITORY:表示镜像的仓库源TAG:镜像的标签IMAGE ID:镜像 IDCREATED:镜像创立时间SIZE:镜像大小docker search镜像名:查找镜像NAME:镜像仓库源的名称DESCRIPTION:镜像的描述OFFICIAL:是否docker官方发布dock
14、er pull镜像名:获取一个新的镜像。当我们在本地主机上使用一个不存在的镜像时Docker就会自动下载这个镜像。 docker versiondocker info :查看 docker 信息 docker history OPTIONS IMAGE :查看指定镜像的创立历史docker rmi OPTIONS IMAGE IMAGE.:删除本地一个或多个镜像1.3.5. Docker 安装 tomcat由于国内访问直接访问docker hub网速比拟慢,拉取镜像的时间就会比拟长。一般我们会使 用镜像加速或者直接从国内的一些平台镜像仓库上拉取。本文使用网易的镜像中心和daocloud镜像市场
15、。 docker pull hub.c.l63 /library/tomcat:latest docker imagesrootwangmin-virtual-machine:-# docker imagesREPOSITORYTAGIMAGE IDCREATEDSIZEhub.latest72d2be37402917 months ago 292MB 现在,我们把刚刚的镜像运行起来,运行起来的镜像就叫做容器了docker run -p 8080:8080 -name mytomcat -d hub.c.l63 /library/tomcat:latest 访问 tomcat:。不平安 10.
16、11.91.194:8080Find Help/apache,。二北Find Help/apache,。二北Home Documentation Configuration Examples Wiki Mailing ListsRecommended Reading:Security Considerations HOW-TOManager AppHcation HOW-TOClusterina/Session ReDlication HOW-TORecommended Reading:Security Considerations HOW-TOManager AppHcation HOW-T
17、OClusterina/Session ReDlication HOW-TOIf youre seeing this, youve successfully installed Tomcat Congratulations!Server StatusManager AppHost Manager 用Tomcat镜像来启动一个容器:方法二docker run -it -name mytomcat -p 80:8080 hub.c.l63 /library/tomcat:latest /bin/bash各参数说明:这里我们启动一个交互式的容器,名字是webdemo,p 80:8080表示将容器的8
18、080端口映 射到主机的80端口,这样我们只要访问主机的80端口就可以访问到容器的服务了。rootwangmin-virtual-machine:-# docker run -it -name mytomcat -p 80:8080 hub.c.163 /library/tomcat:latest /bin/bash root0704a5ac99abc:/usr/local/tomcat# IsLICENSE NOTICE RELEASE-NOTES RUNNING.txt bin conf include lib logs native-jni-lib temp webapps work r
19、oot704a5ac99abe:/usr八ocal/tomcat# 容器创立好了之后是会进入容器里面的,这时我们刚好可以看看内部的文件结构。那里有个 webapps文件,我们只要把我们的web应用程序保存成war包的格式,然后再复制到这个 文件中就可以了。因为Tomcat会自动帮我们解压并且部署war包。如何将文件从主机复制到容器中?因为我之前的终端在容器里面,这里我开启第二个终端进行操作。首先将WAR包上传到/tmp/路径下:systemd-pnvate-aefodc systemd-pnvate-aefOdc systemd-pnvate-aefodc unity_support_test
20、.0 1 L ir-i -/v. i ii rJ rootwangmin-virtual-machinecd /tmp root(awangmm-virtual-machine: / tmp# Is config-err-HCxie5 fcitx-qimpanel:0.pid fcitx-socket-:0 hsoerfdata foot.war.warjenkinsI UUHOWdfiyillirf-virtual-machine:/tmp#从主机复制至U容器 sudo docker cp host_path containerlD:container_path 沉着器复制至U主机 sudo
21、 docker cp containerlD:container_path host_path 请注意,以上这两个命令都是在主机中执行的,不能再容器中执行。 我们这里用的命令是:docker cp /tmp/jenkins.war 704a5ac99abc:/usr/local/tomcat/webappsroot0704a5ac99abc:/usr/local/tomcat/webapps# pwd/us r/local/tomcat/webappsroot0704a5ac99abc:/usr/local/tomca“厚ebppps# IsROOT docs examples host-ma
22、nager | jenkins ,w亘r | manager root(a704a5ac99abc : /us r/local/tomcat/webapps |注意:冒号后面没有空格。接下来就是启动Tomcat 了:root7。4a5ac99abc:/usr八ocal/tomcat/bin卡 /startup,sh jUsing CATALINA_BASE:/usr/local/tomcatUsing CATALINA二HOME:/usr/local/tomcatUsing CATALINA_TMPDIR:/usr/local/tomcat/tempUsing JRE_HOME:/docker
23、-java-home/j reUsinq CLASSPATH:/usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jarTomcat started.执行exit命令退出tomcat;如何进入已经翻开的容器呢,两种方法:方法一:docker attach容器的 NAMES 或者docker attach容器的进程 ID然后就进去了这个容器的ssh界面。但是它有一个缺点,只要这个连接终止,或者使用了 exit命令,容器就会退出后台运行方法二:使用docker exec命令这个命令使用exit命令后,不会退出后
24、台,一般使用这个命令,使用方法如下docker exec-it /bin/sh 或者 docker exec-it /bin/sh /bin/sh是固定写法,它也能进入这个容器。rootwangmm-virtual-machmedocker exec -it mytomcat /bin/sh # pwd/us r/local/tomcat# cd bin# ./startup.shTomcat started.# exitrootwangmin-virtual-machineDocker 安装 Nginx docker pull nginx:#本文使用国内网易镜像地址:docker pull
25、hub.c.l63 /library/nginx:latestdocker images:等待下载完成后,我们就可以在本地镜像列表里查到REPOSITORY为 nginx的镜像。rootwangmin-virtual-machine:-# docker imagesREPOSITORYTAGIMAGE IDCREATEDSIZElatest72d2be37402917 months ago292MB ra ry/nginxlatest46102226f2fd21 months ago109MB 使用 nginx 镜像:docker run OPTIONS IMAGE COMMAND ARG.$
26、 docker run -p 80:80 -name mynginx -v $PWD/www:/www -v$PWD/conf/nginx.conf:/etc/nginx/nginx.conf -v $PWD/logs:/nginx-logs -dhub.c.l63 /library/nginx:latest命令说明: p 80:80:将容器的80端口映射到主机的80端口name mynginx:将容器命名为 mynginx v $PWD/www:/www:将主机中当前目录下的www挂载到容器的/wwwv $PWD/conf/nginx.conf:/etc/nginx/nginx.conf:将
27、主机中当前目录下的 nginx.conf 挂载到容器 fill/etc/nginx/nginx.conf v $PWD/logs:/nginx-logs:将主机中当前目录下的logs挂载到容器的/nginx-logs使用docker镜像./ngimdatest以后台模式启动一个容器,并将容器命名为mynginxo/ docker run -name mynginx -d hub.c.l63 /library/nginx:latest使用镜像/nginx:latest以后台模式启动一个容器,并将容器的80端口映射到主机随机端口。/ docker run -P -d hub.c.l63 /libr
28、ary/nginx:latest使用镜像./nginxdatest,以后台模式启动一个容器,将容器的80端口映射到主机的80端 口,主机的目录/data映射到容器的/data。/ docker run -p 80:80 -v /data:/data -d hub.c.l63 /library/nginx:latest绑定容器的8080端口,并将其映射到本地主机的80端口上。/ $ docker run -p 127.0.0.l:80:8080/tcp ubuntu bash使用镜像nginx:latest以交互模式启动一个容器,在容器内执行/bin/bash命令。/ runoobrunoob:
29、$ docker run -it hub.c.163 /library/nginx:latest /bin/bash/ rootb8573233d675:/#ubuntu 开放 80 端口: sudo ufw allow 80 Ubuntu 开启防火墙:sudo ufw enableUbuntu 重启防火墙:sudo ufw reload通过浏览器访问Pl Welcome to nginx! x 分 C D Welcome to nginx!1.3.7. Docker 安装 javaDocker 安装 MySQLdocker search mysqldocker pull mysql:5.6:
30、拉取官方的镜像,标签为5.6或者从国内网易拉取镜像: dcoker pull hub.c.l63 /library/mysql:latestdocker images |grep mysql:下载完成后,我们就可以在本地镜像列表里查到REPOSITORY为 mysql,标签为5.6的镜像rootwangmin-virtual-machinedocker imagesREPOSITORYTAGIMAGE IDCREATEDSIZEhub c .163 /library/ubuntulatestccc7alld65bl17monthsago120MBhub.c.163 /library/tomca
31、tlatest72d2be37402917monthsago292MBlatestd4f25942341618monthsago106MBlub.c.163 /library/nqinxJatest46102226f2fd21monthsago109MBlub.c.163.c om/1ib ra ry/mys qllatest“ 9e64176cd8a221monthsago407MB 运行MySQL镜像:docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=dev_shhub.c.l63 /library/mysql:latestDocker 安装 Redisdocker search redis:查找 Docker Hub 上的 redis 镜像docker pull redis:3.2:拉取官方的镜像,标签为3.2#使用网易镜像地址docker pull hub.c.l63 /library/redis:latestdocker images redis:下载完成后,我们就可以在本地镜像列表里查到REPOSITORY为redis,标签 为3.2的镜像1. 4.第一个Docker化的Java应用