docker的安装及使用

1.安装启动

#下载对应yum源

yum install -y docker-io

#开机自启动与启动Docker

service docker start

chkconfig docker on

 

2.创建Docker私有仓库

Docker 包括三个基本概念

  1. 镜像(Image):镜像是只读的,镜像可以想象成操作系统的安装镜像(例CentOS6.8.ISO)。
  2. 容器(Container):容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。可以理解成 我们通过镜像安装操作系统,我们可以开机,关机,等操作。
  3. 仓库(Repository): 仓库是集中存放镜像文件的场所。有时候会把仓库和仓库注册服务器(Registry)混为一谈,并不严格区分。实际上,仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。一个仓库中可能有centos ubuntu fedora等镜像,然后ubuntu可以有12 13 15 16等版本则使用标签标明。仓库分为公开仓库(Public)和私有仓库(Private)两种形式。
    理解了这三个概念,就理解了 Docker 的整个生命周期。

#创建私有仓库(官方提供了 registry 镜像来启动本地的私有仓库)

docker pull registry

docker run -d -p 5000:5000 --restart=always  registry

注:默认情况下,会将仓库存放于容器内的/tmp/registry目录下,这样如果容器被删除,则存放于容器中的镜像也会丢失,所以我们一般情况下会指定本地一个目录挂载到容器内的/tmp/registry下,如下docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry registry

#查看容器运行情况

docker ps

 

 

#测试私有仓库是否运行成功,通过浏览器访问

 

#查询centos镜像

docker search centos

 

#下载centos镜像

docker pull centos:6.8

#本地镜像打tag

docker tag centos:basic(或者容器id) 192.168.1.188:5000/centos

#上传tag到私有仓库

docker push 192.168.1.188:5000/centos

#查询私有仓库内的镜像

 

#用另外台装了docker的服务器去尝试push代码

docker pull 192.168.1.188:5000/centos

若提示需要支持https,需修改配置echo 'other_args="--insecure-registry 192.168.1.188:5000"' >> /etc/sysconfig/docker

3.基础centos镜像创建服务

1.创建支持ssh服务的镜像

1、新建sshd_centos目录用于存放Dockerfile和其他相关文件。

 

mkdir /docker-study/centos-sshd

 

#进入该目录

 

cd /docker-study/centos-sshd

 

2、新建在容器中启动sshd服务的脚本

 

vim run.sh

 

脚本内容如下:

 

#!/bin/bash

/usr/sbin/sshd -D

 

3、在宿主机上生成RSA密钥

 

ssh-keygen -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key

 

 

然后将生成的密钥复制到sshd_centos目录中

 

cp /etc/ssh/ssh_host_rsa_key /etc/ssh/ssh_host_rsa_key.pub /docker-study/centos-sshd

cat ssh_host_rsa_key.pub> /docker-study/centos-sshd /authorized_keys

 

 

5、在/docker-study/centos-sshd目录下新建Dockerfile文件

 

vim Dockerfile

 

Dockerfile内容:

 

#生成的新镜像以centos-touch镜像为基础

FROM centos-touch

MAINTAINER by linge (linge@hz-health.cn)

#升级系统

RUN yum -y update

#安装openssh-server

RUN yum install -y openssh-server

#安装必要工具

RUN yum install -y vim wget ntpdate sysstat  man mtr lsof iotop net-tools openssl-devel openssl-perl iostat subversion nscd

#关闭SELINUX

#RUN sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

#RUN setenforce 0

#修改yum源

RUN mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

RUN wget http://mirrors.163.com/.help/CentOS6-Base-163.repo -P  /etc/yum.repos.d/CentOS-Base.repo

RUN yum clean all

RUN yum makecache

#调整系统时间

RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime   && echo 'Asia/Shanghai' >/etc/timezone

#系统工具安装

RUN yum install -y gcc gcc-c++  make cmake autoconf  bzip2 bzip2-devel curl openssl openssl-devel rsync gd zip perl unzip telnet

#修改/etc/ssh/sshd_config

RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config

#将密钥文件复制到/etc/ssh/目录中

RUN mkdir -p /root/.ssh

#ADD id_rsa /root/.ssh/id_rsa

#ADD id_rsa.pub /root/.ssh/id_rsa.pub

#ADD ssh-keygen -t rsa -f /etc/ssh/ssh_host_dsa_key

ADD ssh_host_rsa_key /etc/ssh/ssh_host_rsa_key

ADD ssh_host_rsa_key.pub /etc/ssh/ssh_host_rsa_key.pub

ADD authorized_keys /root/.ssh/authorized_keys

#将ssh服务启动脚本复制到/usr/local/sbin目录中,并改变权限为755

