​Linux Ubuntu环境下安装配置Docker 和Docker、compose、mysql、中文版portainer

​Linux Ubuntu环境下安装配置Docker 和Docker、compose、mysql、中文版portainer

这篇文章探讨了在Linux Ubuntu环境下安装和配置Docker及其相关工具的过程。首先介绍了Docker的基本概念,然后详细讲解了在Ubuntu系统上的安装步骤。随后,文章涵盖了Docker Compose的配置,使读者能够更高效地管理多个Docker容器。此外,文章还包括了在Docker环境中部署和配置MySQL数据库的方法,以满足各种应用的数据存储需求。最后,文章介绍了中文版Portainer的安装和配置,为用户提供了一个友好的图形化界面,使Docker容器的管理变得更加直观和便捷。通过这些内容,读者将能够迅速在Ubuntu系统上搭建强大的Docker环境,同时利用相关工具更方便地进行容器化应用的开发和部署。

首先环境准备:

下载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的部署和一些简单案例结束了,后面我还会继续更新相关大数据方面的内容。                                

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/219587.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智能优化算法应用:基于旗鱼算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于旗鱼算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于旗鱼算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.旗鱼算法4.实验参数设定5.算法结果6.参考文献7.MA…

yaml 文件格式

yaml文件&#xff1a;是一种标记语言&#xff0c;以竖列形式展示序列化的时间格式&#xff0c;可读性高 类似于json格式。语法简单。 yaml通过缩进来表示数据结构&#xff0c;连续的项目用-减号来表示。 yaml文件使用的注意事项&#xff1a; 1&#xff0c;大小写敏感 2&am…

Apache Web 服务器监控工具

将Apache Web 服务器监控纳入 IT 基础架构管理策略有助于先发制人地识别性能瓶颈&#xff0c;这种主动监控方法提供必要的数据&#xff0c;以确保 Web 服务器能够胜任任务&#xff0c;并在需要时进行优化。保证客户获得流畅、无忧的用户体验可以大大有助于巩固他们对组织的信任…

SSL证书过期怎么更新?

一、概述 SSL证书是用于加密网站和客户端之间通信的一种数字证书&#xff0c;可以确保数据传输的安全性和保密性。然而&#xff0c;SSL证书是有有效期的&#xff0c;一旦过期就需要及时更新。本文将介绍如何更新SSL证书&#xff0c;以确保网站的安全性和正常运行。 二、SSL证…

【字符串】ABC324E

退役啦&#xff0c;接下来的博客全是图一乐啦 E - Joint Two Strings 题意 思路 统计两个指针的方案数一定是枚举一个&#xff0c;统计另一个 然后因为拼起来之后要包含 t 这个字符串&#xff0c;隐隐约约会感觉到和前缀后缀子序列有关 考虑预处理每个 s[i] 的最长公共前…

gRPC-Gateway:高效转换 RESTful 接口 | 开源日报 No.105

grpc-ecosystem/grpc-gateway Stars: 16.4k License: BSD-3-Clause gRPC-Gateway 是一个遵循 gRPC HTTP 规范的 gRPC 到 JSON 代理生成器。它是 Google 协议缓冲编译器 protoc 的插件&#xff0c;可以读取 protobuf 服务定义并生成反向代理服务器&#xff0c;将 RESTful HTTP…

pycharm中如何去除波浪线的设置

pycharm中&#xff0c;碰到恼人的红绿波浪线&#xff0c;打开’file-settings’&#xff0c;然后&#xff0c;参照如图设置&#xff0c;去除’effects’选项&#xff1a;

【Linux服务器Java环境搭建】09 在CentOS系统中安装和配置clickhouse数据库

一、安装环境 CentOS7 二、官网安装参考文档 官网安装参考文档 不同系统请参考如下建议 从RPM软件包安装&#xff1a; 建议在CentOS、RedHat和所有其他基于rpm的Linux发行版上使用官方预编译的rpm软件包从DEB软件包安装&#xff1a; 建议在Debian或Ubuntu上使用官方预编译…

C语言 联合体验证 主机字节序 +枚举

联合体应用&#xff1a;验证当前主机的大小端&#xff08;字节序&#xff09; //验证当前主机的大小端 #include <stdio.h>union MyData {unsigned int data;struct{unsigned char byte0;unsigned char byte1;unsigned char byte2;unsigned char byte3;}byte; };int main…

详细说说vuex

