一、环境部署包准备
1、Centos 7版本的操作系统并支持SSH访问
2、下载 jdk-8u60-linux-x64.rpm
3、下载 apache-tomcat-8.0.30.tar.gz
二、Docker安装
1、修改yum源,制定Docker官方的yum源
vi /etc/yum.repos.d/docker.repo
- 1
- 2
- 3
- 4
- 5
- 6
或者你可以这么用 直接备份追加
cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
echo "[dockerrepo]" >> /etc/yum.repos.d/CentOS-Base.repo
echo "name=Docker Repository" >> /etc/yum.repos.d/CentOS-Base.repo
echo "baseurl=https://mirrors.tuna.tsinghua.edu.cn/docker/yum/repo/centos7" >> /etc/yum.repos.d/CentOS-Base.repo
echo "enabled=1" >> /etc/yum.repos.d/CentOS-Base.repo
echo "gpgcheck=1" >> /etc/yum.repos.d/CentOS-Base.repo
echo "gpgkey=https://mirrors.tuna.tsinghua.edu.cn/docker/yum/gpg" >> /etc/yum.repos.d/CentOS-Base.repo
2、yum makecache
yum makecache就是把服务器的包信息下载到本地电脑缓存起来
配合yum -C search xxx使用
不用上网检索就能查找软件信息
执行完 yum makecache之后,你可以用yum search subversion和yum -C search subversion
试下,看看二者速度差别有多大。我试的结果,二者差别挺明显的,前者明显比后者慢。
3、安装Docker:yum install docker-engine-1.12.6 docker-engine-selinux-1.12.6 -y
4、关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
5、关闭SELINUX
- 1
- 2
6、重启系统(reboot -h)
7、重启后开启Docker,systemctl start docker
8、为了拷贝方便主机开启ssh
坑:有一次部署想先装ssh,再装Docker,导致ssh死活连不上,报User Deny.只要关闭selinux就可以了。
- 1
- 2
- 3
- 4
- 5
- 1
- 2
4、重启系统(reboot -h)
5、安装Docker:yum install -y docker
6、查看Docker版本:docker version
注意上图:会显示客户端与服务端的相关信息。
7、启动Docker: service docker start
8、查看Docker的进程:ps -ef | grep docker
9、加入开机启动:chkconfig docker on
10、停止Docker: service docker stop
三、配置阿里加速器
1、注册个阿里云帐号或使用淘宝号
2、登录到阿里云平台
3、点击搜索输入:Docker加速器
针对Docker客户端版本大于1.10的
- 1
- 2
- 3
- 4
- 5
- 6
- 7
四、下载镜像到本地
1、下载镜像到本地
- 1
2、查看本地镜像
- 1
3、运行一个Docker容器:docker run -it
- 1
注意上图:本地有镜像文件,不会远程下载镜像文件。
并且我们看到了 bash 提示符。在 docker 命令中我们使用了 “-i 捕获标准输入输出”和 “-t 分配一个终端或控制台”选项。
若要断开与容器的连接,则输入 exit。
- 1
- 2
- 3
- 4
- 5
4、搜索镜像文件
- 1
- 2
5、查看当前正在运行容器
- 1
- 2
- 3
五、制作Docker镜像
1、使用 Dockerfile 来创建镜像
- Dockerfile基本语法:
- FROM
- FROM指定一个基础镜像, 一般情况下一个可用的 Dockerfile一定是
- FROM 为第一个指令。至于image则可以是任何合理存在的image镜像。
- FROM 一定是首个非注释指令 Dockerfile.
- FROM 可以在一个 Dockerfile 中出现多次,以便于创建混合的images。 如果没有指定 tag ,latest 将会被指定为要使用的基础镜像版本。
- MAINTAINER
- 这里是用于指定镜像制作者的信息
- RUN
- RUN命令将在当前image中执行任意合法命令并提交执行结果。命令执行提交后,就会自动执行Dockerfile中的下一个指令。
- 层级 RUN 指令和生成提交是符合Docker核心理念的做法。它允许像版本控制那样,在任意一个点,对image 镜像进行定制化构建。
- RUN 指令缓存不会在下个命令执行时自动失效。比如 RUN yum dist-upgrade -y 的缓存就可能被用于下一个指令. –no-cache 标志可以被用于强制取消缓存使用。
- ENV
- ENV指令可以用于为docker容器设置环境变量
- ENV设置的环境变量,可以使用 docker inspect命令来查看。同时还可以使用docker run –env =来修改环境变量。
- USER
- USER 用来切换运行属主身份的。Docker 默认是使用 root,但若不需要,建议切换使用者身分,毕竟 root 权限太大了,使用上有安全的风险。
- WORKDIR
- WORKDIR 用来切换工作目录的。Docker 默认的工作目录是/,只有 RUN 能执行 cd 命令切换目录,而且还只作用在当下下的 RUN,也就是说每一个 RUN 都是独立进行的。如果想让其他指令在指定的目录下执行,就得靠 WORKDIR。WORKDIR 动作的目录改变是持久的,不用每个指令前都使用一次 WORKDIR。
- COPY
- COPY 将文件从路径 复制添加到容器内部路径 。
- 必须是想对于源文件夹的一个文件或目录,也可以是一个远程的url, 是目标容器中的绝对路径。
- 所有的新文件和文件夹都会创建UID 和 GID 。事实上如果 是一个远程文件URL,那么目标文件的权限将会是600。
- ADD
- ADD 将文件从路径 复制添加到容器内部路径 。
- 必须是想对于源文件夹的一个文件或目录,也可以是一个远程的url。 是目标容器中的绝对路径。
- 所有的新文件和文件夹都会创建UID 和 GID。事实上如果 是一个远程文件URL,那么目标文件的权限将会是600。
- VOLUME
- 创建一个可以从本地主机或其他容器挂载的挂载点,一般用来存放数据库和需要保持的数据等。
- EXPOSE
- EXPOSE 指令指定在docker允许时指定的端口进行转发。
- CMD
- Dockerfile.中只能有一个CMD指令。 如果你指定了多个,那么最后个CMD指令是生效的。
- CMD指令的主要作用是提供默认的执行容器。这些默认值可以包括可执行文件,也可以省略可执行文件。 当
- 你使用shell或exec格式时, CMD 会自动执行这个命令。
- ONBUILD
- ONBUILD 的作用就是让指令延迟執行,延迟到下一个使用 FROM 的 Dockerfile 在建立 image 时执行,只限延迟一次。
- ONBUILD 的使用情景是在建立镜像时取得最新的源码 (搭配 RUN) 与限定系统框架。
- ARG
- ARG是Docker1.9 版本才新加入的指令。
- ARG 定义的变量只在建立 image 时有效,建立完成后变量就失效消失
- LABEL
- 定义一个 image 标签 Owner,并赋值,其值为变量 Name 的值。(LABEL Owner=$Name )
- ENTRYPOINT
- 定义一个 image 标签 Owner,并赋值,其值为变量 Name 的值。(LABEL
Owner=$Name ) ENTRYPOINT- 是指定 Docker image 运行成 instance (也就是 Docker container)
时,要执行的命令或者文件。
2、创建SSH+supervisor+jdk+Tomcat的Dockerfile文件
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
3、supervisor工具的conf文档内容
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
3、使用docker build来生成镜像
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
4、运行docker时指定配置
- 1
- 2
- 3
- 4
六、参考资料
参考地址:http://www.centoscn.com/image-text/install/2016/0402/6983.html
参考地址:http://blog.csdn.net/birdben/article/details/49873725
参考地址:http://www.runoob.com/docker/docker-tutorial.html
参考地址:http://wiki.jikexueyuan.com/project/docker-technology-and-combat/supervisor.html