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