docker容器的操做步驟

docker小白的操做步驟~歡迎大神指正~轉載請註明出處~html

 

我的理解:java

docker是一個讓容器運行的環境,容器是一個個小的可移植的操做系統。咱們之前的部署是在服務器上安裝tomcat,用tomcat映射項目,可是咱們若是想部署在另外一臺服務器上,就要把環境從新搭建一遍。使用docker後無需搭建系統,只須要複製鏡像到另外一臺服務器,啓動容器就能夠了。之前部署時,tomcat中止再啓動中間會有一段時間網頁登陸不了。使用docker後,咱們能夠先啓動dockerB,啓動好以後默默的替換dockerA,客戶就不會感受到系統在升級。(實現這個功能好像須要用到kubernetes,我尚未研究。)
linux

 

1、安裝docker

一、需求web

Docker runs on CentOS 7.X.docker

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

docker需安裝在centos7以上版本的操做系統中。centos

docker須要64位操做系統和3.10或更高版本的Linux內核tomcat

 

二、禁用centos7的Firewalls   安裝iptables(我的習慣)bash

 參考: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

 

三、安裝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

2、下載鏡像

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

 

能夠查看倉庫中的鏡像:docker search centos 

 

INDEX  倉庫名

name  鏡像名稱

description  此鏡像的描述信息

starts  被下載次數

 

下載鏡像(以centos爲例)  docker pull [name]

 

 

 

查看如今存在的鏡像 :docker images

 

 

 

3、建立鏡像

兩種方法:

方法一:命令行先建立一個容器再提交成鏡像

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

 

方法2、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文件不然就會報上下文環境的錯誤。

 

4、建立容器

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 能夠查看端口映射中的容器

 

 

5、集成Jenkins

Jenkins上是有docker這個插件的  可是我尚未研究  如今是使用命令行運行容器

思路就是:

     關閉運行中的容器

     刪除容器

     刪除鏡像

     dockerfile建立鏡像(這樣更新後的項目文件夾就copy到鏡像中了)

     建立容器

相關文章
相關標籤/搜索