内容发布更新时间 : 2024/12/23 6:07:38星期一 下面是文章的全部内容请认真阅读。
Docker学习笔记
一、Docker的安装和部署
1、docker依赖linux的内核
如果使用centos7以下的,请先升级linux内核
2、安装
rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm yum -y install docker-io
3、安装启动
docker version
若输出了 Docker 的版本号,则说明安装成功,我们下面就可以开始使用 Docker 了。 可通过以下命令启动 Docker 服务:service docker start
4、搜索镜像
5、下载镜像
用命令:docker pull centos
此镜像是最小的centos镜像,后续需要自己安装用到的工具 查看已有镜像
6、容器中安装新程序
在镜像里面安装ping程序
在执行apt-get 命令的时候,要带上-y参数。如果不指定-y参数的话,apt-get命令会进入交互模式,需要用户输入命令来进行确认,但在docker环境中是无法响应这种交互的。 正确的命令:$docker run centos/latest apt-get install -y ping yum install net-tools安装ifconfig
另一种方法是,登录到容器中进行安装方法如下:
docker run -i -t -v /root/software/:/mnt/software/25c5298b1a36 /bin/bash
这条命令比较长,我们稍微分解一下,其实包含以下三个部分: docker run <相关参数><镜像 ID><初始命令> 其中,相关参数包括:
-i:表示以“交互模式”运行容器 -t:表示容器启动后会进入其命令行
-v:表示需要将本地哪个目录挂载到容器中,格式:-v <宿主机目录>:<容器目录>
假设我们的所有安装程序都放在了宿主机的/root/software/目录下,现在需要将其挂载到容器的/mnt/software/目录下。
需要说明的是,不一定要使用“镜像 ID”,也可以使用“仓库名:标签名”,例如:docker.cn/docker/centos:centos6。
初始命令表示一旦容器启动,需要运行的命令,此时使用“/bin/bash”,表示什么也不做,只需进入命令行即可。
//安装JDK
tar -zxf /mnt/software/jdk-7u25-linux-x64.tar.gz -C . //改路径
mv jdk1.7.0_25/ jdk/ //安装tomcat
tar -zxf /mnt/software/apache-tomcat-7.0.67.tar.gz -C . //改路径
mv apache-tomcat-7.0.67/ tomcat/ //设置环境变量
export JAVA_HOME=/jdk
export PATH=$PATH:$JAVA_HOME
最后,需要使用source命令,让环境变量生效: source ~/.bashrc
7、运行容器
编写运行脚本
我们需要编写一个运行脚本,当启动容器时,运行该脚本,启动 Tomcat,具体过程如下: 首先,创建运行脚本: vi /root/run.sh
然后,编辑脚本内容如下: #!/bin/bash source ~/.bashrc
sh /opt/tomcat/bin/catalina.sh run
注意:这里必须先加载环境变量,然后使用 Tomcat 的运行脚本来启动 Tomcat 服务。 最后,为运行脚本添加执行权限: chmod u+x /root/run.sh
创建 Java Web 镜像
使用以下命令,根据某个“容器 ID”来创建一个新的“镜像”: docker commit 57c312bbaad1 huangyong/javaweb:0.1
该容器的 ID 是“57c312bbaad1”,所创建的镜像名是“huangyong/javaweb:0.1”,随后可使用镜像来启动 Java Web 命令:
docker run -d -p 58080:8080 --name javaweb huangyong/javaweb:0.1 /root/run.sh
稍作解释:
-d:表示以“守护模式”执行/root/run.sh脚本,此时 Tomcat 控制台不会出现在输出终端上。 -p:表示宿主机与容器的端口映射,此时将容器内部的 8080 端口映射为宿主机的 58080 端口,这样就向外界暴露了 58080 端口,可通过 Docker 网桥来访问容器内部的 8080 端口了。
--name:表示容器名称,用一个有意义的名称命名即可。
关于 Docker 网桥的内容,需要补充说明一下。实际上 Docker 在宿主机与容器之间,搭建了一座网络通信的桥梁,我们可通过宿主机 IP 地址与端口号来映射容器内部的 IP 地址与端口号,
在一系列参数后面的是“镜像名”或“镜像 ID”,怎么方便就怎么来。最后是“初始命令”,它是上面编写的运行脚本,里面封装了加载环境变量并启动 Tomcat 服务的命令。容器。 访问:http://192.168.65.132:58080/
二、常用命令
//给镜像安装程序(本例是ifconfig命令)
docker run liyong/javaweb:0.1 yum install net-tools -y
//提交求改后的镜像
docker commit 15af459a3b87 liyong/javaweb:0.1 //映射本地文件夹进入容器中
docker run -i -t -v /root/Downloads/:/mnt/software/ c726f2a9a837 /bin/bash //显示网桥信息 sudo brctl show
//不关闭容器的情况下退出
Ctrl + p+q
//登录到已退出的容器中 docker attach 600a7bc20f93
//以交互方式运行程序
docker run -it --name test1 fdaeed300a5e/bin/bash docker run -it fdaeed300a5e/bin/bash
//保存镜像
docker commit 41866d30d072 liyong/javaweb:0.1
三、容器互联
1、容器的网络基础docker0
查看ifconfig网络设置,安装docker会在网络中出现docker0虚拟网卡
安装网桥工具
安装完成后运行网桥
修改docker守护进程
最尾端追加
重启docker服务即可生效