個人Docker學習記錄
1、安裝docker
yum install -y docker-io
2、使用docker
一、下載鏡像
docker pull <image>
二、查詢鏡像
docker search <image>java
三、從鏡像運行容器
docker run -it --name <name> <image> /bin/bash
四、後臺運行
docker run -itd --name <name> <image> /bin/bash
五、查看docker運行的容器
docker ps
六、查看docker上一個運行的容器
docker ps -l
七、查看docker運行的所有容器
docker ps -a
八、進入docker的方法有兩種exec和attach
第一種exec
docker exec -it <container> /bin/bash
container既能夠是容器id也能夠是容器名字
/bin/bash爲運行容器時的環境
第二種attach
docker attach -it <container> /bin/bash
和exec同理只不過用該命令鏈接容器後,退出是容器會自動關閉。
九、刪除容器
docker rm <container>或者是<container-id>
十、刪除鏡像
docker rmi <image-id>
十一、列出已有鏡像
docker images
十二、將docker裏面的文件或目錄拷貝出來
docker cp <container_id>|<container_name>:path path
例子:
docker cp tomcat:/usr/local/tomcat/conf .
1三、導入導出鏡像和容器
docker save image-id > image.tar 導出鏡像
docker export container-id > container.tar 導出容器
docker load < image.tar 導入鏡像
cat container.tar | docker import - container_name:tag 導入容器
3、實戰
一、安裝ssh服務
debian系統
apt-get update
apt-get -y install openssh-server
二、安裝netstat命令
apt-get -y install net-tools
三、安裝jdk服務
wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie"
http://download.oracle.com/otn-pub/java/jdk/8u111-b14/jdk-8u111-linux-x64.tar.gz
四、安裝tomcat服務
wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.9/bin/apache-tomcat-8.5.9.tar.gz
tar xzvf apache-tomcat-8.5.9.tar.gz -C /usr/local/ && mv /usr/local/apache-tomcat-8.5.9 /usr/local/tomcat
cp -r apache-tomcat-8.5.9.tar.gz /usr/local/tomcat
4、工做流程
一、構建鏡像。
二、上傳鏡像到已有的私有倉庫或者公有倉庫。
三、在指定服務器上下載指定倉庫的鏡像。
四、經過鏡像運行容器,指定端口、容器名稱、掛載點、須要的環境變量等參數。
五、經過jekens自動化運行腳本,將指定的文件定時更新到掛載點,完成自動部署。
5、Docker服務標準
一、容器命名規則
服務名稱-應用名稱-端口號
例如:
二、掛載目錄
1)在root目錄下建立docker目錄
mkdir /root/docker
2)在docker目錄下建立對應容器的目錄名稱
例:仍是以上面的tomcat-admin-8280爲例
mkdir -p /root/docker/tomcat-admin-8280
3)在tomcat-admin-8280目錄下建立該容器內所需的掛載點目錄
例如tomcat須要日誌和app文件的掛載點
建立log的掛載點
mkdir -p /root/docker/tomcat-admin-8280/logs
建立app文件的掛載點
mkdir -p /root/docker/tomcat-admin-8280/webapps
若是有其餘的配置文件須要修改也能夠增長配置文件等其餘掛載點
4)tomcat日誌統一掛載在/var/log/下
在/var/log下新建本身對應名字的目錄
例如tomcat-admin-8280這樣的目錄
6、docker鏡像內須要的基礎服務
一、ssh服務
用來進行外部連接
二、ntp服務
用來同步時間
三、vim服務(配置支持中文顯示)
用來方便編輯
7、鏡像構建標準
一、建立Dockerfile
在root下建立和鏡像名同樣的目錄
例:
mkdir -p /root/dockerfile/tomcat
cd /root/dockerfile/tomcat
touch Dockerfile
編輯配置Dockerfile
例如:
二、在該目錄下放置因此Dockerfile所須要的腳本和文件
例如:
三、構建鏡像
進入Dockerfile所在目錄
cd /root/dockerfile/tomcat
運行構建命令
docker build -t <image-name>:<tag> path
例如:
docker build -t tomcat:8.5.9 /root/dockerfile/tomcat/
8、docker佔用磁盤空間過大的解決方案
經過命令能夠觀察到/var/lib/Docker目錄很大,個人主機只有20G,這個目錄佔了 18G;緣由是devicemapper的空
間設的太大,經過docker info打印的Data Space Total參數能夠看到,默認是107.4G
思路以下:
備份當前容器、鏡像;
刪除/var/lib/docker目錄;
使用dd命令重設大小;
恢復容器、鏡像
一、備份當前的容器和鏡像
docker save image-id > image.tar 導出鏡像
docker export container-id >container.tar 導出容器
二、刪除docker目錄
/etc/init.d/docker stop
rm -rf /var/lib/docker
三、使用dd命令重設大小
mkdir -p /var/lib/docker/devicemapper/devicemapper/
touch /var/lib/docker/devicemapper/devicemapper/data
dd if=/dev/zero of=/var/lib/docker/devicemapper/devicemapper/data bs=1M count=0 seek=8192
創建的文件最大爲1M*8192=8G
啓動docker
/etc/init.d/docker start
docker info 查看Data Space Total是否修改爲功
四、恢復容器和鏡像
docker load < image.tar 導入鏡像
cat container.tar | docker import - container_name:tag 導入容器
9、docker內tomcat打印的日誌時間和服務器時間差8個小時的問題
打開tomcat文件下的bin/catalina 文件,找到JAVA_OPTS,在設置中增長-Duser.timezone=GMT+08:
JAVA_OPTS='-Xms256m -Xmx800m -Duser.timezone=GMT+08'
10、安裝使用swarm
在全部節點上
docker pull swarm
在使用Swarm進行集羣管理以前,須要先把準備加入集羣的全部的節點的docker deamon的監聽端口修改成
0.0.0.0:2375,能夠直接使用sudo docker –H tcp://0.0.0.0:2375 &命令,也能夠在配置文件中修改
$ sudo vim /etc/default/docker
在文件的最後面添加下面這句
D0OCKER_OPTS="-H 0.0.0.0:2375 –H unix:///var/run/docker.sock"
service docker restart
第一步
在任何一個節點上面執行swarm create命令來建立一個集羣標誌。這條命令執行完畢以後,swarm會前往Docker Hub上
內建的發現服務中獲取一個全球惟一的token,用以惟一的標識swarm管理的Docker集羣。
docker run --rm swarm create
返回的token是d947b55aa8fb9198b5d13ad81f61ac4d,這個token必定要記住,由於接下來的操做都會用到這一個token。
第二步
在全部的要加入集羣的機器上面執行swarm join命令,把機器加入集羣。
本次試驗就是要在全部的三臺機器上執行命令。
docker run –-rm swarm join –addr=ip_address:2375 token://d947b55aa8fb9198b5d13ad81f61ac4d
執行這條命令後不會當即返回 ,咱們手動經過Ctrl+C返回
第三步
啓動swarm manager。
由於咱們要讓sclu083充當Swarm管理節點,因此咱們要在這臺機器上面執行swarm manage命令
docker run -d -p 2376:2375 swarm manage token://d947b55aa8fb9198b5d13ad81f61ac4d
重點內容須要注意的是:在這條命令中,第一:要以daemon的形式運行swarm;第二:端口映射:2376能夠更換成任
何一個本機沒有佔用的端口,必定不能是2375,不然就會出問題。
查看全部節點
docker run --rm swarm list token://d947b55aa8fb9198b5d13ad81f61ac4d
docker –H 10.13.181.83:2376 info
能夠查看全部節點的信息
info命令能夠替換成全部docker的其餘命令
11、永久解決中文亂碼問題
在Dockerfile中添加一行
ENV LANG C.UTF-8linux