1. Docker原理
docker 容器与容器,容器与主机 为什么能ping通? 桥接:evth-pair技术,网卡成对出现并绑定
docker0相当于一个公共的路由器
直接用容器名ping通:—link
docker run -d -P --name tomecat03 --link tomcat02 tomcatdocker exec -it tomcat03 ping tomcat02 # 但是反向ping不通!docker network
2. Docker安装
yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
sudo yum install -y yum-utilssudo yum-config-manager \--add-repo \https://download.docker.com/linux/centos/docker-ce.reposudo yum install -y docker-ce docker-ce-cli containerd.io
https://docs.docker.com/engine/install/centos/
systemctl enable docker --now
mkdir -p /etc/dockertee /etc/docker/daemon.json <<-'EOF'{"registry-mirrors": ["https://82m9ar63.mirror.aliyuncs.com"],"exec-opts": ["native.cgroupdriver=systemd"],"log-driver": "json-file","log-opts": {"max-size": "100m"},"storage-driver": "overlay2"}EOFsystemctl daemon-reloadsystemctl restart docker
3. Docker实战
FROM naqoda/mysql-clientWORKDIR /rootENV HOST=47.94.218.68ENV PORT=3306ENV USER=rootENV MYSQL_PWD=123456RUN mkdir /data/ && touch /data/logRUN touch /root/count.shRUN echo '#!/bin/bash' >> /root/count.shRUN echo 'host=$1' >> /root/count.shRUN echo 'port=$2' >> /root/count.shRUN echo 'user=$3' >> /root/count.shRUN echo 'while :' >> /root/count.shRUN echo 'do' >> /root/count.shRUN echo 'msg=`mysql -h $1 -P $port -u$user -e "show status like '\''Threads_connected'\'';"|awk '\''NR==2{print$2}'\''`' >> /root/count.shRUN echo 'echo [`date "+%Y-%m-%d %H:%M:%S"`] Number of active DB connections $msg |tee /data/log' >> /root/count.shRUN echo 'sleep 30' >> /root/count.shRUN echo 'done' >> /root/count.shCMD bash /root/count.sh $HOST $PORT $USER
# 在Dockerfile所在目录构建docker build -t counter:v0.1 .docker images # 获取 IMAGE_IDdocker run -e HOST=47.94.218.68 \-e PORT=3306 \-e USER=root \-e MYSQL_PWD=123456 \-d IMAGE_IDdocker ps # 获取CONTAINER_IDdocker logs CONTAINER_IDdocker exec -it CONTAINER_ID tail -f /data/log
