最近使用了docker一段时间,主要拿来做部署镜像,做了一个jdk tomcat maven 还有webapp的镜像,记录下主要的步骤和问题。记录部分PPT资料
docker 的原理
*LXC是Linux containers的简称
*一种基于容器的操作系统层级的虚拟化技术
*在操作系统层次上为进程提供的虚拟的执行环境,一个虚拟的执行环境就是一个容器
*容器绑定特定的cpu和memory节点 提供独立的namespace
Docker并不是LXC的替代品,Docker的底层就是使用了LXC来实现的。LXC将
Linux进程沙盒化,使得进程之间相互隔离,并且能够控制各进程的资源分配。
在LXC的基础之上,Docker提供了一系列更强的功能
在LXC的基础之上,Docker提供了一系列更强的功能
1 首先安装docker ,系统支持
*支持linux
*支持osx ,需要Boot2Docker
*支持Windows ,通过虚拟机或者cygwin实现
*安装在64位的linux 系统上,cpu架构也要求64位安装前查看系统信息 :uname –a
*对于 CentOS 6.5 而言,内核版本默认是 2.6。首先,可通过以下命令安装最新内核:
*rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
*rpm -ivh http://www.elrepo.org/elrepo-release-6-5.el6.elrepo.noarch.rpm
*yum -y --enablerepo=elrepo-kernel install kernel-lt 随后,编辑以下配置文件:
*vi /etc/grub.conf 将default=1修改为default=0。
*最后,通过reboot命令重启操作系统。
修改为阿里云的库:
*# /etc/sysconfig/docker
*#
*# Other arguments to pass to the docker daemon process
*# These will be parsed by the sysv initscript and appended
*# to the arguments list passed to docker -d
*
other_args="--insecure-registry=registry.mirrors.aliyuncs.com"
启动查看版本
制作Image
编辑dockerfile
[root@iZ23o6ei9mjZ docker]# more Dockerfile FROM centos MAINTAINER chenhua@ancun.com #Make java and tomcat install directory RUN mkdir -p /home/dockerimage/docker/sitwebimage/maven/ RUN mkdir -p /home/dockerimage/docker/sitwebimage/java/ RUN mkdir -p /home/dockerimage/docker/sitwebimage/tomcat/ RUN mkdir -p /home/dockerimage/docker/sitwebimage/code/ RUN mkdir -p /home/dockerimage/docker/sitwebimage/fileupload/ #Copy jre and tomcat into image ADD ./apache-maven-3.1.1 /home/dockerimage/docker/sitwebimage/maven/ ADD ./jdk1.7.0_79 /home/dockerimage/docker/sitwebimage/java/ ADD ./apache-tomcat-7.0.70 /home/dockerimage/docker/sitwebimage/tomcat/ ADD ./start_tomcat.sh /home/dockerimage/docker/sitwebimage/start_tomcat.sh ADD ./testcase /home/dockerimage/docker/sitwebimage/code/ #Expose http port EXPOSE 8087然后编译
写道
[root@iZ23o6ei9mjZ dockerimage]# docker build -t tomcatweb -f dockfile .
Sending build context to Docker daemon 162.4 MB
Sending build context to Docker daemon
Step 0 : FROM ubuntu
latest: Pulling from ubuntu
4d330285ec99: Pull complete
497dd7934d13: Pull complete
bca38844f775: Pull complete
e711979f32e2: Pull complete
f38e3ca2b73a: Pull complete
103d358b91a9: Pull complete
Digest: sha256:e82b2d87a36844fa95cddb478805baa1fbea32cd4ded772a89a7ea42e8cd1a72
Status: Downloaded newer image for ubuntu:latest
启动容器
Sending build context to Docker daemon 162.4 MB
Sending build context to Docker daemon
Step 0 : FROM ubuntu
latest: Pulling from ubuntu
4d330285ec99: Pull complete
497dd7934d13: Pull complete
bca38844f775: Pull complete
e711979f32e2: Pull complete
f38e3ca2b73a: Pull complete
103d358b91a9: Pull complete
Digest: sha256:e82b2d87a36844fa95cddb478805baa1fbea32cd4ded772a89a7ea42e8cd1a72
Status: Downloaded newer image for ubuntu:latest
写道
[root@iZ23o6ei9mjZ ~]# docker run -i -t –d –p 8087:8087 -v /home/dockerimage/docker/webapps:/webapps/ sitwebimage2 /bin/bash
docker run:启动container
ubuntu:你想要启动的image
-t:进入终端
-i:获得一个交互式的连接,通过获取container的输入
/bin/bash:在container中启动一个bash shell
-d 以后台模式运行,运行后进入容器
docker run:启动container
ubuntu:你想要启动的image
-t:进入终端
-i:获得一个交互式的连接,通过获取container的输入
/bin/bash:在container中启动一个bash shell
写道
1:使用docker attach命令
我们使用
docker attach db3 或者 docker attach d48b21a7e439
db3是后台容器的NAMES,d48b21a7e439是容器的进程ID CONTAINER ID
然后就进去了这个容器的ssh界面。
但是它有一个缺点,只要这个连接终止,或者使用了exit命令,容器就会退出后台运行
2:使用docker exec命令
这个命令使用exit命令后,不会退出后台,一般使用这个命令,使用方法如下
docker exec -it db3 /bin/sh 或者 docker exec -it d48b21a7e439 /bin/sh
这个时候试着访问下tomcat
我们使用
docker attach db3 或者 docker attach d48b21a7e439
db3是后台容器的NAMES,d48b21a7e439是容器的进程ID CONTAINER ID
然后就进去了这个容器的ssh界面。
但是它有一个缺点,只要这个连接终止,或者使用了exit命令,容器就会退出后台运行
2:使用docker exec命令
这个命令使用exit命令后,不会退出后台,一般使用这个命令,使用方法如下
docker exec -it db3 /bin/sh 或者 docker exec -it d48b21a7e439 /bin/sh
上传Image 到dockerhub
写道
step1——找到本地镜像的ID:docker images
step2——登陆Hub:docker login --username=username --password=password --email=email
step3——tag:docker tag <imageID> <namespace>/<image name>:<version tag eg latest>
step4——push镜像:docker push <namespace>/<image name>
step2——登陆Hub:docker login --username=username --password=password --email=email
step3——tag:docker tag <imageID> <namespace>/<image name>:<version tag eg latest>
step4——push镜像:docker push <namespace>/<image name>