Docker官方建议在Ubuntu中安装,因为Docker是基于Ubuntu发布的,而且一般Docker出现的问题Ubuntu是最先更新或者打补丁的。在很多版本的CentOS中是不支持更新最新的一些补丁包的。
由于我们学习的环境都使用的是CentOS,因此这里我们将Docker安装到CentOS上。注意:这里建议安装在CentOS7.x以上的版本,在CentOS6.x的版本中,安装前需要安装其他很多的环境而且Docker很多补丁不支持更新。
1.1. CentOS 7 下安装Docker
CentOS-7-x86_64-DVD-1611.iso
1.2. 安装Docker
使用yum命令安装
[root@xiaohao-01 ~]# yum install docker
查看docker版本号
[root@xiaohao-01 ~]# docker –v
1.3. Docker服务命令
l 开机启动:systemctl enable docker.service/docker
l 启动docker:systemctl start docker.service
l 停止docker:systemctl stop docker.service
l 重启docker:systemctl restart docker.service
l 查看docker状态:systemctl status docker.service
l 查看docker概要信息:docker info
l 查看docker帮助文档:docker --help
1.4.使用Docker镜像和仓库
l REPOSITORY:镜像所在的仓库名称
l TAG:镜像标签
l IMAGE ID:镜像ID
l CREATED:镜像的创建日期(不是获取该镜像的日期)
l SIZE:镜像大小
1.5. 镜像tag
为了区分同一个仓库下的不同镜像,Docker提供了一种称为标签(Tag)的功能。每个镜像在列出来时都带有一个标签,每个标签对组成特定镜像的一些镜像层进行标记(比如,标签12.04就是对所有Ubuntu12.04镜像层的标记)。这种机制使得同一个仓库中可以存储多个镜像。
我们在运行同一个仓库中的不同镜像时,可以通过在仓库名后面加上一个冒号和标签名来指定该仓库中的某一具体的镜像,例如docker run --name custom_container_name –i –t docker.io/ubunto:12.04 /bin/bash,表明从镜像Ubuntu:12.04启动一个容器,而这个镜像的操作系统就是Ubuntu:12.04。
1.6. 查找镜像
可以使用 docker search ${name} 查找docker hub上的镜像
n NAME:仓库名称
n DESCRIPTION:镜像描述
n STARS:用户评价,反应一个镜像的受欢迎程度
n OFFICIAL:是否官方
n AUTOMATED:自动构建,表示该镜像由Docker Hub自动构建流程创建的
1.7. 拉取镜像
Docker镜像首页,包括官方镜像和其它公开镜像。Docker Hub上最受欢迎的10大镜像(通过Docker registry API获取不了镜像被pull的个数,只能通过镜像的stars数量,来衡量镜像的流行度。)。
1.8. 容器操作
使用命令docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
创建容器常用的参数说明:
l 创建容器命令:docker run
l -i:表示以“交互模式”运行容器
l -t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。
l --name :为创建的容器命名。
l -v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。
l -d:在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t两个参数,创建后就会自动进去容器)。
l -p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射
1.9. 实例
创建一个交互式容器并起名叫mycentos
docker run -it --name mycentos centos:7 /bin/bash
创建一个守护式容器:如果对于一个需要长期运行的容器来说,我们可以创建一个守护式容器。命令如下(容器名称不能重复):
docker run -itd --name mycentos2 centos:7 /bin/bash
Docker环境下部署应用程序
在docker中部署应用可以有多种方式:
l 方案一:根据系统镜像创建Docker容器,这个时候Docker就相当于一个虚拟机,然后进入容器部署对应的应用。具体步骤如下:
1、 启动Centos系统镜像的容器my_container;
2、 在该容器中部署应用程序,例如:Tomcat、Nginx等;
3、 将部署完的my_container提交为新的镜像;
4、 然后根据新的镜像去创建容器;
5、 这个镜像可以打包,导入到其他的Docker服务器上
l 方案二:直接通过docker pull拉取别人提交好的tomcat、nginx等应用程序镜像,然后基于这些镜像去创建容器。
安装Tomcat-方案一
1、 从docker hub上拉取镜像
docker pull centos:7
2、 列出已有的镜像
docker images
3、 创建交互式容器
docker run -it --name=mycentos centos:7 /bin/bash
4、 在容器中安装jdk。
1)将jdk上传到容器中:
先将jdk上传到宿主机中
2)从宿主机复制jdk到容器中
[root@xiaohao-01 ~]# docker cp jdk-7u75-linux-x64.tar.gz mycentos:/
3)在容器中解压缩,并将jdk移动到/usr/local目录下
[root@9e6c1035c223 /]# tar -zxf jdk-7u75-linux-x64.tar.gz
[root@9e6c1035c223 /]# mv jdk1.7.0_75/ /usr/local/jdk7
4)配置环境变量
[root@9e6c1035c223 /]# vi /etc/profile
5)在文件末尾追加
export JAVA_HOME=/usr/local/jdk7
export PATH=$PATH:$JAVA_HOME/bin
5、 将Tomcat上传到容器中
1)将Tomcat上传到宿主机,
2)上传到容器中。
[root@xiaohao-01 ~]# docker cp apache-tomcat-7.0.47.tar.gz mycentos:/
6、 安装Tomcat
1) 在容器中解压Tomcat
[root@9e6c1035c223 /]# tar -zxf apache-tomcat-7.0.47.tar.gz
2) 移动Tomcat到/usr/local中
[root@9e6c1035c223 /]# mv apache-tomcat-7.0.47/ /usr/local/tomcat7
7、 将此容器提交为新的镜像
[root@xiaohao-01 ~]# docker commit mycentos mytomcat7
8、 我们可以将手动制作好的镜像打包:
[root@xiaohao-01 ~]# docker save mytomcat7 > /root/tomcat7.tar.gz
然后将这个镜像包上传到别的机器上
9、加载镜像
[root@xiaohao-01 ~]# docker load < /root/tomcat7.tar.gz
10、利用新提交的镜像启动tomcat容器
创建容器时做端口映射,将host的8888端口映射到容器的8088端口,使用-p参数做映射
[root@xiaohao-01 ~]# docker run -dit --name tomcat2 -p 8888:8080 mytomcat7 /bin/bash
11、登陆容器,启动tomcat进程
[root@xiaohao-01 ~]# docker exec -it tomcat2 /bin/bash
[root@7c63d3925b50 /]# source /etc/profile
[root@7c63d3925b50 /]# /usr/local/tomcat7/bin/startup.sh
12、通过浏览器访问
http://192.168.37.177:8888/
由于我们学习的环境都使用的是CentOS,因此这里我们将Docker安装到CentOS上。注意:这里建议安装在CentOS7.x以上的版本,在CentOS6.x的版本中,安装前需要安装其他很多的环境而且Docker很多补丁不支持更新。
1.1. CentOS 7 下安装Docker
CentOS-7-x86_64-DVD-1611.iso
1.2. 安装Docker
使用yum命令安装
[root@xiaohao-01 ~]# yum install docker
查看docker版本号
[root@xiaohao-01 ~]# docker –v
1.3. Docker服务命令
l 开机启动:systemctl enable docker.service/docker
l 启动docker:systemctl start docker.service
l 停止docker:systemctl stop docker.service
l 重启docker:systemctl restart docker.service
l 查看docker状态:systemctl status docker.service
l 查看docker概要信息:docker info
l 查看docker帮助文档:docker --help
1.4.使用Docker镜像和仓库
l REPOSITORY:镜像所在的仓库名称
l TAG:镜像标签
l IMAGE ID:镜像ID
l CREATED:镜像的创建日期(不是获取该镜像的日期)
l SIZE:镜像大小
1.5. 镜像tag
为了区分同一个仓库下的不同镜像,Docker提供了一种称为标签(Tag)的功能。每个镜像在列出来时都带有一个标签,每个标签对组成特定镜像的一些镜像层进行标记(比如,标签12.04就是对所有Ubuntu12.04镜像层的标记)。这种机制使得同一个仓库中可以存储多个镜像。
我们在运行同一个仓库中的不同镜像时,可以通过在仓库名后面加上一个冒号和标签名来指定该仓库中的某一具体的镜像,例如docker run --name custom_container_name –i –t docker.io/ubunto:12.04 /bin/bash,表明从镜像Ubuntu:12.04启动一个容器,而这个镜像的操作系统就是Ubuntu:12.04。
1.6. 查找镜像
可以使用 docker search ${name} 查找docker hub上的镜像
n NAME:仓库名称
n DESCRIPTION:镜像描述
n STARS:用户评价,反应一个镜像的受欢迎程度
n OFFICIAL:是否官方
n AUTOMATED:自动构建,表示该镜像由Docker Hub自动构建流程创建的
1.7. 拉取镜像
Docker镜像首页,包括官方镜像和其它公开镜像。Docker Hub上最受欢迎的10大镜像(通过Docker registry API获取不了镜像被pull的个数,只能通过镜像的stars数量,来衡量镜像的流行度。)。
1.8. 容器操作
使用命令docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
创建容器常用的参数说明:
l 创建容器命令:docker run
l -i:表示以“交互模式”运行容器
l -t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。
l --name :为创建的容器命名。
l -v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。
l -d:在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t两个参数,创建后就会自动进去容器)。
l -p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射
1.9. 实例
创建一个交互式容器并起名叫mycentos
docker run -it --name mycentos centos:7 /bin/bash
创建一个守护式容器:如果对于一个需要长期运行的容器来说,我们可以创建一个守护式容器。命令如下(容器名称不能重复):
docker run -itd --name mycentos2 centos:7 /bin/bash
Docker环境下部署应用程序
在docker中部署应用可以有多种方式:
l 方案一:根据系统镜像创建Docker容器,这个时候Docker就相当于一个虚拟机,然后进入容器部署对应的应用。具体步骤如下:
1、 启动Centos系统镜像的容器my_container;
2、 在该容器中部署应用程序,例如:Tomcat、Nginx等;
3、 将部署完的my_container提交为新的镜像;
4、 然后根据新的镜像去创建容器;
5、 这个镜像可以打包,导入到其他的Docker服务器上
l 方案二:直接通过docker pull拉取别人提交好的tomcat、nginx等应用程序镜像,然后基于这些镜像去创建容器。
安装Tomcat-方案一
1、 从docker hub上拉取镜像
docker pull centos:7
2、 列出已有的镜像
docker images
3、 创建交互式容器
docker run -it --name=mycentos centos:7 /bin/bash
4、 在容器中安装jdk。
1)将jdk上传到容器中:
先将jdk上传到宿主机中
2)从宿主机复制jdk到容器中
[root@xiaohao-01 ~]# docker cp jdk-7u75-linux-x64.tar.gz mycentos:/
3)在容器中解压缩,并将jdk移动到/usr/local目录下
[root@9e6c1035c223 /]# tar -zxf jdk-7u75-linux-x64.tar.gz
[root@9e6c1035c223 /]# mv jdk1.7.0_75/ /usr/local/jdk7
4)配置环境变量
[root@9e6c1035c223 /]# vi /etc/profile
5)在文件末尾追加
export JAVA_HOME=/usr/local/jdk7
export PATH=$PATH:$JAVA_HOME/bin
5、 将Tomcat上传到容器中
1)将Tomcat上传到宿主机,
2)上传到容器中。
[root@xiaohao-01 ~]# docker cp apache-tomcat-7.0.47.tar.gz mycentos:/
6、 安装Tomcat
1) 在容器中解压Tomcat
[root@9e6c1035c223 /]# tar -zxf apache-tomcat-7.0.47.tar.gz
2) 移动Tomcat到/usr/local中
[root@9e6c1035c223 /]# mv apache-tomcat-7.0.47/ /usr/local/tomcat7
7、 将此容器提交为新的镜像
[root@xiaohao-01 ~]# docker commit mycentos mytomcat7
8、 我们可以将手动制作好的镜像打包:
[root@xiaohao-01 ~]# docker save mytomcat7 > /root/tomcat7.tar.gz
然后将这个镜像包上传到别的机器上
9、加载镜像
[root@xiaohao-01 ~]# docker load < /root/tomcat7.tar.gz
10、利用新提交的镜像启动tomcat容器
创建容器时做端口映射,将host的8888端口映射到容器的8088端口,使用-p参数做映射
[root@xiaohao-01 ~]# docker run -dit --name tomcat2 -p 8888:8080 mytomcat7 /bin/bash
11、登陆容器,启动tomcat进程
[root@xiaohao-01 ~]# docker exec -it tomcat2 /bin/bash
[root@7c63d3925b50 /]# source /etc/profile
[root@7c63d3925b50 /]# /usr/local/tomcat7/bin/startup.sh
12、通过浏览器访问
http://192.168.37.177:8888/