部署项目前基础服务准备
第一步:安装Docker环境
第二步:开启Docker远程带证书访问(可选)
第三步:拉取mysql,redis,nginx等等所需镜像
第四步:运行(创建)容器
启动、停止、重启Docker服务
systemctl start docker
systemctl stop docker
systemctl restart docker
docker version
拉取镜像
docker pull [name] 可以指定版本号
docker pull nginx
docker pull mysql
docker pull redis
镜像操作
docker images
docker search name
docker tag 镜像id REPOSITORY:TAG(仓库:标签)
docker rmi IMAGEID
docker rmi REPOSITORY:TAG
docker rmi $(docker images | awk '{print $3}' |tail -n +2)
docker rmi `docker images | grep '<none>' | awk '{print $3}'`
docker rmi $(docker images -q -f dangling=true)
容器操作
docker ps
docker ps -a
docker ps --f"name=test-nginx"
docker start 容器名称/容器ID
docker stop 容器名称/容器ID
docker restart 容器名称/容器ID
docker rename 容器名称/容器ID 新的名称
docker rm 容器ID
docker start $(docker ps -a | awk '{ print $1}' | tail -n +2)
docker stop $(docker ps -a | awk '{ print $1}' | tail -n +2)
docker rm $(docker ps -a | awk '{ print $1}' | tail -n +2)
docker rm 'docker ps -qf status=exited'
docker run -d -p 0.0.0.0:80:80 --name nginx nginx:1.21
-d:
-P:
-p:
-e:
-v:
--name
--restart="no"
no
on-failure
always
nginx:1.21
运行容器参考示例
docker pull nginx:1.21
docker run --name nginx -p 80:80 -p 443:443
-v /data/docker-nginx/conf/nginx.conf:/etc/nginx/nginx.conf
-v /data/docker-nginx/log:/var/log/nginx
-v /data/docker-nginx/ssl:/etc/nginx/ssl
-v /data/docker-nginx/wap:/usr/share/nginx/wap
-v /data/docker-nginx/html:/usr/share/nginx/html
-v /data/docker-nginx/extend:/usr/share/nginx/extend
-v /data/docker-nginx/mp:/usr/share/nginx/mp
-d nginx:1.21
www.***.com,wap.***.com,api.***.com
ssl_certificate /etc/nginx/ssl/www.***.com.pem;
ssl_certificate_key /etc/nginx/ssl/www.***.com.key;
docker pull mysql:5.7
docker run --name mysql -p 3306:3306
-v /data/docker-mysql/data:/var/lib/mysql
-v /data/docker-mysql/my.cnf:/etc/my.cnf
-e MYSQL_ROOT_PASSWORD=cn_2021_db
-d mysql:5.7
docker pull redis:5.0
docker run --name redis -p 6379:6379
-v /data/docker-redis/redis.conf:/etc/redis.conf
-v /data/docker-redis/data:/data
-d redis:5.0
/etc/redis.conf --requirepass "MyRedis#2022_" --appendonly yes
docker stop cn_shop && docker rm cn_shop
docker run --name cn_shop(容器名称) -p 8082:8082 -v /data/cert/pay:/data/cert/pay -d cn_shop(镜像名称)
docker inspect cn_shop(容器名称) | grep Mounts -A 200
docker run -it --name certpay(容器名称) -v /data/cert/pay:/data/cert/pay:rw centos(镜像名称) /bin/bash
docker logs -f cn_shop(容器名称)
查看容器日志
docker logs [options] 容器
Options:
--details 显示更多的信息
--follow(-f) 跟踪实时日志
--since string 显示自某个timestamp之后的日志,或相对时间,如42m(即42分钟)
--tail string 从日志末尾显示多少行日志, 默认是all
--timestamps(-t) 显示时间戳
--until string 显示自某个timestamp之前的日志,或相对时间,如42m(即42分钟)
$ docker logs -f -t --since="2018-02-08" --tail=100 cn_shop
$ docker logs --since 30m cn_shop
$ docker logs -t --since="2018-02-08T13:23:37" cn_shop
$ docker logs -t --since="2018-02-08T13:23:37" --until "2018-02-09T12:23:37" cn_shop
$ docker logs --since 2021-07-12 cn_shop | grep error
$ docker logs --since 2021-07-12 cn_shop | grep -C 10 'Exception'
$ docker logs -t cn_shop | grep error >> logs_error.txt
进入容器系统
docker exec -it nginx /bin/bash
-d :
-i :
-t :
/bin/bash :
docker exec -it 容器名称/容器ID /bin/bash
root@26a75a859ed3:/data# redis-cli
docker exec -it 容器名称/容器ID redis-cli
docker exec -it 容器名称/容器ID redis-cli -h 127.0.0.1 -p 6379
config get requirepass
docker exec -it 容器名称/容器ID bash
mysql -u用户名 -p密码
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'cn_2021_db';
mysql> use mysql;
mysql> update user set host = '%' where user = 'root';
mysql> select host, user from user;
mysql> flush privileges;
mysql> use 库名;
mysql> source /var/lib/mysql/db.sql (sql文件存放在挂载的docker-mysql/data目录下)
docker exec -it 容器名称/容器ID mysqldump -u用户名 -p密码 库名 > /opt/db.sql
本文作者:盗梦笔记
本文链接:https://www.cnblogs.com/zhaojinhui/p/16658543.html
版权声明:本作品采用zhaojh许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步