Linux 安装配置Docker 和Docker compose 并在docker中部署mysql和中文版portainer图形化管理界面

2023-05-16

Linux 安装配置Docker 和Docker compose 并在docker中部署mysql和中文版portainer图形化管理界面

首先环境准备:

下载Ubuntu20.04.4版本并打开vmare16虚拟机(我用的这个版本)

iso镜像名称:ubuntu-20.04.4-desktop-amd64.iso

其它版本的ubuntu可以去官网自行下载:

https://ubuntu.com/

为了避免出现其它环境问题先卸载旧版本(纯净镜像可以忽略此步骤):

 sudo apt-get remove docker docker-engine docker.io containerd runc
 rm -rf /var/lib/docker
 rm -rf /var/lib/containerd

安装docker

sudo apt-get update
sudo apt install apt-transport-https ca-certificates curl software-properties-common

或者按照官方的命令:

sudo apt-get install ca-certificates curl gnupg lsb-release

添加Docker’s official GPG key

sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

设置仓库

 echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

设置国内镜像仓库

vim /etc/docker/daemon.json

添加以下内容

{
  "registry-mirrors": ["https://kuamavit.mirror.aliyuncs.com",
  "https://registry.docker-cn.com", 
  "https://docker.mirrors.ustc.edu.cn"],
  "max-concurrent-downloads": 10,
  "storage-driver": "overlay2",
  "graph": "/data/docker",
  "log-driver": "json-file",
  "log-level": "warn",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
    }
}

查看是否更改为国内的镜像仓库:

docker info

docker守护进程启动的时候,会默认赋予名字为docker的用户组读写Unix socket的权限,因此只要创建docker用户组,

并将当前用户加入到docker用户组中,那么当前用户就有权限访问Unix socket了,进而也就可以执行docker相关命令。

sudo groupadd docker   

  #添加docker用户组

sudo gpasswd -a $USER docker  

   #将登陆用户加入到docker用户组中

newgrp docker

    #更新用户组

就没有了error报错:

由于容器的环境比较精简不能编辑,我们可从本机编辑文件复制到容器

   

docker cp /root/index.html tomcat-8080:/usr/local/tomcat/webapps/

运行一个docker redis 容器 进行 端口映射 两个数据卷挂载 设置开机自启动

例子

docker run -d -p 6379:6379 --name redis506 --restart=always  -v /var/lib/redis/data/:/data -v /var/lib/redis/conf/:/usr/local/etc/redis/redis.conf  redis:5.0.5 --requirepass "password"

设置随服务启动而自启动 systemctl enable docker

安装 Docker Compose

sudo curl -L "https://github.com/docker/compose/releases/download/v2.12.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

#可以自己选定版本号安装我选的是v2.12.2

sudo ln -s ~/.docker/cli-plugins/docker-compose /usr/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose  

 //设置权限

最底下显示镜像地址就是生效

查看docker compose

运行 Docker Compose

下载tomcat的镜像

docker pull tomcat

docker images #显示所有镜像

创建tomcat容器

docker run -d --name tomcat-8080 -p 8080:8080 tomcat
docker run -d --name tomcat-8081 -p 8081:8080 tomcat

进入容器配置服务

docker exec -it tomcat-8080 bash

#为了镜像的简洁性,tomcat删除了非必要的文件

进入webapps下

mkdir ROOT
echo '<h1>8080!!!</h1>'>>index.html 
echo '<h1>8081!!!</h1>'>>index.html

#由于最小化没有vi命令,使用打印命令写入文件。

防火墙放行

firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --zone=public --add-port=8081/tcp --permanent

配置docker数据卷

数据卷:是一个可供一个或多个容器使用的特殊目录。

1、docker run -v 本机存放路径:容器内的存放路径 -d --name -p *:* 镜像

例子:

docker run -d -p 8080:8080 --name Tomcat-8080 -v /root/docker-vloumn/qfnj:/usr/local/tomcat/webapps/qfnj tomcat

Docker安装nginx

nginx目录

/usr/sbin/nginx

/usr/lib/nginx

/etc/nginx      nginx的配置文件

/usr/share/nginx     nginx静态html5文件

nginx容器创建,并创建对应的映射关系

docker run -d -p 80:80 --name nginx-damoe -v /usr/local/nginx/html:/usr/local/nginx/html -v /user/local/nginx/conf/nginx.conf:/etc/nginx/conf.d/deafault.conf -v /usr/local/nginx/logs:/var/log/nginx nginx

