测试/生产环境下的docker使用简介

为什么要使用docker:

在项目部署时,由于各种原因,其它部门的人员在安装 jdk\mysql\redis\mq 等软件以及修改相关配置文件时很容易出错,研发人员需要写很多安装说明,费时费力而且效果也不好。所以打算直接把相关的软件都打包到镜像中,简化操作。

1、安装docker ( yum install docker ) 、配置国内镜像 略(win10环境)

       启动docker 服务 : service docker start

       在线拉取就不介绍了,以下是针对我们从docker官方拉取后导出的 .tar镜像,

镜像可从这里获取  https://hub.docker.com 。

 镜像拉取速度慢,可以从这里获取加速器地址: https://www.daocloud.io/mirror

导出镜像:

      docker save -o  centos-mysql-57-centos7.tar    centos/mysql-57-centos7

      docker save -o  mbentley-tomcat7.tar                mbentley/tomcat7

      docker save -o  kilsoo75-redis-master.tar           kilsoo75/redis-master

2、导入本地镜像 (把镜像复制到当前目录下)

2.1 数据库:(基于centos/mysql-57-centos7

docker load -i centos-mysql-57-centos7.tar

 或 docker load -i  /e/centos-mysql-57-centos7.tar

2.2 web容器:(基于mbentley/tomcat7

docker load -i mbentley-tomcat7.tar

2.3 redis容器:(基于kilsoo75/redis-master

docker load -i kilsoo75-redis-master.tar

3、创建并启动容器

3.1 创建并启动mysql容器  (一定要把数据文件映射到本地硬盘,预先授权  chmod  777  /opt/data

docker run -d --name mysql3306 -e MYSQL_USER=hly -e MYSQL_PASSWORD=hly@123 -e MYSQL_DATABASE=his3 -p 3306:3306 -v /e/data:/var/lib/mysql/data --privileged=true centos/mysql-57-centos7

执行完上面的语句应该无法正常启动容器,原因是对宿主机的目录没有写权限。需要先授权外挂的目录:

chmod 777 *

说明:参考 https://hub.docker.com/r/centos/mysql-57-centos7/

1)--name mysql3306  表示容器名称:mysql3306 

 2)-v /e/data:/var/lib/mysql/data 表示把windows E盘下data文件目录挂载为 mysql数据存放目录.

3) --privileged=true   给容器加特权,以避免Docker文件挂载因文件所属用户为mysql引起的权限问题。

如果启动后想进入容器可:docker exec -it  mysql3306   /bin/sh 

3.2 创建并启动tomcat容器(一定要把上传的数据文件映射到本也硬盘  chmod  777  /e/webapps


docker run -d --name tomcat8080 -p 8080:8080  -v /e/webapps:/opt/tomcat/webapps -v /e/logs:/tomcat/logs --privileged=true mbentley/tomcat7

1)映射文件共享目录 webapps 用于发布web项目的war包、logs  查看历史日志

2)映射Tomcat端口  

3.3 创建并启动redis服务器 

docker run -d --name redis-master -e REDIS_PASSWORD=hly123 -e MASTER_PASSWORD=hly123 -p 6379:6379   --privileged=true kilsoo75/redis-master

如果启动后想进入容器可:docker exec -it  tomcat8080   /bin/sh 

 其中用到的映射关键字如下

--name:容器名字

-d :       以守护进程方式运行(后台)

 -p:         端口, 可以有多个-p

-v:        共享目录, 可以有多个-p

4、容器创建完成后,以后如果需要关闭和重启,只需要使用

     docker  stop <容器名> 、docker start <容器名> 、docker restart <容器名>  即可:

    如:docker  stop  mysql3306

其它软件的安装和配置大同小异,配置完成后,直接固化到镜像导出,把导出的镜像和脚本文件复制给其它部门安装。

查询镜像:docker images  

查询容器:docker ps -a

删除镜像:docker rmi <镜像name或ID>

删除容器:docker rm <容器name或ID>

 

 

 

 

### 如何在 Docker使用 `--graph` 参数指定 `/data/docker/lib/docker` 路径 当需要更改 Docker 的默认存储路径时,可以使用 `--graph` 或者更现代的方式 `data-root` 来完成这一操作。以下是具体方法: #### 方法一:通过命令行参数设置 如果希望临时测试新的存储路径而不影响现有配置,可以直接运行带有 `--graph` 参数Docker 守护进程。例如: ```bash sudo dockerd --graph=/data/docker/lib/docker -H tcp://0.0.0.0:2375 & ``` 这会在后台启动一个新的 Docker 守护进程,并将其数据存储于 `/data/docker/lib/docker` 目录下[^1]。 需要注意的是,在实际生产环境中不推荐这种方式,因为它可能与其他已有的 Docker 进程冲突。 --- #### 方法二:修改 `docker.service` 文件 对于长期生效的需求,可以通过编辑系统的 `docker.service` 配置文件实现永久变更。按照以下步骤执行: 1. 打开并编辑 `/lib/systemd/system/docker.service` 文件: ```bash sudo nano /lib/systemd/system/docker.service ``` 2. 修改或替换原有的 `ExecStart` 行为如下内容: ```ini ExecStart=/usr/bin/dockerd --graph=/data/docker/lib/docker -H fd:// --containerd=/run/containerd/containerd.sock ``` 3. 如果原文件中有其他选项,请保留它们并将 `--graph` 添加至最后部分。 4. 保存退出后重新加载 systemd 并重启 Docker 服务: ```bash sudo systemctl daemon-reload sudo systemctl restart docker ``` 此时,Docker 将会读取位于 `/data/docker/lib/docker` 下的数据作为其工作区[^3]。 --- #### 方法三:利用 `daemon.json` (适用于较新版 Docker) 从 Docker 19.x 开始建议采用 JSON 格式的守护程序配置替代旧版 `--graph` 命令方式。此法更加简洁明了且易于维护。 1. 编辑或者新建 `/etc/docker/daemon.json` 文件: ```json { "data-root": "/data/docker/lib/docker" } ``` 2. 确认语法无误后同样需重载服务以及重启 Docker: ```bash sudo systemctl daemon-reload sudo systemctl restart docker ``` 这种方法不仅功能强大还兼容未来更新版本中的特性改进[^2]。 --- #### 数据迁移注意事项 无论采取哪种方案之前都应考虑原有镜像和容器是否会受到影响。因此务必先停止所有正在运行的服务再做调整;另外还需手动复制现有的 `/var/lib/docker/*` 到目标位置以保持一致性[^4]: ```bash sudo service docker stop sudo rsync -aqxP /var/lib/docker/ /data/docker/lib/docker/ sudo service docker start ``` 确认完成后可再次验证当前状态是否正确指向预期地址: ```bash docker info | grep 'Docker Root Dir' ``` ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值