docker环境搭建,docker拉取mysql,docker制作自定义C++镜像
centos 安装和使用 docker
yum install docker
systemctl start docker
systemctl status docker
# 查询docker版本
docker version
# 查询docker基础信息
docker info
# docker帮助命令手册
docker --help
docker search 超时问题
# docker search mysql 超时问题,大多是DNS污染造成,无法解析对应ip
# 安装dig软件包
yum install bind-utils
# 查询dns服务器的域名记录,得到ip地址
dig @114.114.114.114 index.docker.io
# hosts文件添加域名解析ip:54.227.20.253 index.docker.io
vim /etc/hosts
# 此时可以执行search查询
docker search mysql
配置国内镜像源
# 使用阿里云docker镜像加速器,https://cr.console.aliyun.com,支付宝扫码登录
vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://******.mirror.aliyuncs.com"]
}
# 启动配置
systemctl daemon-reload
# 重启docker服务
systemctl restart docker
- 配置了国内镜像源(比如阿里的docker镜像源)是对search没有用的,因为docker命令最后还是通过他自己的地址搜索镜像。
- 但是配置了国内镜像源可以加快pull拉去镜像的速度。
docker拉取mysql
docker search mysql
# 拉取最新版本
docker pull mysql
# 拉取指定版本
docker pull mysql:5.7.8
# 查看下载好的镜像文件
docker images
docker容器的启动和停止
# 运行容器
docker run --name mysql1 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
# 查看正在运行的容器
docker ps
# 查看所有容器
docker ps -a
# 停止运行的容器
docker stop [CONTAINER ID]
# 启动docker中的容器
docker start [CONTAINER ID]
# 重启docker容器
docker start [CONTAINER ID]
# 删除容器
docker rm [CONTAINER ID]
进入容器,操作mysql
# 进入容器
docker exec -it [CONTAINER ID] /bin/bash
# 退出容器
exit
# 进入容器后,登录mysql,输入密码123456
mysql -u root -p
# 查询mysql版本
SELECT VERSION();
# 修改 root 用户在 %(所有主机)上的密码
ALTER USER 'root'@'%' IDENTIFIED BY '123456';
# 授予 root 用户所有数据库的所有权限,并允许该用户授予权限给其他用户。
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
# 刷新权限,使更改立即生效
FLUSH PRIVILEGES;
# 退出
exit
阿里云服务器mysql远程访问设置
- 关闭防火墙,或开放3306/tcp端口权限
ufw allow 3306/tcp
- 阿里云服务器管理页面,添加防火墙规则,开放TCP/3306
- 设置完成后,使用Navicat(https://www.navicat.com.cn/products)可远程登录阿里云服务器上的mysql
mysql默认4个库
- 1.information_schema
用途:这是一个信息数据库,存储了 MySQL 服务器维护的所有其他数据库的信息。例如,它包含了关于数据库中的表、列、索引、用户权限等各种元数据 - 2.mysql
用途:主要用于存储 MySQL 的用户账户信息、权限设置、一些存储过程和函数等。它是 MySQL 系统正常运行和安全管理的关键数据库 - 3.performance_schema
用途:用于监控 MySQL 服务器的性能相关信息。它提供了一种方式来查看服务器在运行过程中的性能指标,如查询执行时间、锁等待情况、内存使用等细节。 - 4.sys
用途:这是一个通过视图和存储过程来帮助数据库管理员更方便地理解和管理 MySQL 服务器的数据库。它是基于information_schema和performance_schema中的数据构建的,提供了更简洁易用的接口来获取数据库系统相关信息。
mysql 基础命令
# 查看MySQL有哪些库
SELECT DATABASES;
# 选择information_schema作为当前操作的默认数据库,使用USE指定库后,sql语句可以省略库名
USE information_schema;
# 显示当前库里所有表
SHOW TABLES;
# mysql.user 表存储用户账户信息
# User:存储用户名。
# Host:存储允许用户登录的主机地址。可以是具体的 IP 地址、主机名或%(表示允许从任何主机登录)。
# authentication_string:存储用户的密码,可能是加密后的。
SELECT Host, User, authentication_string FROM mysql.user;
# 添加新用户
CREATE USER 'chw'@'localhost' IDENTIFIED BY '123456';
# 修改用户密码
ALTER USER 'chw'@'localhost' IDENTIFIED BY '123';
# 给用户chw在指定主机上授予table_name表的SELECT和INSERT权限
GRANT SELECT, INSERT ON database_name.table_name TO 'chw'@'localhost';
# 创建库
CREATE DATABASE school;
# 创建表
CREATE TABLE students (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
age INT,
email VARCHAR(200) UNIQUE
);
使用可执行文件制作docker镜像
使用C++开发的可执行文件nethello制作镜像。在nethello可执行文件目录创建 Dockerfile 文件。
先拉取gcc
docker pull gcc
创建Dockerfile文件
vim Dockerfile
FROM gcc:latest
RUN mkdir /usr/src/myapp
COPY nethello /usr/src/myapp
WORKDIR /usr/src/myapp
CMD ["./nethello"]
制作docker镜像
# 当前Dockerfile文件目录,创建镜像,tag版本v1,等待一会
docker build -t nethello:v1 .
# 查看镜像,已有nethello
docker images
# 删除镜像
docker rmi nethello:v1
# 启动镜像,不需要传参可直接启动
docker run -d nethello:v1
# 如果启动失败可以查看日志,容器名通过docker ps -a查询
docker logs 容器名
# 启动镜像,可以自定义传参,覆盖Dockerfile里的传参,注意-p 9090:9090端口映射在-d选项的前面
docker run --name nethellov1 -p 9090:9090 -d nethello:v1 ./nethello -s -p 9090 -P
# 查看日志
docker logs nethellov1
镜像打包,拷贝到其他机器运行。
这里的环境:docker在centos制作,拷贝到ubuntu系统正常运行。
# 打包镜像,在当前目录生成nethello.tar
docker save -o nethello.tar nethello:v1
# 把镜像文件拷贝到其他机器上,将镜像加载到本地 Docker 环境中
docker load -i nethello.tar
# 查看镜像,已有nethello
docker images
# 参考上面的命令运行docker容器
# 进入容器命令行
docker exec -it da40e6044522 bash
# 查看运行的程序,有nethello
top
原文地址:https://blog.csdn.net/weixin_40355471/article/details/145246957
免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!