Docker安装

  1. yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
  1. sudo yum install -y docker-ce docker-ce-cli containerd.io
  1. systemctl enable docker --now
  1. mkdir -p /etc/docker/
  2. tee /etc/docker/daemon.json <<-'EOF'
  3. {
  4. "registry-mirrors": ["https://82m9ar63.mirror.aliyuncs.com"],
  5. "exec-opts": ["native.cgroupdriver=systemd"],
  6. "log-driver": "json-file",
  7. "log-opts": {
  8. "max-size": "100m"
  9. },
  10. "storage-driver": "overlay2"
  11. }
  12. EOF
  13. systemctl daemon-reload
  14. systemctl restart docker

Docker-compose安装

  1. curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  2. chmod +x /usr/local/bin/docker-compose
  3. docker-compose --version

第一题

  1. FROM naqoda/mysql-client # 一个只有centos7和mysql客户端的镜像
  2. WORKDIR /root
  3. RUN mkdir /data/ && touch /data/log
  4. RUN touch /root/count.sh
  5. RUN echo '#!/bin/bash' >> /root/count.sh
  6. RUN echo 'host=$1' >> /root/count.sh
  7. RUN echo 'port=$2' >> /root/count.sh
  8. RUN echo 'user=$3' >> /root/count.sh
  9. RUN echo 'while :' >> /root/count.sh
  10. RUN echo 'do' >> /root/count.sh
  11. RUN echo 'msg=`mysql -h $1 -P $port -u$user -e "show status like '\''Threads_connected'\'';"|awk '\''NR==2{print$2}'\''`' >> /root/count.sh
  12. RUN echo 'echo [`date "+%Y-%m-%d %H:%M:%S"`] Number of active DB connections is $msg. |tee -a /data/log' >> /root/count.sh
  13. RUN echo 'sleep 30' >> /root/count.sh
  14. RUN echo 'done' >> /root/count.sh
  15. CMD bash /root/count.sh $HOST $PORT $USER
  1. # 在Dockerfile所在目录构建
  2. docker build -t counter:v0.1 .
  3. docker images # 获取 counter的IMAGE_ID
  4. docker run -e HOST=47.94.218.68 \
  5. -e PORT=3306 \
  6. -e USER=root \
  7. -e MYSQL_PWD=123456 \
  8. -d IMAGE_ID
  9. docker ps # 获取counter的CONTAINER_ID
  10. docker logs CONTAINER_ID # 方法一
  11. docker exec -it CONTAINER_ID tail -f /data/log # 方法二

第二题

  1. version: "3.9"
  2. services:
  3. mysql-server:
  4. image: mysql:5.7
  5. container_name: mysql-server
  6. restart: always
  7. ports:
  8. - 3306:3306
  9. environment:
  10. MYSQL_ROOT_PASSWORD: 123456
  11. counter:
  12. build: .
  13. depends_on:
  14. - mysql-server
  15. restart: always
  16. environment:
  17. HOST: mysql-server
  18. PORT: 3306
  19. USER: root
  20. MYSQL_PWD: 123456

image.png

  1. docker-compose up # 启动,可以加 -d 后台启动
  2. # 新建一个会话
  3. docker ps # 获取counter的CONTAINER_ID
  4. docker logs CONTAINER_ID # 方法一
  5. docker exec -it CONTAINER_ID tail -f /data/log # 方法二