• Docker安装一些基础组件


    Docker安装一些基础组件

    安装mysql

    docker官网地址

    https://hub.docker.com/_/mysql
    
    • 1

    基础镜像

    拉取镜像
    docker pull mysql:5.7.31
    
    • 1

    备份镜像

    docker save mysql:5.7.31 -o mysql.5.7.31.tar
    
    • 1

    导入镜像

    docker load -i mysql.5.7.31.tar
    
    • 1
    运行镜像

    学习docker run -e参数

    • -e , --env=[]:设置环境变量,容器中可以使用该环境变量
    • 官网中给出进入容器的第三种方式,前边我们学习了/bin/bash,sh
    • 向my.cnf文件中追加相关配置项
    docker run -itd --name mysql --restart always --privileged=true -p 3306:3306 -e
    MYSQL_ROOT_PASSWORD=admin mysql:5.7.31 --character-set-server=utf8 --collation server=utf8_general_ci
    
    • 1
    • 2

    privileged参数

    我们大多数熟悉 Unix 类系统的人,都习惯于通过使用 sudo 来随意提升自己的权限,成为 root 用户。 我们在使用 Docker 容器的过程中知道,docker提供了一个 --privileged 的参数,其实它与随意使用 sudo 有很大的不同,它可能会让你的应用程序面临不必要的风险,下面我们将向你展示这与以 root 身 份运行的区别,以及特权的实际含义。

    作为 Root 运行

    Docker 允许在其宿主机上隔离一个进程、capabilities 和文件系统,但是大多数容器实际上都是默认以 root 身份运行。这里我们拿 DockerHub 上几个比较流行的镜像来进行说明。

    避免以 root 运行

    虽然在容器内以 root 身份运行是很正常的,但如果你想加固容器的安全性,还是应该避免这样做。

    特权模式

    --privileged 可以不受限制地访问任何自己的系统调用。在正常的操作中,即使容器内有 root, Docker 也会限制容器的 Linux Capabilities 的,这种限制包括像 CAP_AUDIT_WRITE 这样的东西,它允 许覆盖内核的审计日志–你的容器化工作负载很可能不需要这个 Capabilities。所以特权只应该在你真正 需要它的特定设置中使用,简而言之,它给容器提供了几乎所有主机(作为root)可以做的事情的权

    本质上,它就是一个免费的通行证,可以逃避容器所包含的文件系统、进程、sockets 套接字等,当然 它有特定的使用场景,比如在很多 CI/CD 系统中需要的 Docker IN Docker 模式(在 Docker 容器内部 需要 Docker 守护进程),以及需要极端网络的地方。

    容器内测试

    在容器内测试mysql

    进入容器:根据官网上的实例,使用bash命令进入容器
    docker exec -it mysql bash
    登录mysql
    mysql -uroot -p
    输入密码
    admin
    use mysql;
    show databases;
    退出mysql
    exit
    退出容器
    exit
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    SQLYog客户端测试

    IP:192.168.198.100
    username:root
    password:admin
    port:3306
    
    • 1
    • 2
    • 3
    • 4

    安装nginx

    docker官网地址
    https://hub.docker.com/_/nginx
    
    • 1
    基础镜像配置
    # 拉取镜像
    docker pull nginx:1.19.3-alpine
    # 备份镜像
    docker save nginx:1.19.3-alpine -o nginx.1.19.3.alpine.tar
    # 导入镜像
    docker load -i nginx.1.19.3.alpine.tar
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    运行镜像
    docker run -itd --name nginx -p 80:80 nginx:1.19.3-alpine 
    
    # 进入容器 
    docker exec -it nginx sh 
    
    # 查看html目录 
    cd /usr/share/nginx/html 
    
    # 配置文件目录 
    cat /etc/nginx/nginx.conf
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    浏览器测试
    这里根据自己的部署环境在浏览器中输入地址验证即可
    http://172.16.16.36/
    
    • 1
    • 2

    img

    image.png

    安装tomcat

    docker官网地址
    https://hub.docker.com/_/tomcat?tab=tags
    
    • 1
    基础镜像配置
    # 拉取最新版本
    docker pull tomcat
    # 拉取某个指定版本
    docker pull tomcat:8.5.77-jre8-openjdk-slim-buster
    
    • 1
    • 2
    • 3
    • 4
    单机版运行镜像
    # -p 8080:8080:将主机的 8080 端口映射到容器的 8080 端口。
    # -v $PWD/test:/usr/local/tomcat/webapps/test:将主机中当前目录下的 test 挂载到容器的 /test。
    docker run --name tomcat -p 8080:8080 -v $PWD/test:/usr/local/tomcat/webapps/test -d tomcat 
    
    • 1
    • 2
    • 3

    安装zookeeper

    docker官网地址
    https://hub.docker.com/_/zookeeper
    
    • 1
    基础镜像配置
    # 拉取镜像
    docker pull zookeeper:3.6.2
    # 备份镜像
    docker save zookeeper:3.6.2 -o zookeeper.3.6.2.tar
    # 导入镜像
    docker load -i zookeeper.3.6.2.tar
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    单机版运行镜像
    docker run -itd --name zookeeper --restart always -p 2181:2181 zookeeper:3.6.2 
    docker exec -it zookeeper /bin/bash 
    
    # 查看版本信息
     cat /etc/issue
    # 返回信息,这里可以看到这个zk是基于Debian10的版本
    Debian GNU/Linux 10 \n \l
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    测试容器

    这里要用到ZooInspector,我们需要在自己本机下异性这个工具,下载地址:

    https://issues.apache.org/jira/secure/attachment/12436620/ZooInspector.zip
    
    • 1

    进入目录ZooInspector\build,运行zookeeper-dev-ZooInspector.jar。

    java -jar zookeeper-dev-ZooInspector.jar
    
    • 1

    点击左上角连接按钮,输入zk服务地址:ip或者主机名:2181。点击OK,即可查看ZK节点信息。

    img

    image.png

    img

    image.png

    安装activeMQ

    docker官网

    activeMQ没有官方镜像版本。需要使用第三方制作镜像,我们学完docker技术后,可以自行制作属于自己的activeMQ镜像。

    https://hub.docker.com/r/webcenter/activemq
    
    • 1
    基础镜像配置
    # 拉取镜像
    docker pull webcenter/activemq:5.14.3
    # 备份镜像
    docker save webcenter/activemq:5.14.3 -o webcenter.activemq:5.14.3.tar
    # 导入镜像
    docker load -i webcenter.activemq:5.14.3.tar
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    单机版运行镜像

    61616为ActiveMQ的外部访问端口, 8161为web页面访问端口

    docker run -itd --name activmq --restart always -p 61616:61616 -p 8161:8161 
    webcenter/activemq:5.14.3 
    
    docker exec -it activmq /bin/bash 
    
    cat /etc/issue 
    # 返回信息: 
    Ubuntu 15.10 \n \l
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    4.3.tar

    
    ##### 单机版运行镜像
    
    61616为ActiveMQ的外部访问端口, 8161为web页面访问端口
    
    
    
    ```bash
    docker run -itd --name activmq --restart always -p 61616:61616 -p 8161:8161 
    webcenter/activemq:5.14.3 
    
    docker exec -it activmq /bin/bash 
    
    cat /etc/issue 
    # 返回信息: 
    Ubuntu 15.10 \n \l
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    http://events.jianshu.io/nb/46793428)

  • 相关阅读:
    STM32无硬件随机数发生器时生成随机数的方法
    研发效能|DevOps 已死平台工程永存带来的焦虑
    微服务架构师封神之路13-RabbitMQ集群与高可用|RabbitMQ clustering and HA
    10年测试经验,在35岁的生理年龄面前,一文不值
    简述unity的模型动画功能
    Spring @Component、@Repository和@Service注释之间的区别
    包装类?为什么需要包装类?
    什么叫硬编码?如何避免硬编码
    为了带你们搞懂RPC,我手写了一个RPC框架
    Cloud整合Zookeeper代替Eureka
  • 原文地址:https://blog.csdn.net/guan1843036360/article/details/127716505