docker 笔记

启动常用容器

启动nginx

docker run -d -p 80:80 -v /data/wwwroot/:/app -v /data/wwwroot/nginx.conf:/etc/nginx/nginx.conf:ro -v /data/wwwroot/app.conf:/etc/nginx/conf.d/app.conf:ro  --link m_phpfpm:phpfpm --link minio:minio --name m_nginx nginx:1.22

启动PHP7.0+FPM

docker run -d -p 9000:9000 -v /data/wwwroot:/app --link m_mysql:mysql --link m_redis:redis --name m_phpfpm adhocore/phpfpm:7.4

启动Minio(分布式文件系统)

docker run -d -p 9001:9001 -p 9090:9090 --name minio --restart=always -e "MINIO_ACCESS_KEY=xxxxxxx9" -e "MINIO_SECRET_KEY=xxxxxx" -v /data/minio/data:/data -v /data/minio/minio.config:/root/.minio minio/minio server /data --console-address ":9090" -address ":9001"

启动Mysql

docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=12345678 --name m_mysql mysql:5.7

Docker镜像制作

FROM webdevops/php-nginx:7.3
EXPOSE 80

ADD  ./install-php-extensions /usr/local/bin/
RUN chmod +x /usr/local/bin/install-php-extensions && sync && install-php-extensions bz2 bcmath  dba gettext gd mcrypt opcache pcntl pdo_mysql redis shmop sysvmsg sysvsem sysvshm zip

RUN mkdir -p /app && rm -rf /data/minio && mkdir -p /data/minio/image && mkdir -p /data/minio/file && rm -f /opt/docker/etc/nginx/vhost.conf && rm -f /opt/docker/etc/supervisor.d/think.conf && rm -f /opt/docker/etc/supervisor.d/minio.conf
WORKDIR /app
COPY . /app
RUN mkdir -p /app/runtime && chmod 0777 /app/runtime && chown -R nginx:nginx /app/public && chmod +x /app/minio/minio

#复制nginx文件
COPY ./app.conf /opt/docker/etc/nginx/vhost.conf

#配置supervisor
COPY ./think.conf /opt/docker/etc/supervisor.d/think.conf
#配置minio
COPY ./minio.conf /opt/docker/etc/supervisor.d/minio.conf

制作镜像(Dockerfile目录运行,后面有个 . )

docker build -t imageName:version .

打包镜像

docker commit img-id imageName:version

登录docker-hub

docker login docker-hub-host
官方不需要docker-hub-host

推送镜像

docker push docker-hub-host/account/imageName:version

把镜像打tag

docker tag imageName:version docker-hub-host/account/imageName:version

minio.conf

[supervisord]
nodaemon=true
[supervisorctl]

[program:minio]
command = /app/minio/minio server /data/minio --console-address ":9090" -address ":9001"
directory=/app/minio/
process_name=%(program_name)s
priority=15
startsecs = 0
autostart=true
autorestart=true
stdout_logfile=/app/logs/minio.out.log
stderr_logfile=/app/logs/minio.err.log
stdout_logfile_maxbytes=2MB
stderr_logfile_maxbytes=2MB

think.conf(异步队列)

[supervisord]
nodaemon=true
[supervisorctl]

[program:think]
command = /php /app/think queue:work --daemon
directory=/app/
process_name=%(program_name)s
priority=14
startsecs = 0
autostart=true
autorestart=true
stdout_logfile=/app/logs/queue.out.log
stderr_logfile=/app/logs/queue.err.log
stdout_logfile_maxbytes=2MB
stderr_logfile_maxbytes=2MB

Docker常用命令

删除容器 docker rm img-id

删除镜像 docker rmi img-id

进入容器 docker exec -it img-id|dockerName /bin/bash

查看运行的容器列表 docker ps

查看所有启动过的容器 docker ps -a

查看容器日志 docker logs img-id|dockerName

停止容器 docker stop img-id|dockerName

启动容器 docker start img-id|dockerName