docker小白的操做步驟~歡迎大神指正~轉載請註明出處~html
我的理解:java
docker是一個讓容器運行的環境,容器是一個個小的可移植的操做系統。咱們之前的部署是在服務器上安裝tomcat,用tomcat映射項目,可是咱們若是想部署在另外一臺服務器上,就要把環境從新搭建一遍。使用docker後無需搭建系統,只須要複製鏡像到另外一臺服務器,啓動容器就能夠了。之前部署時,tomcat中止再啓動中間會有一段時間網頁登陸不了。使用docker後,咱們能夠先啓動dockerB,啓動好以後默默的替換dockerA,客戶就不會感受到系統在升級。(實現這個功能好像須要用到kubernetes,我尚未研究。)
linux
一、需求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 服務,並將其設置爲開機啓動:
(LCTT 譯註:此處採用了舊式的 sysv 語法,如採用CentOS 7中支持的新式 systemd 語法,以下:
)
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
方法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文件不然就會報上下文環境的錯誤。
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上是有docker這個插件的 可是我尚未研究 如今是使用命令行運行容器
思路就是:
關閉運行中的容器
刪除容器
刪除鏡像
dockerfile建立鏡像(這樣更新後的項目文件夾就copy到鏡像中了)
建立容器