Docker的使用和常用命令
部署项目前基础服务准备
第一步:安装Docker环境
第二步:开启Docker远程带证书访问(可选)
第三步:拉取mysql,redis,nginx等等所需镜像
第四步:运行(创建)容器
# 本地远程调试需要在阿里云开放所需端口,比如:3306,6379,2379,80,443
启动、停止、重启Docker服务
systemctl start docker # 启动docker
systemctl stop docker # 停止docker
systemctl restart docker # 重启docker
docker version # 查看Docker版本信息
拉取镜像
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 # 根据镜像ID删除
docker rmi REPOSITORY:TAG # 根据仓库+标签删除
# 删除所有的镜像
docker rmi $(docker images | awk '{print $3}' |tail -n +2)
# 在docker反复build后,会存留很多none镜像,删除所有none镜像
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时,Docker会随机映射一个 49000~49900 的端口到内部容器开放的网络端口。
-p: # 指定端口,能够指定要映射的IP和端口(ip:hostPort:containerPort)
-e: # 指定环境变量
-v: # 给容器挂载存储卷,挂载到容器的某个目录
--name # 容器名称
--restart="no" # 指定容器停止后的重启策略:
no # 容器退出时不重启
on-failure # 容器故障退出(返回值非零)时重启
always # 容器退出时总是重启
nginx:1.21 # 镜像名称
运行容器参考示例
# 示例1:启动nginx并挂载目录:
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
# 创建容器时挂载目录没有nginx.conf文件,需要手动上传到/data/docker-nginx/conf
# 如果需要支持https方式访问,还需要在第三方平台(阿里云)配置二级域名,如下示例:
www.***.com,wap.***.com,api.***.com
# 下载各域名对应的证书,并在本地配置好nginx.conf文件内容,再上传到服务器目录:/data/docker-nginx/conf
ssl_certificate /etc/nginx/ssl/www.***.com.pem;
ssl_certificate_key /etc/nginx/ssl/www.***.com.key;
# 示例2:Mysql
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
# 示例3:Redis
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
# 示例4:项目工程
# 停止并删除容器
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分钟)
# 例子:
# 查看指定时间后的日志,只显示最后100行:
$ docker logs -f -t --since="2018-02-08" --tail=100 cn_shop
# 查看最近30分钟的日志:
$ 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
# 查找所有包含 “error” 的log:
$ docker logs --since 2021-07-12 cn_shop | grep error
# 查找所有包含 “Exception” 的log前后10行:
$ docker logs --since 2021-07-12 cn_shop | grep -C 10 'Exception'
# 把error日志都写到指定文件:
$ docker logs -t cn_shop | grep error >> logs_error.txt
进入容器系统
docker exec -it nginx /bin/bash
-d : # 分离模式: 在后台运行
-i : # 交互模式 即使没有附加也保持STDIN 打开
-t : # 分配一个伪终端
/bin/bash : # 运行命令 bash shell
# 示例1:进入Redis
# 方式一:
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 # 查看redis密码
# 示例2:进入Mysql
docker exec -it 容器名称/容器ID bash
mysql -u用户名 -p密码
# 方法一:这里的cn_2021_db是给新增权限用户设置的密码,%代表所有主机,也可以具体到你的主机ip地址
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'cn_2021_db';
# 方法二:修改mysql库的user表,将host项从localhost改为%,%这里表示的是允许任意host访问,如果只允许某一个ip访问,则可改为相应的ip
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
Docker的使用和常用命令的更多相关文章
- windows下docker的安装及常用命令学习
docker search 镜像名 本文主要介绍Docker在Windows下的安装.关于Docker的介绍和文档在其官网中可以找到:http://www.docker.com .安装环境:Windo ...
- docker的安装及常用命令
一:概述 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows 机器上,也可以实现虚拟化,容器是完全使用 ...
- Docker的入门及常用命令
Docker入门及常用命令 1. 各个容器之间是相互隔离状态: 这样减少了我们软件之间的影响. 2. docker是os层虚拟化架构的一种产品体现, os层虚拟化架构出来的操作系统需要和宿主机操作系统 ...
- Docker第二弹之常用命令
Docker的常用命令 底层原理 Docker是如何工作的 Docker是一个Client-Server结构的系统,Docker守护进程运行在主机上, 然后通过Socket连接从客户端访问,守护进程从 ...
- 【Docker】docker的安装和常用命令
一.docker安装和启动 1.yum 命令 yum install docker 2.docker启动命令 sudo systemctl start docker 二.docker常用命令 dock ...
- docker入门资料及常用命令
Docker17中文开发手册 :https://www.php.cn/manual/view/36147.html Linux部署Docker及常用命令: https://www.cnblog ...
- Docker——基本使用及常用命令
Docker 是一个开源的应用容器引擎,而一个容器其实是一个虚拟化的独立的环境,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化. ...
- CentOS-yum安装Docker环境(含:常用命令)
安装Docker环境 $ yum install docker -y 启动Docker $ systemctl start docker 设置自启动 $ systemctl enable docker ...
- Docker学习笔记-02 常用命令
1.启动类: 启动docker: systemctl start docker 停止docker: systemctl stop docker 重启docker: systemctl restart ...
- docker的使用以及常用命令
查看docker镜像仓库中是否存在某个镜像,通常第一个或stars最多的就是我们要是使用的,以nginx为例 # 搜索一下是否存在该镜像文件 docker search nginx # 安装使用该镜像 ...
随机推荐
- MSP 通过 Splashtop SOS 远程支持非托管设备
RMM 是 MSP 的绝佳工具.它们使 MSP 可以通过集中控制台来管理其所有客户计算机,通常使他们能够远程访问任何计算机以提供远程支持. 但是,这样做的一个很大限制是--并非所有客户设备都在 MSP ...
- 4G EPS 中的小区搜索
目录 文章目录 目录 前文列表 小区搜索(Cell Search)流程 PSS(主同步信号)与 SSS(辅同步信号) DL-RS(下行参考信号) PBCH(物理广播信道) PDSCH(物理下行共享信道 ...
- pyqt5 子线程如何操作主线程GUI
一.简介 在使用pyqt5编写gui时遇到两个问题,会导致界面崩溃,今天就围绕这两个问题来简单说明和改进. 1.在主线程中使用while无限循环会导致界面崩溃 2.在子线程中操作主线程gui会导致界面 ...
- Java的深浅拷贝认识
目录 浅拷贝 深拷贝 分辨代码里的深浅拷贝 在Java中,深拷贝和浅拷贝是对象复制的两种方式,主要区别在于对对象内部的引用类型的处理上. 浅拷贝 定义: 浅拷贝是指创建一个新的对象,但这个新对象的属性 ...
- CSS操作——背景属性
1.background-color(背景颜色) 页面的背景颜色有四种属性值表示,分别是transparent(透明),RGB十进制颜色表示,十六进制颜色表示和颜色单词表示. 属性使用: /* bac ...
- k8s 1.24 service account 版本以后怎么获取永不过期token?
问题产生背景: 一个服务操作多个k8s集群, 这个时候就会出现授权问题.k8s 1.24版本之前sa账号产生的token在secret中是永久不过期的.在1.24版本以后secret将不再保留toke ...
- 解决老旧电脑在win7中浏览器访问https网站出现的Let‘sEncrypt证书过期的问题
原因LetsEncrypt证书未过期,但是其顶级ca根证书 "DST Root CA X3"在2021-09-01过期了,老旧设备上的win系统会被影响到. 解决步骤下载三张Let ...
- C# Afroge摄像头翻转90
1.dll和命名空间就不在此列举了,如下只是将转换方法介绍: 第一个函数: public void Rotate90() { // 计算角度,类变量 //dAngle = dAngle + 90; / ...
- iOS面试题详解-开篇
一.前言 转眼之前,已经毕业5年,从事iOS开发5年.5年的时间说长不长,却把我从刚毕业的毛头小伙子变成了现在的"中年大叔",不仅仅是外表还有心态. 一方面不愿意接收自己形体的改变 ...
- postman Could not get any response 无法请求
外网访问接口地址,刚开始考虑到是阿里云服务器上面的ECS网络安全策略拦截,添加了白名单, 首先在浏览器中回车访问,页面有反应. 但是在postman中请求,仍然返回 Could not get any ...