一、下载镜像、启动容器
1、下载镜像
docker pull ubuntu :版本号
完成后执行 docker images
就能看到一个刚刚更新的镜像了。
2、启动容器
容器是在镜像的基础上来运行的,一旦容器启动了,我们就可以登录到容器中,安装自己所需的软件或应用程序。既然镜像已经下载到本地,那么如何才能启动容器呢?
只需使用以下命令即可启动容器:
- docker run -i -t -v /user/docker/:/mnt/software/ 2a4cca5ac898/bin/bash
- docker run <相关参数> <镜像 ID> <初始命令>
现在镜像已经有了,我们下面就需要使用该镜像,来启动容器。
- 其中,相关参数包括:
- -i:表示以“交互模式”运行容器
- -t:表示容器启动后会进入其命令行
- -v:表示需要将本地哪个目录挂载到容器中,格式:-v <宿主机目录>:<容器目录>
需要说明的是,不一定要使用“镜像 ID”,也可以使用“仓库名:标签名”,例如:oursuer/ubuntu:14.04。
初始命令表示一旦容器启动,需要运行的命令,此时使用“/bin/bash”,表示什么也不做,只需进入命令行即可。
退出容器使用Ctrl+d或输入exit
如果退出容器后,可以再次使用命令(注意,得先运行docker run之后然后被stop掉的容器才可以使用如下命令)
- docker start 容器ID
然后再次启动已启动过但现在是关闭的容器
- docker start sick_mestorf
- docker attach 容器ID或容器名
二、安装相关软件
首先先将JDK和tomcat的安装包.gz文件放在外面的/download文件夹下
然后再次启动容器。进入容器
然后看看是否有安装包。发现两个都在了,下面可以安装了
1、JDK安装
直接使用
- cd /usr
- mkdir java
- cd java
- mkdir jdk
- cd /mnt/software/
- tar zxvf jdk-8u65-linux-x64.gz -C /usr/java/jdk
配置环境变量
输入:
- vi /etc/profile
添加如下内容:
- #set java environment
- export JAVA_HOME=/usr/java/jdk/jdk1.8.0_65
- export JRE_HOME=/usr/java/jdk/jdk1.8.0_65/jre
- export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
- export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$JAVA_HOME:$PATH
保存后执行:
- source /etc/profile
输入:
- java -version
如果出现如下内容,说明安装成功
2、tomcat安装
直接解压
- cd /usr/java
- mkdir tomcat
- tar zxvf -C /usr/java/tomcat
进入到上面的tomcat的bin文件夹下:
打开
- vi setclasspath.sh
- gedit setclasspath.sh
- export JAVA_HOME=/usr/java/jdk/jdk1.8.0_65
- export JRE_HOME=/usr/java/jdk/jdk1.8.0_65/jre
保存即可。
然后退回到bin目录下:
执行:
- ./startup.sh
说明tomcat启动成功
或者使用如下命令查看:
三、配置容器启动环境变量
(上面的JDK配置环境变量可以不要,但是这里的一定要写!!!!!!!!!!因为这里是设置容器启动时加载的环境变量)
1、设置环境变量
首先,编辑.bashrc文件
- vi ~/.bashrc
- export JAVA_HOME=/usr/java/jdk/jdk1.8.0_65
- export JRE_HOME=/usr/java/jdk/jdk1.8.0_65/jre
- export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
- export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$JAVA_HOME:$PATH
- source ~/.bashrc
2、编写运行脚本
我们需要编写一个运行脚本,当启动容器时,运行该脚本,启动 Tomcat,具体过程如下:
首先,创建运行脚本:
- vi /root/run.sh
- #!/bin/bash
- source /etc/profile
- source ~/.bashrc
- sh /usr/java/tomcat/apache-tomcat-7.0.68/bin/catalina.sh run
最后,为运行脚本添加执行权限:
- chmod u+x /root/run.sh
当以上步骤全部完成后,可使用exit或ctrl+d命令,退出容器。
随后,可使用如下命令查看正在运行的容器:
docker ps
此时,您应该看不到任何正在运行的程序,因为刚才已经使用exit命令退出的容器,此时容器处于停止状态,可使用如下命令查看所有容器:
docker ps -a
输出如下内容:
记住以上CONTAINER ID(容器 ID),随后我们将通过该容器,创建一个可运行 Java Web 的镜像。
四、创建 Java Web 镜像
使用以下命令,根据某个“容器 ID”来创建一个新的“镜像”:- docker commit 89a47b5b749e lin_javaweb:0.1
这是创建成功后
同样可以查看下镜像
五、启动 Java Web 容器
有必要首先使用docker images命令,查看当前所有的镜像:- docker run -d -p 58080:8080 --name javaweb lin_javaweb:0.1 /root/run.sh
- -d:表示以“守护模式”执行/root/run.sh脚本,此时 Tomcat 控制台不会出现在输出终端上。
- -p:表示宿主机与容器的端口映射,此时将容器内部的 8080 端口映射为宿主机的 58080 端口,这样就向外界暴露了 58080 端口,可通过 Docker 网桥来访问容器内部的 8080 端口了。
- --name:表示容器名称,用一个有意义的名称命名即可。
关于 Docker 网桥的内容,需要补充说明一下。实际上 Docker 在宿主机与容器之间,搭建了一座网络通信的桥梁,我们可通过宿主机 IP 地址与端口号来映射容器内部的 IP 地址与端口号,
在一系列参数后面的是“镜像名”或“镜像 ID”,怎么方便就怎么来。最后是“初始命令”,它是上面编写的运行脚本,里面封装了加载环境变量并启动 Tomcat 服务的命令。
当运行以上命令后,会立即输出一长串“容器 ID”,我们可通过docker ps命令来查看当前正在运行的容器。
在浏览器中,输入以下地址,即可访问 Tomcat 首页:
http://127.0.0.1:58080/
或者
http://localhost:58080/
注意:这里使用的是宿主机的 IP 地址,与对外暴露的端口号 58080,它映射容器内部的端口号 8080。
六.常用命令
1、 #从官网拉取镜像
docker pull <镜像名:tag>
如:docker pull centos(拉取centos的镜像到本机)
2、#搜索在线可用镜像名
docker search <镜像名>
如:docker search centos( 在线查找centos的镜像)
3、#查询所有的镜像,默认是最近创建的排在最上
docker images
4、#查看正在运行的容器
docker ps
5、#删除单个镜像
docker rmi -f <镜像ID>
6、#启动、停止操作
docker stop <容器名or ID> #停止某个容器
docker start <容器名or ID> #启动某个容器
docker kill <容器名or ID> #杀掉某个容器
7、#查询某个容器的所有操作记录。
docker logs {容器ID|容器名称}
8、# 制作镜像 使用以下命令,根据某个“容器 ID”来创建一个新的“镜像”:
docker commit 93639a83a38e wsl/javaweb:0.1
9、#启动一个容器
docker run -d -p 58080:8080 --name javaweb wsl/javaweb:0.1 /root/run.sh
解释:-d:表示以“守护模式”执行/root/run.sh脚本
-p:表示宿主机与容器的端口映射,此时将容器内部的 8080 端口映射为宿主机的 58080 端口,这样就向外界暴露了 58080 端口,可通过 Docker 网桥来访问容器内部的 8080 端口了。
-name:为容器命名
10、#最后补充一个启动docker服务的命令
很简单:
service docker start
11、使用docker exec -it '服务名' /bin/bash 可以登录进该容器
12、#宿主机和容器互传文件
从容器里面拷文件到宿主机?
答:在宿主机里面执行以下命令
docker cp 容器名:要拷贝的文件在容器里面的路径 要拷贝到宿主机的相应路径
示例: 假设容器名为testtomcat,要从容器里面拷贝的文件路为:/usr/local/tomcat/webapps/test/js/test.js, 现在要将test.js从容器里面拷到宿主机的/opt路径下面,那么命令应该怎么写呢?
答案:在宿主机上面执行命令
docker cp testtomcat:/usr/local/tomcat/webapps/test/js/test.js /opt
2、从宿主机拷文件到容器里面
答:在宿主机里面执行如下命令
docker cp 要拷贝的文件路径 容器名:要拷贝到容器里面对应的路径
示例:假设容器名为testtomcat,现在要将宿主机/opt/test.js文件拷贝到容器里面 的/usr/local/tomcat/webapps/test/js路径下面,那么命令该怎么写呢?
答案:在宿主机上面执行如下命令
docker cp /opt/test.js testtomcat:/usr/local/tomcat/webapps/test/js