Vuex 是什么 Vuex有几个属性及作用注意事项vuex 使用举例Vuex3和Vuex4有哪些区别 创建 Store 的方式在组件中使用 Store辅助函数的用法响应式的改进Vuex4 支持多例模式 Vuex 是什么 Vuex是一个专门为Vue.js应用设计的状态管理构架&#xff0c;它统一管理和维护各个Vue组件的可…

【深度学习】Pytorch 系列教程(一):PyTorch数据结构:1、Tensor(张量)及其维度(Dimensions)、数据类型(Data Types)

文章目录 一、前言二、实验环境三、PyTorch数据结构0、分类1、Tensor&#xff08;张量&#xff09;1. 维度&#xff08;Dimensions&#xff09;0维&#xff08;标量&#xff09;1维&#xff08;向量&#xff09;2维&#xff08;矩阵&#xff09;3维张量 2. 数据类型&#xff08…

报告称超 5 成职场人员有兼职 ,有人因做副业被降薪或被辞,有哪些信息值得关注?你有下班兼职的打算吗?

在职程序员分享身边几个做兼职的案例&#xff1a; 前领导从21年开始做小红书账号&#xff0c;粉丝30w&#xff0c;月入5w左右&#xff1b; 隔壁工位的哥们每隔几个月都会在平台接点小单&#xff0c;今年赚了小几万&#xff1b; 室友每天开车上班顺便接顺风车单子&#xff0c;一…

推荐一款好用的包含表格识别的OCR网站

在当今数字化的时代&#xff0c;文字和表格识别已经成为了许多行业的关键技术。无论是处理大量的纸质文档&#xff0c;还是从网络上收集数据&#xff0c;OCR&#xff08;光学字符识别&#xff09;技术都扮演着重要的角色。然而&#xff0c;对于许多用户来说&#xff0c;OCR软件…

螺旋矩阵算法(leetcode第885题)

题目描述&#xff1a; 在 rows x cols 的网格上&#xff0c;你从单元格 (rStart, cStart) 面朝东面开始。网格的西北角位于第一行第一列&#xff0c;网格的东南角位于最后一行最后一列。你需要以顺时针按螺旋状行走&#xff0c;访问此网格中的每个位置。每当移动到网格的边界之…

GradNorm理解

主要参考这一篇&#xff0c;GradNorm&#xff1a;Gradient Normalization for Adaptive Loss Balancing in Deep Multitask Networks&#xff0c;梯度归一化_grad norm-CSDN博客 14:20-15:30 提前需要理解的概念 损失函数&#xff0c;衡量ypred与ytruth的差距。 Grad Loss定…

盲盒小程序如何盈利?创业新模式

当前&#xff0c;盲盒的影响力越来越大&#xff0c;深受年轻人的热爱&#xff0c;受众群体逐渐增加&#xff0c;盲盒的市场规模不断扩大。 在当下社交媒体时代&#xff0c;盲盒也转到了互联网上&#xff0c;根据网络的传播&#xff0c;盲盒也迎来了新一轮的发展&#xff0c;“…

在服务器上配置jupyter notebook便于本地访问

文章目录 需求配置1. 安装jupyter2. 生成配置文件3. 设置登录密码并生成秘钥a. 打开服务器的终端b. 设置密码 4. 修改配置文件a. 进入配置文件所在的文件夹b. 编辑配置文件jupyter_notebook_config.pyc. 保存文件 5. 在服务器上生成jupyter访问地址 关注公众号&#xff1a;『 …

C# WinForm 跨线程访问控件

写在前面 在WinForm开发中&#xff0c;经常会碰到主线程代码运行过程中需要刷新窗体控件的情况&#xff0c;如果直接在其他线程中去操作窗体控件&#xff0c;这时会抛出线程间操作无效的异常信息&#xff0c;因为窗体控件是由主线程创建的&#xff0c;C#强制要求代码必须是线程…

SAP 标准GUI 中增加按钮时报错:EC181

今天在打一个note的时候&#xff0c;需要做一些手动的调整&#xff0c;其中的步骤就需要我去在标准的GUI STATUS 增加按钮 我在进入编辑模式的时候&#xff0c;直接去插入的时候&#xff0c;始终报错如下&#xff1a; Function code xxxx has not been assigned to a functio…

使用matlab制作声音采样率转换、播放以及显示的界面

利用matlab做一个声音采样率转换、播放以及显示的界面 大抵流程&#xff1a; 图形界面创建&#xff1a;使用figure函数创建名为“声音采样率转换”的图形界面&#xff0c;并设置了其位置和大小。 按钮和文本框&#xff1a;使用uicontrol函数创建了选择音频文件的按钮、显示当前…