Docker的学习笔记(开发的技术分享转发)
我的Docker學習記錄
一、安裝docker
yum install -y docker-io
二、使用docker
1、下載鏡像
docker pull <image>
2、查詢鏡像
docker search <image>
3、從鏡像運行容器
docker run -it --name <name> <image> /bin/bash
4、后臺運行
docker run -itd --name <name> <image> /bin/bash
5、查看docker運行的容器
docker ps
6、查看docker上一個運行的容器
docker ps -l
7、查看docker運行的全部容器
docker ps -a
8、進入docker的方法有兩種exec和attach
第一種exec
docker exec -it <container> /bin/bash
container既可以是容器id也可以是容器名字
/bin/bash為運行容器時的環境
第二種attach
docker attach -it <container> /bin/bash
和exec同理只不過用該命令連接容器后,退出是容器會自動關閉。
9、刪除容器
docker rm <container>或者是<container-id>
10、刪除鏡像
docker rmi <image-id>
11、列出已有鏡像
docker images
12、將docker里面的文件或目錄拷貝出來
docker cp <container_id>|<container_name>:path path
例子:
docker cp tomcat:/usr/local/tomcat/conf .
13、導入導出鏡像和容器
docker save image-id > image.tar 導出鏡像
docker export container-id > container.tar 導出容器
docker load < image.tar 導入鏡像
cat container.tar | docker import - container_name:tag 導入容器
三、實戰
1、安裝ssh服務
debian系統
apt-get update
apt-get -y install openssh-server
2、安裝netstat命令
apt-get -y install net-tools
3、安裝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
4、安裝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
四、工作流程
1、構建鏡像。
2、上傳鏡像到已有的私有倉庫或者公有倉庫。
3、在指定服務器上下載指定倉庫的鏡像。
4、通過鏡像運行容器,指定端口、容器名稱、掛載點、需要的環境變量等參數。
5、通過jekens自動化運行腳本,將指定的文件定時更新到掛載點,完成自動部署。
五、Docker服務標準
1、容器命名規則
服務名稱-應用名稱-端口號
例如:
2、掛載目錄
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這樣的目錄
六、docker鏡像內需要的基礎服務
1、ssh服務
用來進行外部鏈接
2、ntp服務
用來同步時間
3、vim服務(配置支持中文顯示)
用來方便編輯
七、鏡像構建標準
1、創建Dockerfile
在root下創建和鏡像名一樣的目錄
例:
mkdir -p /root/dockerfile/tomcat
cd /root/dockerfile/tomcat
touch Dockerfile
編輯配置Dockerfile
例如:
2、在該目錄下放置所以Dockerfile所需要的腳本和文件
例如:
3、構建鏡像
進入Dockerfile所在目錄
cd /root/dockerfile/tomcat
運行構建命令
docker build -t <image-name>:<tag> path
例如:
docker build -t tomcat:8.5.9 /root/dockerfile/tomcat/
八、docker占用磁盤空間過大的解決方案
通過命令可以觀察到/var/lib/Docker目錄很大,我的主機只有20G,這個目錄占了 18G;原因是devicemapper的空
間設的太大,通過docker info打印的Data Space Total參數可以看到,默認是107.4G
思路如下:
備份當前容器、鏡像;
刪除/var/lib/docker目錄;
使用dd命令重設大小;
恢復容器、鏡像
1、備份當前的容器和鏡像
docker save image-id > image.tar 導出鏡像
docker export container-id >container.tar 導出容器
2、刪除docker目錄
/etc/init.d/docker stop
rm -rf /var/lib/docker
3、使用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是否修改成功
4、恢復容器和鏡像
docker load < image.tar 導入鏡像
cat container.tar | docker import - container_name:tag 導入容器
九、docker內tomcat打印的日志時間和服務器時間差8個小時的問題
打開tomcat文件下的bin/catalina 文件,找到JAVA_OPTS,在設置中增加-Duser.timezone=GMT+08:
JAVA_OPTS='-Xms256m -Xmx800m -Duser.timezone=GMT+08'
十、安裝使用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的其他命令
十一、永久解決中文亂碼問題
在Dockerfile中添加一行
ENV LANG C.UTF-8
轉載于:https://www.cnblogs.com/zln1021/p/6434707.html
總結
以上是生活随笔為你收集整理的Docker的学习笔记(开发的技术分享转发)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 264标准中高复杂度的三方面
- 下一篇: 如何固定电脑桌面便签 win7便签怎么设