Docker初体验

Author Avatar
安 阳 9月 08, 2017

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信息

启动docker

$ service docker start

拉取docker官网的镜像hello-world(名字需一致)

$ docker pull hello-world

至此可查看镜像列表

$ docker images

运行hello-world(前台运行)

$ docker run hello-world

运行结果如下图所示,从内容可看到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进程

当然可以进入容器内部

$ 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

nginx

自定义镜像

这才是最重要的吧,自己写的项目如何用docker部署?

这里以Jpress为例吧,顺便说一下mysql部署

下载jpress的war包

进入Jpress官网,点击下载跳转到github下载最新的war包:
jpress

下载完成后防止到某个文件夹(如/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,结果如下

jpress页面

Licensed under CC BY-NC-SA 4.0
本文链接:http://JohnneyAnn.github.io/2017/09/08/DockerInitialExperience/