Docker学习(for MacOS)

这篇具有很好参考价值的文章主要介绍了Docker学习(for MacOS)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

0.前言

  • 非常感谢如下2篇文章的指导:
    https://www.ruanyifeng.com/blog/2018/02/docker-wordpress-tutorial.html
    https://www.ruanyifeng.com/blog/2018/02/docker-tutorial.html
  • 由于MacOS与常规的CentOS使用docker上还是有些差别,特地把Mac上3种方式安装WordPress开源软件的方式也梳理下如下(经本人实测通过)。

如有不清楚的,或者还是不明白MacOS的网络配置的,可以联系本人。到时我再专题写下相关文档。由于时间仓促,遗漏之处请多提意见。

1.自建docker镜像安装wordpress:

  • 创建并进入目录:mkdir docker-demo && cd docker-demo

    docker container run \
    -d \
    -p 8686:80 \
    --rm \
    --name docker-demo \
    --volume "$PWD/":/var/www/html \
    php:5.6-apache
    

    备注:

    -d:deamon方式运行

    -p:宿主机和容器的端口映射关系

    --rm:停止运行后,自动删除容器文件。

    --name:容器的名字。

    --volume "$PWD/":/var/www/html:将当前目录($PWD)映射到容器的/var/www/html(Apache 对外访问的默认目录)

    php:5.6-apache:装PHP-5.6,并且自带Apache服务器。因为不考虑修改容器内的任何配置,容器内就只能用80端口映射(apache服务器默认暴露的端口),否则就需要更改容器内的apache服务器端口

  • 在宿主机的docker-demo目录下,新建index.php文件,内容如下:

    <?php 
    phpinfo();
    ?>
    

    在宿主机上打开浏览器,访问http://localhost:8686/index.php,显示效果如下:

      PHP Version 5.6.40
      ...
    
  • 使用浏览器或wget命令从wordress中下载最新版的安装包:https://cn.wordpress.org/latest-zh_CN.tar.gz,并解压缩至docker-demo目录;

  • 新建数据库容器:

    docker container run \
    -d \
    -p 23306:3306 \
    --rm \
    --name wordpressdb-demo \
    --env MYSQL_ROOT_PASSWORD=123456 \
    --env MYSQL_DATABASE=wordpress-demo \
    mysql:5.7
    
  • 新建Dockerfile文件:

    FROM php:5.6-apache
    RUN docker-php-ext-install mysqli
    CMD apache2-foreground
    
  • 执行命令构建docker的image文件: phpwithmysql:

    docker build -t phpwithmysql .
    
  • 运行docker-demo的docker镜像:

    
    docker container run \
    -d \
    -p 8989:80 \
    --rm \
    --name docker-demo \
    --volume "$PWD":/var/www/html \
    --env WORDPRESS_DB_HOST=wordpress-demo:3306 \
    --env WORDPRESS_DB_USER=root \
    --env WORDPRESS_DB_PASSWORD=123456 \
    --link wordpressdb-demo:wordpress-demo \
    phpwithmysql
    
  • 设置wordpress目录可读写:

chmod -R 777 wordpress

  • 打开http://localhost:8989/wordpress可以访问到指定版本的wordpress。

2.拉官方的镜像方式安装wordpress:

  • 运行基于mysql的wordpress数据库镜像:

    docker container run \
    -d \
    -p 13306:3306 \
    --rm \
    --name wordpressdb \
    --env MYSQL_ROOT_PASSWORD=123456 \
    --env MYSQL_DATABASE=wordpress \
    mysql:5.7
    
  • 运行wordpress并关联数据库:

    docker container run \
    -d \
    -p 8787:80 \
    --rm \
    --name wordpress \
    --env WORDPRESS_DB_HOST=mysql:3306 \
    --env WORDPRESS_DB_USER=root \
    --env WORDPRESS_DB_PASSWORD=123456 \
    --link wordpressdb:mysql \
    --volume "$PWD/wordpress":/var/www/html \
    wordpress
    

    注意:mac 与docker desktop for mac内的容器是无法直接访问的
    mac把内部的172.0.0.1(docker desktop的网络ip)映射到了本机的0.0.0.0,在mac中可以直接ping通;
    wordpress在容器的ip为172.17.0.3在mac中是无法ping通的,加上上面的端口映射即可解决-p 8787:80,即mac不访问172.x,但是访问127.0.0.1:8787端口时,就通过本机路由至172.17.0.1(docker desktop),172.17.0.1把请求转发到了docker 容器172.17.0.3;

    在宿主机上打开浏览器,访问http://localhost:8787即可打开wordpress web应用:

    注意 docker-demo和wordpress都是使用的内置的apache服务器,都指向了docker的80端口,但是他们是不同的容器,对应不同的内网IP(如:172.17.0.3:80/172.17.0.4:80),所以通过宿主机的不端口是可以映射过去的

  • 查看容器xxx的配置信息

    docker container inspect wordpress
    

3.通过docker compose定制安装wordpress

  • 使用docker-compose命令查看版本号:

    docker-compose -v

  • 构建compose yml配置文件,文件名就叫docker-compose.yml

    version: "3.3"
    services:
      db:
        image: mysql:5.7
        ports:
          - "33306:3306"
        volumes:
          - ./mysql:/var/lib/mysql
        restart: always
        container_name: mysql-db
        environment:
          MYSQL_ROOT_PASSWORD: 123456
          MYSQL_DATABASE: wordpress-db
          MYSQL_USER: wordpress
          MYSQL_PASSWORD: 654321
      wordpress:
        depends_on:
          - db
        image: wordpress:latest
        ports:
          - "8383:80"
        restart: always
        container_name: wordpress
        environment:
          WORDPRESS_DB_HOST: db:3306
          WORDPRESS_DB_USER: wordpress
          WORDPRESS_DB_PASSWORD: 654321
          WORDPRESS_DB_NAME: wordpress-db
        volumes:
          - ./wordpress:/var/www/html
    