docker中安装Mysql

docker pull mysql:8.0.27

docker run -d --name Mysql-3306 -p 3306-3306 -e MYSQL_ROOT_PASSWORD='123456' mysql:8.0.27

-p 13306:3306                      将容器的 3306 端口映射到主机的 3306 端口

--name  Mysql-3306                    启动后容器名

-e MYSQL_ROOT_PASSWORD='123456'   初始化 root 用户的密码

docker中部署Mysql

 docker pull mysql:8.0.27

创建容器并运行:

docker run -d --name Mysql-3306 -p 3306-3306 -e MYSQL_ROOT_PASSWORD='123456' mysql:8.0.27

-p 3306:3306                      将容器的 3306 端口映射到主机的 3306 端口

--name  Mysql-3306                    启动后的容器名

-e MYSQL_ROOT_PASSWORD='123456'   初始化 root 用户的密码

Docker中运行mysql,避免中文输入问题:

docker exec -it Mysql-3306 env LANG=C.UTF-8 bash
mysql  -uroot -p

输入密码:123456进入mysql

展示数据库:

show databases;

使用mysql数据库:

use mysql;

查看用户信息:

SELECT `Host`,`User` FROM user;

MySQL默认只允许root账户在本地登录,如果要在其他机器上连接mysql,必须修改root允许远程连接,或者添加一个允许远程连接的账户

因为拉取的mysql镜像是比较新版本的,当使用grant权限列表on数据库to '用户名'@'访问主机" identified by '密码';时会出现.……ear 'identified by '密码" at line1"这个错误

因为新版的的mysql版本已经将创建账户和赋予权限的方式分开了。

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION ;
flush privileges;

创建myx数据库并使用

#下面是我自己的一些设计表和建表,可忽略。

构建表结构并插入数据:

teacher表结构

字段名

字段描述

数据类型

主键

外键

非空

唯一

自增

id

编号

INT(4)

num

教工号

INT(10)

name

姓名

VARCHAR(20)

sex

性别

VARCHAR(4)

birthday

出生日期

DATETIME

address

家庭住址

VARCHAR(50)

(1)teacher表的创建:

create table teacher(

id int(4) not null unique auto_increment,

num int(10) not null unique,

name varchar(20) not null,

sex varchar(4) not null,

birthday datetime,

address  varchar(50),

primary key(id)

)engine = InnoDB default charset = utf8 collate = utf8_bin;

然后向teacher表中插入记录。

insert into teacher values(1, 1001, '张三', '男', '1984-11-08', '北京市昌平区'),(2, 1002, '李四', '女', '1970-01-21', '北京市海淀区'),(3, 1003, '王五', '男', '1976-10-30', '北京市昌平区'),(4, 1004, '赵六', '男', '1980-06-05', '北京市顺义区');

查询teacher表数据:

防火墙放行3306

firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload 

dockerfile配置demo1

1、创建存放Dockerfile文件的文件夹

mkdir -p /usr/local/docker/demo1/

2、编写Dockerfile文件 (注:Dockerfile文件是严格区分大小写的)

FROM tomcat 

#借助tomcat的镜像

RUN mkdir -p /usr/local/tomcat/webapps/ROOT/ 

#创建ROOT目录

RUN echo  "Good morning, and in case I don't see you, Good afternoon, Good evening, And good night.">/usr/local/tomcat/webapps/ROOT/index.html

#使用 echo 写入创建内容

WORKDIR /usr/local/tomcat 

#跳转到/usr/local/tomcat目录

3、构建Dockerfile镜像 -t 指定构建镜像名称

docker build -t demo1 .或绝对路径

4、创建容器,测试镜像

docker run -d --name demo1-8080 -p 8080:8080 demo1

Dockerfile案例七、配置demo1:2.0

1、创建demo2文件夹

mkdir -p /usr/local/docker/demo1:2.0/

2、编写demo2的Dockerfile文件

FROM tomcat

WORKDIR /usr/local/tomcat/webapps/ROOT/

RUN rm -rf *

RUN echo "<h1>Hello world</h1>">/usr/local/tomcat/webapps/ROOT/index.html

3、创建镜像

docker build -t demo2 /usr/local/docker/demo1:2.0/

4、创建容器,测试镜像

docker run -d --name demo1-8080 -p 8080:8080 demo1:2.0
  1. 测试

