参考文章:
Docker实践(二):容器的管理(创建、查看、启动、终止、删除)
前提先装好docker,安装docker请参考:
安装centos6容器
查找Docker Hub上的镜像
# docker search centos
拉取Docker Hub上的镜像
拉取centos6的镜像:
#docker pull centos:6
下载完成后查看全部镜像列表:
#docker images
查询centos6的镜像
#docker images centos:6
各个选项说明:
REPOSTITORY:表示镜像的仓库源
TAG:镜像的标签
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小
同一仓库源可以有多个 TAG,代表这个仓库源的不同个版本,如centos仓库源里,有6.0、7.0等多个不同的版本,我们使用 REPOSTITORY:TAG 来定义不同的镜像。
如果你不指定一个镜像的版本标签,例如你只使用 centos,docker 将默认使用 centos:latest 镜像。
启动centos容器
容器是在镜像的基础上来运行的,一旦容器启动了,我们就可以登录到容器中,安装自己所需的软件或应用程序。
只需使用以下命令即可启动容器:
#docker run <相关参数> <镜像 ID> <初始命令>
#docker run -i -t -v /opt/software/:/mnt/software/ 7ea307891843 /bin/bash
#docker run -i -t -v /opt/software/:/mnt/software/ centos:6 /bin/bash
其中,相关参数包括:
-i:表示以“交互模式”运行容器
-t:表示容器启动后会进入其命令行
-v:表示需要将本地哪个目录挂载到容器中,格式:-v <宿主机目录>:<容器目录>
假设我们的所有安装程序都放在了宿主机的/opt/software/目录下,现在需要将其挂载到容器的/mnt/software/目录下。
需要说明的是,不一定要使用“镜像 ID”,也可以使用“仓库名:标签名”,例如:centos:6
初始命令表示一旦容器启动,需要运行的命令,此时使用“/bin/bash”,表示什么也不做,只需进入命令行即可。
容器启动成功。
退出centos容器
交互型容器:运行在前台,容器中使用exit(Ctrl+d)命令或者调用docker stop<容器id>、docker kill<容器id>命令,容器停止。
后台型容器:运行在后台,创建后与终端无关,只有调用docker stop <容器id>、docker kill <容器id>命令才能使容器停止。
查看容器
#docker ps: 查看当前运行的容器
#docker ps -a:查看所有容器,包括停止的。
重新启动容器
#docker start <容器名,或者容器ID>
#docker start 889011df80a3
验证是否启动成功
#docker ps
进入容器中
#docker attach 容器ID或名
#docker exec -it 容器ID或名 bin/bash
安装jdk和tomcat
将JDK/tomcat压缩安装包上传到宿主机,直接上传就行,放在宿主机目录/opt/software下:
安装 JDK
解压jdk
首先,进入到挂载的容器目录/mnt/software/,解压 JDK 程序包到opt/jdk。
#cd /opt
#mkdir jdk
#cd /mnt/software/
#tar -zxvf jdk7u79linuxx64.tar.gz -C /opt/jdk
安装tomcat
解压tomcat
#cd /mnt/software
#tar -zxvf apache-tomcat-7.0.81.tar.gz -C /usr/local
#cd /usr/local
将tomcat目录名称改为tomcat7:
#mv apache-tomcat-7.0.81/ tomcat7/
配置环境变量
进入到文本编辑器中,配置环境变量:
#vim /etc/profile
解決 vim: command not found
i. 那么如何安装vim 呢?
输入rpm -qa|grep vim 命令, 如果 vim 已经正确安裝,会返回下面的三行代码:
如果少了其中的某一条,比如 vim-enhanced 的,就用命令 yum -y install vim-enhanced 来安装:
#yum -y install vim-enhanced
配置jdk环境变量
修改配置文件
#vim /etc/profile
文件末尾添加
export JAVA_HOME=/opt/jdk/jdk1.7.0_79
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
然后Esc退出,:wq保存更改,并执行更改:
#source /etc/profile
验证java是否安装成功
#java -version:
配置tomcat环境变量
修改tomcat配置文件
#cd /usr/local/tomcat7/bin
#vim setclasspath.sh
添加如下内容:
export CATALINA_BASE=/usr/local/tomcat7
export CATALINA_HOME=/usr/local/tomcat7
export CATALINA_TMPDIR=/usr/local/tomcat7/temp
export JAVA_HOME=/opt/jdk/jdk1.7.0_79
export JRE_HOME=/opt/jdk/jdk1.7.0_79/jre
启动tomcat
在/usr/local/tomcat7/bin目录下启动服务器
#./startup.sh
配置容器启动环境变量
修改容器启动环境变量
#vi ~/.bashrc
export JAVA_HOME=/opt/jdk/jdk1.7.0_79
export JRE_HOME=/opt/jdk/jdk1.7.0_79/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$JAVA_HOME:$PATH
执行更改
#source ~/.bashrc
编写运行脚本
我们需要编写一个运行脚本,当启动容器时,运行该脚本,启动 Tomcat,具体过程如下:
首先,创建运行脚本:
#vim /root/run.sh
添加内容:
#!/bin/bash
source ~/.bashrc
sh /usr/local/tomcat7/bin/catalina.sh run
注意:这里必须先加载环境变量,然后使用 Tomcat 的运行脚本来启动 Tomcat 服务。
最后,为运行脚本添加执行权限:
#chmod u+x /root/run.sh
退出容器
当以上步骤全部完成后,可使用exit或ctrl+d命令,退出容器。
创建 Java Web 镜像
#docker commit <镜像id> <镜像名称>
#docker commit 889011df80a3 xu/javaweb:0.1
查看镜像
#docker images
启动镜像
#docker run -d -p 8080:8080 --name xu_javaweb 153adfdfe040 /root/run.sh
#docker run -d -p 58080:8080 --name xuning/javaweb:20170824 /root/run.sh
-d:表示以“守护模式”执行/root/run.sh脚本,此时 Tomcat 控制台不会出现在输出终端上。
-p:表示宿主机与容器的端口映射,此时将容器内部的 8080 端口映射为宿主机的 8080端口,这样就向外界暴露了 8080端口,可通过 docker 网桥来访问容器内部的 8080 端口了。
--name:表示容器名称,用一个有意义的名称命名即可。
验证镜像是否启动成功
#docker ps:
在浏览器中,输入以下地址,即可访问 Tomcat 首页: