Docker容器实战

 "爱在,地图上,剥落~"


Mysql 容器化安装

        我们可以在 docker hub上,进入mysql的镜像仓库,找到适合的版本。

        直接拉取镜像:

docker pull mysql:latest
        我们知道 msyql 的默认端口是 3306 ,而且有密码,查看官网的启动用例:
docker run --name mysql -d -p 8081:3306 
        -e MYSQL_ROOT_PASSWORD=wgzzsroot mysql:latest

        我们进入容器登录,可以看到我们已经可以正常登录 msyql :

Redis 容器化安装

        使用关系型数据库(如Mysql)的 Web 站点多多少少都开始在性能上出现了一些瓶颈,而瓶颈的源头一般是在磁盘的 I/O 上。

        为了克服这一问题,NoSQL 应运而生,它同时具备了高性能、可扩展性强、高可用等优点,受到广泛开发人员和仓库管理人员的青睐。

        在NoSQL数据库中,最受欢迎的就是Redis,其包含多种数据结构、支持网络、基于内存、可选持久性的键值对存储数据库。具有如下特征:

基于内存运行,性能高效
支持分布式,理论上可以无限扩展
key-value 存储系统

        下载Redis镜像:

docker pull redis:7.0

        启动redis容器,并连接:

docker container run --name redis -d -p 8085:6379 redis:7.0 
docker container exec -it redis sh

 

C++容器制作

源是什么?

        源的本质就是,当你使用软件安装工具安装软件时,该安装程序从哪里获取软件包的地方。一些人将这些源放在一个集合中——软甲仓库,不管你想要获取什么软件包,都需要到这个仓库中查找。如果软件包存在,你就可以获取到这个软件包,反之就无法完成。

        因为我们目前的机器是Centos版本的,但现在我想基于ubuntu来制作C++容器,输出"hello world"。

        下载镜像:

docker pull ubuntu:latest

        启动容器,编写C++代码:

docker run --name mygcc -it ubuntu:latest bash

        编译C++文件需要标准库以及gcc编译器,但这些软件源是在国外的,访问起来很慢,所以我们会借助国内软件源进行下载。

        配置国内镜像源加速:

sed -i 's@//.*archive.ubuntu.com@//mirrors.ustc.edu.cn@g'  
         /etc/apt/sources.list

         sed命令通过流的形式,将国内镜像源地址添加到默认软件源的配置文件中。

        安装gcc,vim编辑器

# 类似 刷新缓存
apt update
# 安装软件
apt install gcc g++ vim -y

         编写C++文件,并输出“Hello World”:

容器资源更新

        我们运行一个 nginx:

docker run -d --name mywebsite1-p 80:80 ngxin:latest

        通过 docker stats 可以看到资源的动态变:

        多次刷新,访问ngnix服务后:

        可以观察到该容器占用的带宽流量是持续增加的。

        我们还可以通过 docker update 更新 docker 的最大内存

docker container update -m 300m --memory-swap 600m mywebsite1

 

Docker容器常见问题

docker (start vs create vs run)?

🎢 docker create 命令从 Docker 映像创建一个全新的容器。但是,它不会立即运行它

🎢 docker start 命令将启动任何已停止的容器,如果使用 docker create 命令创建容器,则可以使用此命令启动它。

🎢 docker run 命令是创建和启动的组合,因为它创建了一个新容器并立即启动它。

docker import 和 docker load 有什么区别?

        docker import(export) 与 docker load(save)都是一对将容器归档为.tar压缩包的命令。区别在于:

        docker load 会保存该镜像的的所有历史记录,导出的文件要大于使用docker export。

        docker export的容器文件会丢失所有元数据和历史记录,仅保存容器当时的状态,相当于虚拟机快照。

docker rm & docker rmi & docker prune 的差异?

🎑docker rm : 删除一个或多个容器
🎑 docker rmi : 删除一个或多个镜像
🎑 docker prune: 用来删除不再使用的 docker 对象

本篇到此结束,感谢你的阅读。

祝你好运,向阳而生~

  • 17
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值