docker使用示例

Posted shijingjing07

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker使用示例相关的知识,希望对你有一定的参考价值。

本文使用docker容器运行wordpress博客,采用了三种方法来演示,docker的使用
自建wordpress容器
采用官方的wordpress容器
采用docker compose容器管理工具

1.运行wordpress需要的环境
1)wordpress源码
2)php运行环境
3)mysql

2.自建wordpress容器
自建wordpress容器,将wordpress源码,相关php,mysql依赖,打包成一个image文件
1)下载wordpress源码

[email protected]:/home/shijingjing# mkdir docker-demo && cd docker-demo
[email protected]:/home/shijingjing/docker-demo# wget https://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz
[email protected]:/home/shijingjing/docker-demo# tar -xvf wordpress-4.9.4-zh_CN.tar.gz
[email protected]:/home/shijingjing/docker-demo# ls
wordpress  wordpress-4.9.4-zh_CN.tar.gz

2)运行php-apache容器

[email protected]:/home/shijingjing/docker-demo# docker container run -d --rm --name wordpress -p 8000:80 --volume "$PWD/":/var/www/html php:5.6-apache

-d: 容器后台运行
--rm: 容器停止后,自动删除容器文件
--name: 容器命名
-p: 端口映射,apache默认80端口,将容器的80端口映射到外部的8000端口
--volume: 文件夹内容映射,当前文件夹和容器的/var/www/html相互映射
php:5.6-apache:官方php image

查看php容器运行状态:
技术分享图片

3)浏览器访问8000端口
技术分享图片

访问外部8000端口,实际上访问的是容器的80端口,网站根目录/var/www/html,中wordpress文件夹

点击下一步,会要求输入数据库用户名,密码等
技术分享图片

因此,我们必须要关联mysql容器

3)运行mysql容器

[email protected]:/home/shijingjing/docker-demo# docker container run -d --rm --name mydb --env MYSQL_ROOT_PASSWORD=123456 --env MYSQL_DATABASE=wordpress mysql:5.7

-d: 容器后台运行
--rm: 容器停止后,自动删除容器文件
--name: 容器命名
--env: 传入容器的变量
MYSQL_ROOT_PASSWORD:mysql root用户密码设置
MYSQL_DATABASE:mysql数据库,不存在时创建

查看mysql容器运行状态:
技术分享图片

4)关联mysql容器

[email protected]:/home/shijingjing/docker-demo# docker container run -d --rm --name wordpress -p 8000:80 --volume "$PWD/":/var/www/html --link mydb  php:5.6-apache

技术分享图片

提交,依然报错
技术分享图片

这是因为,我们运行的php环境,不支持mysql数据库驱动

5)创建带有mysql扩展的php image
新建Dockerfile文件

FROM php:5.6-apache
RUN docker-php-ext-install mysqli

创建image文件
技术分享图片

5)运行创建的含有mysql扩展的容器

[email protected]:/home/shijingjing/docker-demo# docker container run -d --rm --name wordpress -p 8000:80 --volume "$PWD/":/var/www/html --link mydb:mysql phpwithmysql

点击提交,创建数据库成功!
技术分享图片

2.使用官方Wordpress image
1)运行mysql容器

[email protected]:~# docker container run -d --rm --name mydb --env MYSQL_ROOT_PASSWORD=123456 --env MYSQL_DATABASE=wordpress mysql:5.7

2)运行wordpress容器

[email protected]:~# docker container run -d --rm --name wordpress -p 8000:80 --link mydb:mysql wordpress

3)浏览器访问
技术分享图片

4)容器文件和本地文件相互映射
当我们需要修改容器文件的内容时,可以将容器文件映射到本地,修改本地,会反映到容器。

[email protected]:~# docker container run -d --rm --name wordpress -p 8000:80 --link mydb:mysql --volume "$PWD/wordpress":/var/www/html wordpress
[email protected]:/home/shijingjing/docker-demo# ls
wordpress  wordpress-4.9.4-zh_CN.tar.gz

3.使用Docker Compose工具
前两种方法,都需要手动运行多个容器,docker compose提供了一种更简单的管理多个容器的方法。
1)安装docker compose

apt install docker-compose

2)在docker-demo文件下下,新建docker-compose.yml配置文件

mydb:
    image: mysql:5.7
    environment:
     - MYSQL_ROOT_PASSWORD=123456
     - MYSQL_DATABASE=wordpress
wordpress:
    image: wordpress
    links:
     - mydb
    ports:
     - "0.0.0.0:8000:80"
    working_dir: /var/www/html
    volumes:
     - wordpress:/var/www/html

顶层标签标示有两个容器mysql和web,具体的参数我们在前面已经介绍过

3)使用docker-compose启动容器

docker-compose up

4)浏览器访问
技术分享图片

5)关闭容器

docker-compose stop 

6)删除容器文件,需在stop后

docker-compose rm

以上是关于docker使用示例的主要内容,如果未能解决你的问题,请参考以下文章

docker 部署 coredns(内部域名解析)

Docker删除报错:Error response from daemon: conflict: unable to delete 08b152afcfae (must be forced)(代码片段

处理屏幕旋转上的片段重复(带有示例代码)

html PHP代码片段: - AJAX基本示例:此代码演示了使用PHP和JavaScript实现的基本AJAX功能。

LockSupport.java 中的 FIFO 互斥代码片段

Python 向 Postman 请求代码片段