docker 容器操作、应用部署、mysql,redis,nginx、迁移与备份、Dockerfile
容器操作
# 启动容器
docker start 容器id
# 停止容器
docker stop 容器id
# 文件拷贝
先创建文件 mkdir:文件夹 vi vim touch:文件
# 容器的文件copy到宿主机上(不是在容器内部操作)
docker cp 容器名称:容器目录 需要拷贝的文件或目录
docker cp 20fd8:/home/lqz.txt /home/lqz.txt
# 宿主机的文件copy到容器中
docker cp 需要拷贝的文件或目录 容器名称:容器目录
docker cp ./lqz.txt 20fd894a3f20:/home/lqz.txt
# 查看容器IP地址
docker inspect 容器名称 # 查看容器的详细描述 很多
docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称(容器ID)
# 在多个容器之间是可以ping通的
# centos:172.17.0.3
# mysql:172.17.0.2
# 删除容器(删除已停止的容器)
docker rm 容器id
docker rm `docker ps -a -q`
# 无状态的服务
myslq reids
uwsgi+django
应用部署
mysql部署
docker run -di --name=mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
# 做目录映射:data文件,配置文件
# 创建文件夹
mkdir /home/mysql
mkdir /home/mysql/conf.d
mkdir /home/mysql/data/
vim /home/mysql/my.cnf
[client]
default-character-set=utf8
[mysqld]
user=mysql
character-set-server=utf8
default_authentication_plugin=mysql_native_password
secure_file_priv=/var/lib/mysql
expire_logs_days=7
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
max_connections=1000
docker run -di -v /home/mysql/data/:/var/lib/mysql -v /home/mysql/conf.d:/etc/mysql/conf.d -v /home/mysql/my.cnf:/etc/mysql/my.cnf -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
# 创建库,创建表,插入数据
# 关闭容器,删除容器,mysql的容器没了,但是数据在宿主机上放着
# 再运行起一个容器,做好目录映射,数据都回来了
redis
# 拉取redis镜像
docker pull redis
mkdir /root/data
vim /root/redis.conf
bind 0.0.0.0
daemonize NO
protected-mode no
requirepass 123456
# 运行
docker run -id -p 6379:6379 --name redis -v /root/redis.conf:/etc/redis/redis.conf -v /root/data:/data redis redis-server /etc/redis/redis.conf
# 远程链接redis操作
redis.conf 文件 删了再重新搞 通过该文件跑在前台 一直运行
nginx
# 拉取nginx镜像
docker pull nginx
# run起容器
# docker run -id --name nginx -p 80:80 nginx
# /usr/share/nginx/html
docker run -id --name nginx -p 80:80 -v /root/html:/usr/share/nginx/html nginx
# 以后只需要修改宿主机的/root/html 路径,看到页面就是修改后的
迁移与备份
# 容器保存为镜像
运行一个centos容器
docker run -id --name centos_vim centos:7
在容器中装vim
docker exec -it 容器ID号 /bin/bash
yum install vim -y
把容器做成镜像(centos+vim)
docker commit centos_vim centos_vim_image
把centos_vim 容器删除
docker rm centos_vim
基于新构建的镜像,运行成容器
docker run -id --name centos_vim centos_vim_image:latest
进入到容器中,查看,软件都在
docker exec -it 容器ID号 /bin/bash
# 镜像备份和恢复
docker save -o centos_vim_image.tar centos_vim_image
删除容器,删除镜像
把备份的镜像恢复
docker load -i centos_vim_image.tar
Dockerfile
# 镜像从哪里来的?
1 远程仓库拉取的 docker pull
2 用容器做成的镜像 docker commit
3 把备份的恢复 docker load
4 使用Dockerfile来构建
# 什么是Dockerfile
Dockerfile是由一系列命令和参数构成的脚本文件,这些命令应用于基础镜像并最终创建一个新的镜像
# Dockerfile的命令
FROM 基础镜像 #基于哪个基础镜像来构建
MAINTAINER lqz # 声明镜像的创建者
ENV key value # 设置环境变量 (可以写多条)
RUN command #是Dockerfile的核心部分(可以写多条)
ADD source_dir/file dest_dir/file #将宿主机的文件复制到容器内,如果是一个压缩文件,将会在复制后自动解压
COPY source_dir/file dest_dir/file # 和ADD相似,但是如果有压缩文件并不能解压
WORKDIR lqz # 设置工作目录,运行起这个容器,来到的路径就是这个路径
# 构建一个带vim的centos镜像
vim Dockerfile
FROM centos:7
MAINTAINER lqz
ENV name lqz
RUN yum install vim -y
RUN mkdir /lqz
RUN touch /lqz/ss.py
RUN echo 'print(1)' >/lqz/ss.py
COPY /root/redis.conf /lqz/redis.conf
WORKDIR /lqz
# 基于dockerfile构建镜像
docker build -t='centos_lqz_vim' .
# 基于这个镜像运行容器
docker run -id --name xx centos_lqz_vim
# 进入到容器
docker exec -it xx /bin/bash
# 验证vim,和文件夹,文件是否存在
docker 容器操作、应用部署、mysql,redis,nginx、迁移与备份、Dockerfile的更多相关文章
- docker 容器模式下部署mysql 主从复制
1.计划用两台host来部署,分别部署一台 mysql,一主一从,2.配置好主从mysql配置文件,更改文件名即可[client]port = 3306socket = /var/run/mysqld ...
- docker实践之docker-compose部署mysql
文章目录 docker实践之docker-compose部署mysql 1.安装部署docker 2.编写docker-compose文件 3.编写配置文件和初始化文件 4.启动数据库 5.检查初始化 ...
- Docker部署Mysql, Tomcat, Nginx, Redis
1. Mysql部署 问题及解决方案 容器内的网络和外部机器不能直接通信 外部机器和宿主机可以直接通信 宿主机和容器可以直接通信 当容器中的网络服务需要被外部机器访问时,可以将容器中提供服务的端口映射 ...
- 阿里云服务器centos7,docker部署mysql+Redis+vue+springboot+Nginx+fastdfs,亲测可用
一.购买云服务器 我是今年双十一期间在阿里云购买的服务器, 简单配置2核_4G_40G_3M,三年用了不到800块,不过当时我记得腾讯云更便宜,个人感觉,阿里的云服务器更加的稳定, 毕竟身经百战, 经 ...
- ContOS 7安装Docker使用及部署MySQL和Nginx
此文章采取狂神说Java https://space.bilibili.com/95256449 Docker学习网址: Docker官网:https://www.docker.com/ Docker ...
- docker部署 mysql redis问题
问题:(ubuntu不报错,centos报错) ERROR: : starting container process caused "process_linux.go:402: conta ...
- Docker容器案例:应用 Mysql
原创 杜亦舒 前阶段体验 Mysql 的新版本 5.7.13,由于机器里已经有 Mysql了,再安装另一个版本会有一些麻烦,为了简单,便使用 Docker 容器来安装 可能有人会认为没必要,在一台 ...
- Docker容器技术-自动化部署
一.用Chef自动化部署Docker 1.为什么需要自动化部署? Docker引擎需要配置很多参数(cgroups.内存.CPU.文件系统等) 识别Docker容器运行在哪个宿主机上 耗时且容易出错, ...
- Flask 教程 第十九章:Docker容器上的部署
本文翻译自The Flask Mega-Tutorial Part XIX: Deployment on Docker Containers 这是Flask Mega-Tutorial系列的第十九部分 ...
- Docker容器使用jenkins部署web项目--总结(二)
(1)需要安装Docker容器,在Docker容器内安装jenkins,gogs,tomcat. 新建maven项目,添加findbugs plugin. 使用docker启动jenkins,go ...
随机推荐
- Java jsp视频标签
视频标签: 直接显示 <embed src="视频地址.mp4" width="60" height="40"> 按钮点击 &l ...
- 2003031126-石升福-python数据分析第三周作业
项目 Numpy 博客名称 2003031126-石升福-python数据分析第三周作业 课程班级博客链接 https://edu.cnblogs.com/campus/pexy/20sj 作业链接 ...
- gitbash 本地文件提交为一个新的项目 到 gitlab
此篇操作的环境: 已经配置好一个本地仓库,且可成功的将本地项目提交到gitlab上的对应的远程仓库. 这意味着此时你的电脑已经安装好git,有一个本地仓库存放你的项目,成功配置好一个对应的远程仓库,且 ...
- js对象常用的方法
1. Object.assign()方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象,它将返回目标对象. 语法: Object.assign(target, ...sources) ...
- .net core中使用HttpClient碰到的问题:This instance has already started one or more requests. Properties can only be modified before sending the first request
项目里使用httpclient一般加staic或者单例来防止每次请求都会新建立一个连接,从而占用太多的服务器资源, 问题产生 但是今天新加的一个方法中每次需要请求不同的url,这时候就出现了错误: 就 ...
- vlan划分和设置
今天用ensp模拟一个交换机vlan的划分和设置 先上拓扑图: 目标要实现每台电脑都能相互ping通并且都能ping通1.1.1.1/30 简单分析一下,先看交换机sw3,sw3直接和路由器相连,要实 ...
- (转载)一篇文章详解python的字符编码问题
一篇文章详解python的字符编码问题 一:什么是编码 将明文转换为计算机可以识别的编码文本称为"编码".反之从计算机可识别的编码文本转回为明文为"解码". ...
- 初探redis缓存击穿、穿透、雪崩问题
现分析Redis缓存使用过程失效的一些问题,在有缓存的情况下,查询数据的顺序是先查询缓存,如果查询到数据则直接返回数据,如果没有查询到数据,则到数据库中查询,数据库中有数据的话,将查询出的数据写到缓存 ...
- 基于SpringBoot WebMagic爬虫爬取大乐透双色球
大乐透网页地址:https://kjh.55128.cn/dlt-history-360.htm 双色球网页地址:https://kjh.55128.cn/ssq-history-120.htm ...
- 统一返回对象Result
统一返回对象Result 项目中我们会将响应封装成json返回,一般我们会将所有接口的数据格式统一, 使前端(iOS Android, Web)对数据的操作更一致.轻松. 一般情况下,统一返回数据格式 ...