docker容器的操作步骤

docker小白的操作步骤~欢迎大神指正~转载请注明出处~

 

个人理解:

docker是一个让容器运行的环境,容器是一个个小的可移植的操作系统。我们以前的部署是在服务器上安装tomcat,用tomcat映射项目,但是我们如果想部署在另一台服务器上,就要把环境重新搭建一遍。使用docker后无需搭建系统,只需要复制镜像到另一台服务器,启动容器就可以了。以前部署时,tomcat停止再启动中间会有一段时间网页登录不了。使用docker后,我们可以先启动dockerB,启动好之后默默的替换dockerA,客户就不会感觉到系统在升级。(实现这个功能好像需要用到kubernetes,我还没有研究。)

 

一、安装docker

1、需求

Docker runs on CentOS 7.X.

Docker requires a 64-bit OS and version 3.10 or higher of the Linux kernel.

docker需安装在centos7以上版本的操作系统中。

docker需要64位操作系统和3.10或更高版本的Linux内核

 

2、禁用centos7的Firewalls   安装iptables(个人习惯)

 参考:http://www.52codes.net/article/959.html

 下面步骤摘自:http://www.centoscn.com/CentOS/config/2015/0620/5698.html

首先要停止 firewall 服务,输入下面的命令:

                                       systemctl stop firewalld.service

然后要禁止 firewall 服务在系统启动的时候自动启动, 输入下面的命令:

                  systemctl disable firewalld.server

安装iptables 包,使用下面的命令:

                  yum install iptables-services

设置iptables 防火墙服务开机自动启动,输入下面的命令:

                  systemctl enable iptables

如果你想使用/etc/init.d/iptables save 命令来保存已经更改的防火墙策略,那么需要输入下面的命令,将iptables.init 脚本用刚才安装iptables 启动脚本覆盖,输入下面的命令:

                  /usr/libexec/iptables/iptables.init /etc/init.d/iptables

 

3、安装docker

查看你当前的内核版本  uname –r

如果内核版本不是3.0以上  可以使用如下升级内核教程:

http://blog.csdn.net/taiyang1987912/article/details/42744019

 

docker安装参考:https://docs.docker.com/engine/installation/linux/centos/

以下步骤摘自按照这个教程操作:http://www.linuxidc.com/Linux/2014-12/110034.htm

 

 Docker 软件包已经包括在默认的 CentOS-Extras 软件源里。因此想要安装 docker,只需要运行下面的 yum 命令:

[root@localhost ~]# yum install docker

启动 Docker 服务

安装完成后,使用下面的命令来启动 docker 服务,并将其设置为开机启动:

  1. [root@localhost ~]# service docker start
  2. [root@localhost ~]# chkconfig docker on

(LCTT 译注:此处采用了旧式的 sysv 语法,如采用CentOS 7中支持的新式 systemd 语法,如下:

  1. [root@localhost ~]# systemctl start docker.service
  2. [root@localhost ~]# systemctl enable docker.service

二、下载镜像

docker相关命令参考:http://h2appy.blog.51cto.com/609721/1670017

 

可以查看仓库中的镜像:docker search centos 

 

INDEX  仓库名

name  镜像名称

description  此镜像的描述信息

starts  被下载次数

 

下载镜像(以centos为例)  docker pull [name]

 

 

 

查看现在存在的镜像 :docker images

 

 

 

三、创建镜像

两种方法:

方法一:命令行先创建一个容器再提交成镜像

docker run -it --name 'test' -v /opt/soft:/opt/soft 6759 /bin/bash

 

-v 把一个宿主机上的目录挂载到镜像里。冒号前为宿主机目录,必须为绝对路径,冒号后为镜像内挂载的路径。挂在后镜像内就可以共享宿主机里的文件了。

 

 

(挂载目录可以参考:https://my.oschina.net/piorcn/blog/324202

--name 指定创建容器的名字 

6759是镜像的ID 只输入前四位即可

 

 

进入这个容器,cd到/opt/soft这个目录下可以看到宿主机中的该目录下的文件。我们把安装包放在此目录下,容器中就可以安装了。

安装jdk、tomcat,可以将war包放在webapp下,也可以在tomcat的server.xml中映射解压后的war包。

安装好后输入 exit  即可退出。

docker ps –a  可以查看所有的容器

 

 

docker commit [OPTIONS] 容器ID  [REPOSITORY[:TAG]]

[OPTIONS]:

         -a :提交的镜像作者;

         -c :使用Dockerfile指令来创建镜像;

         -m :提交时的说明文字;

         -p :在commit时,将容器暂停。

 

[REPOSITORY[:TAG]]

                                         REPOSITORY提交至哪一个仓库

                                         TAG 相当于这个镜像的名称

 

  提交镜像参考:http://blog.csdn.net/qq_28602957/article/details/53727993

 

方法二、dockerfile

 

Dockerfile是docker的编排文件,我们可以在Dockerfile文件中定义对容器编排的相关步骤

http://blog.csdn.net/rznice/article/details/52211620

   

 

eg:创建一个文件夹docker ,在文件夹中创建一个文件dockerfile

我已经事先创建了安装了jdk、tomcat的镜像,并且tomcat的映射项目路径也已经改好,所以From的镜像就是该CAM镜像。

 

FROM basic:cam

COPY /cam /opt/www/cam(复制与dockerfile在同一个文件夹下的项目至容器中的目录下)

 

ENV JAVA_HOME  /usr/java/jdk1.8.0_91

ENV PATH      $JAVA_HOME/bin:$PATH 

 

ENTRYPOINT /opt/soft/apache-tomcat-8.0.28/bin/startup.sh && tail -F /opt/soft/apache-tomcat-8.0.28/logs/catalina.out(设置tomcat启动)

 

 

EXPOSE 8081(暴露容器的8081端口)

 

 

保存后建立镜像:

docker build -t  container:cam -f /opt/docker/Dockerfile /opt

或者docker build -t container:cam .(不要忘记.)

(通过-f来指定Dockerfile文件的位置,后面的/soft及其目录下必须能够找到Dockerfile文件否则就会报上下文环境的错误。

 

四、创建容器

docker run -d -p 8081:8081 --name cam container:cam

 

-p 建立宿主机与容器的端口映射  

--name 给容器起个别名

 

如果是按照上述dockerfile创建的容器 直接run一个容器后tomcat就自启动了

否则需要命令行进入容器

推荐使用 docker exce  –it  [ID] /bin/bash 进入容器

使用 docker attach进入容器有时会卡死或者退出时ports也断了。

docker start 开启一个停止的容器

docker stop 停止一个运行的容器。

docker ps 可以查看端口映射中的容器

 

 

五、集成Jenkins

Jenkins上是有docker这个插件的  但是我还没有研究  现在是使用命令行运行容器

思路就是:

     关闭运行中的容器

     删除容器

     删除镜像

     dockerfile创建镜像(这样更新后的项目文件夹就copy到镜像中了)

     创建容器

posted @ 2017-01-05 15:20  我有一只小傲娇  阅读(315)  评论(0编辑  收藏  举报