Dockerfile配置demo2 (学习COPY命令)

1、创建demo2文件夹

mkdir -p /usr/local/docker/demo2/

2、编写Dockerfile文件

FROM tomcat

WORKDIR /usr/local/tomcat/webapps

RUN mkdir ROOT

RUN rm -rf *

COPY 1.jpg /usr/local/tomcat/webapps/ROOT/

3、创建镜像

docker build -t demo2 .

4、创建容器,测试镜像

Dockerfile案例九

1、创建demo3文件夹

mkdir -p /usr/local/docker/demo3/

2、编写demo3的Dockerfile文件

FROM tomcat

RUN mkdir -p /usr/local/tomcat/webapps/ROOT

WORKDIR /usr/local/tomcat/webapps/ROOT

RUN rm -rf *

COPY qfnj.zip /usr/local/tomcat/webapps/ROOT/

RUN unzip qfnj.zip

RUN rm -rf qfnj.zip

WORKDIR /usr/local/tomcat

3、创建镜像

docker build -t demo3 .

4、创建容器,测试镜像

Dockerfile案例十、配置图形化

1、下载docker的中文图形化镜像

sudo su

cp  Portainer-CN.zip  /root

Portainer-CN中文界面包上传到root目录下下

sudo mkdir -p /root/portainer/{data,public}

在命令行root目录下输入下面代码

apt install unzip
unzip Portainer-CN.zip -d /root/portainer/public
docker run -d \

--net bridge \

-p 9000:9000 \

--restart=always \

-v /var/run/docker.sock:/var/run/docker.sock \

-v /root/portainer/data:/data \

-v /root/portainer/public:/public \

--name myportainer \

portainer/portainer

ip;9000  设置管理员密码,密码长度不少于八个字符设置好后网页右上角注销重新登录选择本地docker

