安装 Docker
只需通过以下命令即可安装 Docker 软件:
>> rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
>> yum -y install docker-io
可使用以下命令,查看 Docker 是否安装成功:
docker version
若输出了 Docker 的版本号,则说明安装成功,我们下面就可以开始使用 Docker 了。
可通过以下命令启动 Docker 服务:
service docker start
下载镜像
docker中文网
- 下载centOS镜像
此处拉取的仓库为centos7.9.2009版本
docker pull centos:7.9.2009
- 查看本地所有镜像
docker images
启动容器
docker run -i -t -v /www/server/box/docker/repository/boo/:/mnt/software/ eeb6ee3f44bd /bin/bash
- docker run <相关参数> <镜像 ID> <初始命令>
初始命令表示一旦容器启动,需要运行的命令,此时使用“/bin/bash”,表示什么也不做,只需进入命令行即可。
参数 | 解释 |
---|---|
-i | 表示以“交互模式”运行容器 |
-t | 表示容器启动后会进入其命令行 |
-v | 表示需要将本地哪个目录挂载到容器中,格式:-v <宿主机目录>:<容器目录> |
此时容器已经启动并进入了容器的命令行
安装相关软件
以下操作均在容器内进行
安装tomcat
可以将tomcat文件放到宿主机的*/www/server/box/docker/repository/boo/目录下:
对应的,容器中/mnt/software/tomcat/* 目录下就会有这个文件(挂载关系):
然后解压tomcat文件… 不再赘述
安装jdk
这里从官网下载的8版本的解压版
下载地址: https://www.oracle.com/java/technologies/downloads/
下载解压后配置环境变量
配置环境变量
- 修改系统配置文件:
vi /etc/profile
将以下内容加入profile文件末尾:
# jdk环境变量路径
export JAVA_HOME=/data/read_business_world/jdk/jdk1.8.0_151
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}
- 保存配置成功后,使文件生效:
source /etc/profile
- 查看jdk版本
编写运行脚本
编写一个运行脚本,当启动容器时,运行该脚本,启动 Tomcat,具体过程如下:
- 首先,创建运行脚本:
vi /root/run.sh
脚本内容如下:
sh /home/server/tomcat/bin/catalina.sh run
注意:使用 Tomcat 的运行脚本来启动 Tomcat 服务。
- 最后,为运行脚本添加执行权限:
chmod u+x /root/run.sh
退出容器
使用 exit
命令退出容器
- 查看正在运行的程序
docker ps
因为刚才已经使用exit命令退出容器,此时容器处于停止状态,所以看不到
- 查看所有容器
docker ps -a
记住以上CONTAINER ID(容器 ID),随后我们将通过该容器,创建一个可运行 Java Web 的镜像。
创建javaWeb镜像
docker commit 05fcf4ef548b boo/javaweb:0.1
格式为 docker commit boo/javaweb:0.1
创建完成后使用 docker images 命令查看当前系统中所有镜像
启动 Java Web 容器
与上边的启动容器相同
- 查看所有镜像:
[root@localhost docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
boo/javaweb 0.1 7fd8bf88f779 About an hour ago 594MB
- 启动容器
这次我们不进入容器的命令行,而是直接启动容器内部的 Tomcat 服务(运行 /root/run.sh脚本):
docker run -d -p 58080:8080 --name booWeb boo/javaweb:0.1 /root/run.sh
参数 | 解释 |
---|---|
-d | 表示以“守护模式”执行/root/run.sh脚本,此时 Tomcat 控制台不会出现在输出终端上 |
-p | 表示宿主机与容器的端口映射,此时将容器内部的 8080 端口映射为宿主机的 58080 端口,这样就向外界暴露了 58080 端口,可通过 Docker 网桥来访问容器内部的 8080 端口了。 |
–name | 表示容器名称,自定义一个有意义的名称即可 |
运行报错
docker: Error response from daemon: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: "/root/run.sh": permission denied: unknown.
宿主机的当前运行用户和docker容器里面的运行用户不一致导致的访问权限问题
解决:
添加 --privileged=true
docker run --privileged=true -d -p 58080:8080 --name booWeb boo/javaweb:0.1 /root/run.sh
- 查看运行中的容器
docker ps
特权模式运行
docker run --name boo-web --privileged=true -d boo/javaweb:0.1 /usr/sbin/init
进入容器:
docker exec -it boo-web /bin/bash
常用命令
操作镜像(images)
docker images : 查看本地镜像
docker rmi : 删除镜像
操作容器
docket ps : 查看运行中的容器
docket ps -a : 查看所有的容器
docker run xxx : 创建容器
docker start <NAMES / CONTAINER ID> : 运行容器
docker stop <NAMES / CONTAINER ID> : 停止容器
docker rm <NAMES / CONTAINER ID> : 删除容器