2024-01-04
服务器
docker
265
一、安装 docker
1.检查版本
uname -r # docker 要求内核版本高于 3.10
2.安装软件包
yum install -y yum-utils device-mapper-persistent-data lvm2
3.配置镜像源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # 中央镜像
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 阿里镜像
4.安装 docker
yum list docker-ce --showduplicates | sort -r # 最新版正序排序
yum install docker-ce # 安装最新稳定版,repo 默认只开启 stable 仓库
yum install docker-ce-17.12.0.ce # 安装具体版本
# 验证安装是否成功(client 和 service 两部分表示安装启动都成功)
docker version
5.启动并加入开机启动
service docker start # 启动 docker
systemctl start docker
chkconfig docker on # 开机启动
systemctl enable docker
6.安装 docker-compose
# docker-compose 使用 1.13.0 及以上版本,1.13 对应 version 2.2, 3.0, 3.1, 3.2
# 第一种安装方式
curl -L https://github.com/docker/compose/releases/download/1.24.0/run.sh > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version
# 第二种安装方式
yum install -y python-pip
pip install --upgrade pip
pip install docker-compose
二、docker 命令
1.镜像命令
docker search php # 从 Docker Hub 查找所有镜像名包含 php 的镜像
docker search -s 10 java # 从 Docker Hub 查找所有镜像名包含 java,并且收藏数大于 10 的镜像
docker pull php:7.1-fpm # 从仓库拉取镜像
docker images # 列出所有镜像
docker images php # 列出 php 相关镜像
docker build -t jdzor/hyperf:v1.0 . # 直接写 . 会自动扫描当前目录 dockerfile 文件
docker build -t jdzor/hyperf:v1.0 -f /path/Dockerfile # 构建镜像
docker rmi images-name # 删除本地一个或多个镜像
docker rmi -f images-name # 强制删除本地一个或多个镜像
docker image prune -a # 删除所有未被容器使用的镜像
2.容器(实例)命令
docker ps # 列出所有运行中容器
docker ps -a # 列出所有的容器,包括未运行容器
# -p: 指定端口映射,格式为:主机(宿主)端口:容器端口
# 后台模式启动镜像 nginx:latest,将容器 8080 端口映射到主机 80 端口,主机目录 /data 映射到容器 /data2,并将容器命名为 my-nginx
docker run --name my-nginx -p 80:8080 -v /data:/data2 -d nginx:latest
docker start docker_name # 启动一个或多个已经被停止的容器
docker stop docker_name # 停止一个运行中的容器
docker restart docker_name # 重启容器
docker rm -f docker1 docker2 # 强制删除容器 docker1、docker2
docker rm $(docker ps -a -q) # 删除所有已经停止的容器
3.查看容器
docker inspect docker_name # 查看容器的所有信息
docker container logs docker_name # 查看容器日志
docker top docker_name # 查看容器里的进程
# 显示容器IP地址
docker inspect --format='{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)
# 查看docker网卡
docker network ls
docker network inspect netword_id # 查看 docker 网卡详细信息
docker network rm netword_id # 删除 docker 网卡
三、php 相关命令
1.安装镜像
docker search php
docker pull php:7.2-fpm
2.创建容器
docker run --name php72-fpm -p 9090:9000 -v /www/web/xxx:/www/web/xxx -d php:7.2-fpm # 宿主端口 9090
docker exec -it php72-fpm /bin/bash # 容器名称或容器 ID
exit # 退出容器
docker restart php72-fpm # 重启容器(修改容器内配置文件后)
3.容器内安装命令
docker exec -it php72-fpm /bin/bash
apt-get update
apt-get install vim
apt-get install procps # 安装 ps 命令
# 安装 ll 命令
vim ~/.bashrc
alias ll='ls $LS_OPTIONS -l' # 加入一行
source ~/.bashrc # 退出后重新执行文件
4.设置主机(宿主) nginx
# 将 fastcgi_pass 端口改为 docker php72-fpm 端口 9090(容器内端口 9000)
location ~ \.php($|/) {
fastcgi_pass 127.0.0.1:9090;
fastcgi_index index.php;
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
四、docker 清除日志
1.创建文件
vim /www/shell/docker_log_clear.sh
#!/bin/sh
echo "======== start clean docker containers logs ========"
logs=$(find /var/lib/docker/containers/ -name *-json.log)
for log in $logs
do
echo "clean logs : $log"
cat /dev/null > $log
done
echo "======== end clean docker containers logs ========"
# 添加权限
chmod 755 /www/shell/docker_log_clear.sh
2. 定时任务
crontab -e
# 每天凌晨 2:00 执行一次
0 2 * * * sh /www/shell/docker_log_clear.sh
标签:
docker