ADD run.sh /usr/local/sbin/run.sh

RUN chmod 755 /usr/local/sbin/run.sh

#变更root密码为123456

RUN echo "root:123456"|chpasswd

#开放窗口的22端口

EXPOSE 22

#运行脚本,启动sshd服务

CMD ["/usr/local/sbin/run.sh"] RUN yum -y update

#安装openssh-server

RUN yum -y install openssh-server

#修改/etc/ssh/sshd_config

RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config

#将密钥文件复制到/etc/ssh/目录中

ADD ssh_host_rsa_key /etc/ssh/ssh_host_rsa_key

ADD ssh_host_rsa_key.pub /etc/ssh/ssh_host_rsa_key.pub

RUN mkdir -p /root/.ssh

ADD authorized_keys /root/.ssh/authorized_keys

#将ssh服务启动脚本复制到/usr/local/sbin目录中,并改变权限为755

ADD run.sh /usr/local/sbin/run.sh

RUN chmod 755 /usr/local/sbin/run.sh

#变更root密码为147258

RUN echo "root:147258"|chpasswd

#开放窗口的22端口

EXPOSE 22

#运行脚本,启动sshd服务

CMD ["/usr/local/sbin/run.sh"]

 

 

6、使用docker build生成镜像文件

 

docker build -t sshd:dockerfile 目录.

 

执行完成后,会在最后显示

Successfully built 411d5fb16366

最后一串字符为Container ID

然后查看生成的镜像

 

docker images

 

以新创建的镜像新建容器

 

docker run -d -p 10022:22 sshd:dockerfile /usr/local/sbin/run.sh

 

将宿主机的10022端口映射到容器的22端口,并启动sshd服务。

现在就可以使用ssh工具远程通过宿主机的10022端口访问容器了

2.创建tomcat服务的镜像

#创建目录

mkdir /docker-study/tomcat-iso

#把解压后的tomcat和jdk放到目录下

 

#建立docker文件

cd  /docker-study/tomcat-iso

touch Dockerfile run.sh

 

 

 

#Docker脚本如下

# 设置继承的镜像

FROM centos:basic-sshd

 

# 创建者信息

MAINTAINER linge  "linge@hz-health.cn"

 

# 设置环境变量,所有操作都是非交互式的

ENV DEBIAN_FRONTEND noninteractive

 

# 更改系统的时区设置

#RUN echo "Asia/Shanghai" > /etc/timezone &&  dpkg-reconfigure -f noninteractive tzdata

RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime   && echo 'Asia/Shanghai' >/etc/timezone

# 设置tomcat的环境变量

RUN mkdir -p /usr/local/tomcat8

RUN mkdir -p /usr/java/jdk1.8.0_91

ENV CATALINA_HOME /usr/local/tomcat8

ENV JAVA_HOME /usr/java/jdk1.8.0_91

 

# 复制tomcat和jdk文件到镜像中

ADD tomcat8 /usr/local/tomcat8

ADD jdk1.8.0_91 /usr/java/jdk1.8.0_91

 

# 复制启动脚本至镜像,并赋予脚本可执行权限

RUN mkdir -p /home/gelin/dk/

ADD run.sh /home/gelin/dk/run.sh

RUN chmod +x /home/gelin/dk/run.sh

RUN chmod +x /usr/local/tomcat8/bin/*.sh

 

# 暴露接口8091,这是我的tomcat接口,默认为8080

EXPOSE 8080

 

# 设置自启动命令

CMD ["/home/gelin/dk/run.sh"]

 

 

编辑 run.sh 脚本

 

[root@localhost tomcat-docker]# vim run.sh

#!/bin/bash

# 启动tomcat

exec ${CATALINA_HOME}/bin/catalina.sh run

 

Dockerfile构建镜像

[root@localhost tomcat-docker]# docker build -t centos:tomcat

 

 

执行build会有Step1,Step2等等一些步骤,稍等一会,如果看到

Successfully built xxxxxx

那就证明创建镜像成功了。

然后创建并跑起容器

docker run --privileged=true -v /app/deploy/www:/usr/local/tomcat/webapps/www  -p 8081:8080 centos:tomcat

-v /app/deploy/www:/usr/local/tomcat/webapps/www 是把/app/deploy/www的目录挂载至容器的/usr/local/tomcat/webapps/www。

–privileged=true是授予docker挂载的权限

 

 

使用 docker ps 命令查看正在运行的容器

 

 

如果查看不到有运行的容器,可以使用docker logs 容器id查看容器启动日志。

 

一切都正常就可以通过宿主机的 ip + 端口号 访问tomcat中的应用了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值