OK,到此一些docker和docker-compose的部署和一些简单案例结束了,后面我还会继续更新相关大数据方面的内容。fighting!

                                                                        "熬得过无人问津,才配得上万众瞩目"
 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux 安装配置Docker 和Docker compose 并在docker中部署mysql和中文版portainer图形化管理界面 的相关文章

  • rviz闪退原因和解决办法

    rviz一启动就闪退 xff0c 可能是因为一些rviz中读的话题数据有误 xff0c 比如path pose中的四元数为 0 0 0 0 xff0c rviz显示不了这样的位姿 xff0c 就会自动关闭 而这样的不合格的数据往往是话题初始
  • 【Java】java | idea | idea中terminal的jdk版本与cmd中jdk版本不一致

    一 说明 1 本地装了多个jdk版本 xff0c jdk7 jdk8 jdk11 2 根据项目不同需要不时的切换JAVA HOME的版本 3 有个项目是1 8的 xff0c Project Structure 修改为1 8 xff1b Se
  • 【Java】java | hutool生成二维码 | 无法访问com.google.zxing.BarcodeFormat

    一 说明 1 项目使用hutool 2 需求 xff1a 生成二维码并上传到minio 3 无法访问com google zxing BarcodeFormat 二 解决 1 加入maven依赖即可 lt dependency gt lt
  • 【Java】javafx | 打包成jar包

    一 说明 1 javafx项目 2 maven管理 二 解决方案 1 xff09 加入maven插件 lt build gt lt resources gt lt resource gt lt 这里是放在 src main java gt
  • 【Java】java | 将可运行jar打包成exe可执行文件

    一 说明 1 javafx桌面程序 xff0c 但又不想安装jre环境 2 需要将可执行jar打包成exe 3 使用工具exe4j 二 操作步骤 1 下载exe4j https exe4j apponic com 2 安装 说明1 xff1
  • Python中的下划线

    目录 单个下划线 xff08 xff09 单下划线前缀的名称 双下划线前缀名称 前后都带双下划线名称 单个下划线 有3种情况 返回交互解释器中最后一次执行语句的结果 span class token operator gt gt span
  • 学完c再学python简单吗,可以先学python再学c吗

    python学好了之后是不是学c语言就简单了 C比较难 xff0c 学了python 还是比较难 xff0c 因为python比较简单 你会不习惯 应该说 xff0c 学了C后 xff0c 学python会觉得比较方便易用 我也不会画窗体
  • 关于堆栈的讲解(我见过的最经典的)

    转 https blog csdn net yingms article details 53188974 这是一篇转发的文章 xff0c 我对他进行了格式化而已 xff0c 原文出处不详 一 预备知识 程序的内存分配 一个由c C 43
  • 驼峰命名法等命名规范

    人们交流靠各种语言 xff0c 每行都有每行的所谓的 行话 程序员也不例外 xff0c 众所周知 xff0c 程序员都是用代码进行交流的 那么除了在代码中的注释之外 xff0c 程序员如何读懂别人的程序呢 xff1f 当然 xff0c 程序
  • bootloader的简单介绍以及uboot

    先给自己打个广告 xff0c 本人的微信公众号正式上线了 xff0c 搜索 张笑生的地盘 xff0c 主要关注嵌入式软件开发 xff0c 股票基金定投 xff0c 足球等等 xff0c 希望大家多多关注 xff0c 有问题可以直接留言给我
  • Docker的安装配置及基础学习

    Docker的安装 span class token comment 1 卸载旧版本 span yum remove span class token function docker span span class token punctu
  • pixhawk无法校准加速度计解决-震动太大

    pixahwk4 报错accelemeter inconsistent xff0c 校准加速度计时也没反应无法校准 xff0c 一直停在下面这个界面无法自动识别校准 等很长时间后 xff0c 就显示calibration failed re
  • C++ unordered_map

    转载自 这里 目录 查找元素 迭代器 容量 修改操作 通接口 哈希策略 观察器 std swap std unordered map std erase if std unordered map 简介 本篇博客介绍C 43 43 常用的无序
  • C++中stringstream如何判断流中是否为空

    学习自 StackOverflow 方法1 xff1a ss rdbuf gt in avail code include lt sstream gt include lt iostream gt using namespace std i
  • 为什么说C++引入的强制类型转换比C风格的强制类型转换更安全?

    我目前只体会到两种转换更安全 xff0c static cast和dynamic cast 首先static cast xff0c static cast只能在有 相互联系的类型 中进行相互转换 xff0c 这个相互联系就很微妙 xff08
  • 1000瓶药水,一瓶有毒,用10只老鼠来判断到底是哪一瓶

    1 方法1 xff0c 二分搜索 500 250 125 63 32 16 8 4 2 1 假设毒性在一个小时才会发作 xff0c 这样可以用10只老鼠来判断 xff0c 但是在灌入250瓶的时候 xff0c 必须等灌入500瓶的结果 xf
  • TCP中time_wait解释及解决方法

    首先是四次挥手断开连接的状态变化图 总的来说 xff0c 主动关闭连接的一方才会进入TIME WAIT状态 客户端主动关闭连接时 xff0c 会发送最后一个ack后 xff0c 然后会进入TIME WAIT状态 xff0c 再停留2个MSL
  • git基本命令

    git branch a 显示所有的分支 xff08 本地 43 远程 xff09 git branch 显示本地分支 git branch r 显示远程仓库分支 git checkout Bran 切换到分支 git branch Bra
  • JDK+Maven环境配置

    1 下载JDK8并安装 2 下载Maven 3 配置maven vim bash profile 打开bash配置文件 export Maven 61 34 usr local ApacheMaven 34 export PATH 61 3
  • java中调用scala

    下载scala的SDK 包 xff0c https www scala lang org download all html 注意下载与pom文件中依赖对应的版本 xff0c 解压至指定文件夹 在 bash profile中配置环境变量 s

