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日
    浏览(9)
  • macOS Sonoma 14.3.1终于发布啦 为什么清除内存对于提高mac性能非常重要?

    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日
    浏览(12)
  • 【C++】C++学习前言

    【C++】C++学习前言

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

    2024年03月12日
    浏览(13)
  • 课程学习前言

    课程学习前言

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

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

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

    2024年02月16日
    浏览(8)
  • 【自制C++深度学习框架】前言

    【自制C++深度学习框架】前言

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

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

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

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

    大数据、人工智能、机器学习、深度学习关系联系前言

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

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

    解决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日
    浏览(12)
  • 【C++初阶(一)】学习前言以及命名空间

    【C++初阶(一)】学习前言以及命名空间

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

    2024年02月11日
    浏览(14)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包