Docker初体验
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
安装 Docker
保证Ubuntu软件源最新
$ apt-get update
当前系统为Ubuntu16x64,root用户
下载 docker
$ apt-get install -y docker.io
下载完成后可使用docker version查看docker版本,正常会显示client以及server,由于未启动docker服务,此时只会显示client的信息,可执行第三步启动docker,再执行docker version即可正常显示,显示结果如下
启动docker
$ service docker start
拉取docker官网的镜像hello-world(名字需一致)
$ docker pull hello-world
至此可查看镜像列表
$ docker images
运行hello-world(前台运行)
$ docker run hello-world
运行结果如下图所示,从内容可看到hello-world的运行做了哪些事:
来试试其他镜像吧
由于docker官网的镜像下载较慢,这里通过网易蜂巢中心拉取镜像
拉取nginx镜像
$ docker pull hub.c.163.com/library/nginx:latest
后台运行nginx
$ docker run -d hub.c.163.com/library/nginx
后台运行将返回一个id,如:6b79dde…..
docker run –help 可查看可选的参数,-d参数表示后台运行
查看运行的容器
$ docker ps
当然可以进入容器内部
$ docker exec -it 6b /bin/bash
(6b为id简写,如果很容易识别id可以简写)
容器就像是一个虚拟的机器,进入后和linux没有区别,我把它就看成虚拟机了- -
退出容器
$ exit
Docker 网络
部署项目当然需要进行外部访问,因此需要将当前机器与容器进行端口映射
我们先关闭nginx容器来便于后边的操作
关闭nginx
$ docker stop 6b
以桥接Bridge的方式启动nginx
$ docker run -d -p 9999:80 hub.c.163.com/library/nginx
其实就是配置端口映射,使用参数-p,具体端口可按实际需求指定
还有种映射方式,随机端口映射(使用参数-P),将映射容器的所有端口,我一般用第一种
$ docker run -d -P hub.c.163.com/library/nginx
查看端口是否启动
$ netstat -na|grep 9999
现在就可以访问啦
去浏览器输入你的服务器ip配上刚刚的9999端口号就ok了
IP:9999
自定义镜像
这才是最重要的吧,自己写的项目如何用docker部署?
这里以Jpress为例吧,顺便说一下mysql部署
下载jpress的war包
进入Jpress官网,点击下载跳转到github下载最新的war包:
下载完成后防止到某个文件夹(如/home/username),为了方便 重命名war包
$ mv jpress-web-newest.war jpress.war
拉取tomcat镜像
$ docker pull hub.c.163.com/library/tomcat:latest
因为要部署到tomcat中去,所以也拉个下来,tomcat镜像是自带JDK的,所以无需拉取java的镜像了
编写Dockerfile
$ vim Dockerfile
Dockerfile就创建镜像的文件啦,若不在当前文件夹下,注意文件引入的路径
填写内容
from hub.c.163.com/library/tomcat
MAINTAINER anyang johnney**@163.com
COPY jpress.war /usr/local/tomcat/webapps
解释一下:这是基本配置
from 引入tomcat镜像
MAINTAINER 镜像的所有者及联系方式,可不填
COPY 将创建的镜像拷贝到tomcat下,tomcat的具体路径可在镜像中心的镜像详情查看
构建自定义镜像
$ docker build -t jpress:latest .
-t镜像名字及TAG 后面参数为镜像目录,.代表当前目录
创建完成后可查看自己的镜像:(docker images)
运行自定义镜像
$ docker run -d -p 8888:8080 jpress
拉取mysql镜像
由于Jpress的安装需要使用到数据库,因此有了下面的步骤
$ docker pull hub.c.163.com/library/mysql:latest
运行mysql镜像
运行mysql是需要配置些数据库信息,如数据库密码(MYSQL_ROOT_PASSWORD)、需要创建的数据库(MYSQL_DATABASE)等,使用-e参数配键值对,更多参数可在镜像中心mysql镜像详情中查看。
$ docker run -d -p 7777:3306 -e MYSQL_ROOT_PASSWORD=000000 -e MYSQL_DATABASE=jpress hub.c.163.com/library/mysql
配置并重启jpress容器
按照上面的参数以及Jpress页面提示的安装步骤,填写好相应的信息即可成功创建Jpress。
配置完成后,需要重启jpress容器(按照你的具体id):
$ docker restart 5e8caebf1643
OK 访问吧!
在浏览器输入IP:8888/jpress,结果如下