docker学习笔记 - 图文 下载本文

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服务即可生效