随机推荐

  • 2018北航计算机 北理工计算机夏令营经验分享

    今天是9月28日 xff0c 推免系统的流程也都完成 xff0c 最终一切也都尘埃落定 之前在网上看到过许多学长学姐的经验分享贴 xff0c 今天所有的事情结束之后 xff0c 也趁还记着 xff0c 就把我的经历也写下来 xff0c 供以
  • 在线教育-谷粒学院学习笔记(九)

    文章目录 1 内容介绍2 搭建项目前台环境NUXT3 整合项目首页4 nuxt路由5 首页数据banner显示 初始配置6 首页数据banner显示 接口7 首页数据banner显示 前端实现8 首页数据显示 热门课程和名师9 Redis复
  • plotjuggler实时绘制ros topic数据流

    ros里安装plotjuggler用 xff1a sudo apt install ros melodic plotjuggler ros 不要用 xff1a sudo apt install ros melodic plotjuggler
  • 汉语拼音码

    汉字拼音首字母列表 本列表包含了20902个汉字 用于配合 GetChineseSpell 函数使用 本表收录的字符的Unicode编码范围为19968至40869 summary gt private static string strC
  • Futaba SBUS协议解析

    Futaba SBUS协议解析 S bus为futaba使用的串行通信协议 实际上为串口通信 但是有几点需要注意 xff1a 在大端小端上 xff0c 网上资料都说的不是很清楚 xff1b 跟TTL串口信号相比 xff0c S bus的逻辑
  • ubuntu 暂时不能解析域名

    错误 1 http security ubuntu com ubuntu xenial security main amd64 curl amd64 7 47 0 1ubuntu2 18 暂时不能解析域名 cn archive ubuntu
  • 全局变量和局部变量的区别

    全局变量和局部变量是面试时常问的问题之一 xff0c 我曾在夏令营面试和就业面试中不止一次的被问到 在这里我总结归纳一下两者的区别 在内存中的区别 这是最重要的区别 全局变量 xff08 外部变量和静态变量 xff09 保存在内存的全局存储
  • Ubuntu18安装成功后 显示未找到wifi适配器

    因为这个问题 xff0c 耽误了好久好久的任务进度 xff0c 搞得爆粗口了好几天 xff0c 最后差点放弃了 但凭着一丝不放弃精神 xff0c 终于解决问题了 总结一些我遇到的问题 xff0c 希望能帮助恼火的朋友们节省宝贵的时间 我尝试
  • px4添加自定义消息进行仿真数据采集

    第一步 xff1a 添加一个新topic 将想要采集模块的数据信息声明成自定义的uORB消息 xff1a 在PX4 msg目录下新建一个格式为 xff1a xxxx msg xff0c 定义消息结构 xff0c 将消息记录到日志当中 简单例
  • 如何将ros下sensor_msgs.msg的Image转换为array

    使用ros numpy package Tools for converting ROS messages to and from numpy arrays Contains two functions arr 61 numpify msg
  • visdom

    跑强化学习代码 xff0c 训练曲线用到visdom Ubuntu下输入指令python m visdom server 一直是Downloading scripts this may take a little while xff0c 无
  • latex表格居中和表格内容居中

    begin table caption Table captions should be placed above the tables label tab1 begin tabular l l l hline Heading level
  • 自动化环境搭建pytest+allure

    pytest安装 安装pytest pip install pytest 61 61 4 0 2 pip install pytest html 生成html测试报告 Allure搭建 1 下载Allure安装包 xff0c 找到对应版本
  • gazebo model的sdf文件中的uri路径

    让我们先看一个gazebo模型的sdf文件iris depth camera down sdf lt sdf version 61 39 1 5 39 gt lt model name 61 39 iris depth camera dow
  • adb连接不上手机测试设备

    问题 xff1a 解决 cannot connect to 5555 由于目标计算机积极拒绝 xff0c 无法连接 10061 解决办法 xff08 Windows 43 R xff1a cmd环境 xff09 1 连接USB数据线 xff
  • navicat连接本地mysql数据库报1251(版本问题)

    本地数据库服务已经启动 xff0c navicat连接本地数据库出现如下错误 xff0c 一般首次使用或下载新版本navicat会出现 xff0c 因为我下载的10 0版本 xff0c 它采用新的保密方式 xff0c 与默认旧版本5 0不同
  • oracle中的违反完整性约束条件问题

    在用sql语句创建表时 xff0c 出现了下列问题 xff1a 在这 xff0c 把这个问题出现的原因总结一下 xff1a 1 数据类型长度不一致 A表中的外键字段和B表中的被外键关联的字段数据类型或长度不一致 由此产生了问题 xff0c
  • python web快速建站基础

    1 Django基础 Django是一个开放源代码的Python Web应用框架 xff0c 由Python写成 xff0c 采用了MVT的框架模式 xff0c 即模型M xff0c 模板T和视图V 1 1 MVT 与MVC模式类似 xff
  • pycharm报找不到模块问题

    在学习python数据可视化时 xff0c 用到库特性时 xff0c 例如csv xff0c 总是提示类似 module csv has no attribute writer 的问题 xff0c 后来发现把这些库的文件夹名字改为 csv1
  • Linux 安装配置Docker 和Docker compose 并在docker中部署mysql和中文版portainer图形化管理界面

    Linux 安装配置Docker 和Docker compose 并在docker中部署mysql和中文版portainer图形化管理界面 首先环境准备 xff1a 下载Ubuntu20 04 4版本并打开vmare16虚拟机 xff08