尤其要注意yml文件的格式规范,建议在idea中格式化后再拷贝至docker-compose.yml中(yml规范是子属性缩进2个空格)。

  • 执行docker-compose up命令即可启动wordpress及依赖的mysql服务,默认是前端进程启动,停止显示进程,则服务被杀掉。
  • 执行docker-compose up -d命令守护进程启动wordpress及依赖的mysql服务。
  • 执行docker-compose stop命令即可停止wordpress及依赖的mysql服务,但是里面的数据还在。
  • 执行docker-compose rm命令即可停止wordpress及依赖的mysql服务。

4.常用docker命令

  • Docker默认使用bridge模式启动容器服务,使用docker network inspect bridge命令查看bridge模式网络信息。

  • 运行镜像:

    docker container run hello-world

  • 删除镜像:

    docker rmi 383b67197e7c

  • 强制删除镜像:

    docker rmi --force 383b67197e7c

  • 查询运行的容器:

    docker container ls 或者 docker ps

  • 停止容器

    docker stop 383b67197e7c

  • 进入容器:

    docker exec -it 59b15dc84fa6 /bin/bash文章来源地址https://www.toymoban.com/news/detail-402907.html

到了这里,关于Docker学习(for MacOS)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于Web的考试系统的设计与实现(非常工整规范的参考文章)

    【摘 要】随着现代计算机的应用和互联网络技术的进步和迅猛发展,人们日益地依靠互联网和电脑去做各种工作。于是,以减少教师的压力和工作负荷以及大大提高了工作效率、提高考试质量等方式为主要目标的现代化在线考试系统应运而生。本在线考试系统的主要特点就是它

    2024年02月05日
    浏览(45)
  • macOS Sonoma 14.3.1终于发布啦 为什么清除内存对于提高mac性能非常重要?

    苹果今天发布了macOS Sonoma 14.3.1,这是对去年9月发布的‌macOS Sonoma‌操作系统的微小更新。‌macOS Sonoma ‌14.3.1是在macOS Sonoma 14.3发布几周后推出的。 ‌‌‌‌macOS Sonoma 14.3‌.1更新可以在所有符合条件的Mac电脑上,使用系统设置的软件更新下载。 今天的更新解决了一个令人沮

    2024年02月22日
    浏览(39)
  • 课程学习前言

    app 抓包分析可以看到有签名有加固,毕竟需要 APK 去访问服务、获取数据,都需要 APK 有完整的信息,而这些信息、代码经过各种加密,还是放在 APK 里面。说白了,就是门锁紧了,钥匙藏在门口某个地方,也许就是地垫下面 逆向流程 拿到 App 应用的 apk ; 使用工具进行查壳

    2024年02月06日
    浏览(43)
  • 【C++】C++学习前言

    C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的程序,需要高度的抽象和建模时,C语言则不合适。为了解决软件危机, 20世纪80年代, 计算机界提出了OOP(objectoriented programming:面向对象)思想,支持面向对象的程序设计语言应运而生。

    2024年03月12日
    浏览(54)
  • 【自制C++深度学习框架】前言

    此GitHub项目是一个初学者的深度学习框架,使用C++编写,旨在为用户提供一种简单、易于理解的深度学习实现方式。以下是本项目的主要特点和功能: 计算图:使用计算图来描述深度学习模型的计算过程,利用计算图将神经网络的计算过程视为一个有向无环图。通过构建计算

    2024年02月07日
    浏览(42)
  • Gowin FPGA学习记录——前言

            好久没有写博客了,想想是不是又该写点啥东西了么,准备写点国产FPGA的使用经历吧                  得益于目前国内的政策对国产化芯片扶持,越来越要求核心器件能够自主可控,因此作为核心芯片FPGA,国产FPGA的势头也发展很快。          现在FPGA的这

    2024年02月16日
    浏览(39)
  • FPGA学习实践之旅——前言及目录

    很早就有在博客中记录技术细节,分享一些自己体会的想法,拖着拖着也就到了现在。毕业至今已经半年有余,随着项目越来越深入,感觉可以慢慢进行总结工作了。趁着2024伊始,就先开个头吧,这篇博客暂时作为汇总篇,记录在这几个月以及之后从FPGA初学者到也算有一定

    2024年02月03日
    浏览(55)
  • 大数据、人工智能、机器学习、深度学习关系联系前言

    1.大数据和人工智能关系 2.机器学习、深度学习、人工智能关系 3.监督学习、无监督学习、半监督学习、强化学习、迁移学习关系 4.机器学习具体内容 1.数据驱动的人工智能 :人工智能系统需要大量的数据来进行训练和学习。大数据提供了海量的信息,可以用于训练机器学习

    2024年02月12日
    浏览(57)
  • 解决Docker运行命令时提示“Got permission denied while trying to connect to the Docker daemon socket“类情况,提示如下

      解决方法1 使用sudo获取管理员权限,运行docker命令。 docker守护进程启动的时候,会默认赋予名字为docker的用户组读写Unix socket的权限,因此只要创建docker用户组, 并将当前用户加入到docker用户组中,那么当前用户就有权限访问Unix socket了,进而也就可以执行docker相关命令。

    2024年02月13日
    浏览(41)
  • 【C++初阶(一)】学习前言以及命名空间

    💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:C++初阶之路⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学习排序知识   🔝🔝 对于复杂的问题,规模较大的程序 需要高度的抽象和建模时 C语言不再适合应用于这种场景 于是在1982年 C++创始人 Bjarne Stroustrup 在C语言

    2024年02月11日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包