【云计算学习笔记】Docker(一)

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

安装Docker

(出于安全性考虑,有关Docker的命令需在root权限下进行,这里全程sudo一下)

mkdir ~/docker && cd ~/docker &&
sudo apt-get -y install docker.io

docker version:查看 Docker 的版本信息
docker help:查看 Docker 的帮助文档

更换镜像源:

Docker 工作的基础即是镜像。认为一个镜像相当于是一个独立的由应用组成的虚拟机。为此,docker 建立了 Docker Hub 来存贮镜像(就像GitHub一样)。
以下命令更换镜像源为腾讯云的镜像:

sudo su -
cat >> /etc/docker/daemon.json <<- EOF
{
  "registry-mirrors": ["https://mirror.ccs.tencentyun.com"]
}
EOF
systemctl restart docker
exit

下载Docker相关镜像

docker pull <镜像>

拉取镜像,<>内为镜像名称

sudo docker image ls

查看已下载的镜像

几个常用镜像及其下载命令

Nginx

sudo docker pull nginx:alpine
sudo docker pull php:7-fpm-alpine
sudo docker pull postgres:alpine

启动镜像(以Nginx为例)

sudo docker run --rm -d -p 80:80 --name nginx nginx:alpine

参数说明

–rm:容器执行完后会被直接销毁。
–name:指定容器名称。
-d:容器会在后台运行。
-p:开放容器的80端口映射到主机的80端口。
-v:将nginx的配置文件挂载到容器的对应目录

之后可在Ngnix对应网址上看到欢迎页面。

停止容器

sudo docker stop <容器ID或容器名称>

命令使用说明:

  • 若输入ID,可以只输入前几个字符(Docker会自动匹配后面的字符)。
  • 若输入容器名称,则必须完整输入。

LNMP

什么是LNMP?

Linux-Nginx-MySQL(MariaDB)-PHP

高效管理并启动:docker-compose

安装:

sudo apt-get install -y python-pip && sudo pip install docker-compose

创建并修改配置文件docker-compose.yml:

touch ~/docker/docker-compose.yml

用vim打开该文件并填入以下内容:(vim操作不熟练的可搜搜别的资料哈,这里不多细述了)

version: "3"
services:

  Nginx:
    image: nginx:alpine
    ports:
      - 80:80
    volumes:
      - ./web:/usr/share/nginx/html:ro
      - ./nginx.conf:/etc/nginx/conf.d/default.conf:ro

  PHP:
    image: undefined01/php:7-fpm-alpine
    volumes:
      - ./web:/var/www/html:rw

  Database:
    image: postgres:alpine
    environment:
      POSTGRES_USER: "postgres"
      POSTGRES_PASSWORD: "rootroot"
    volumes:
      - ./data:/var/lib/postgresql/data:rw

配置文件中涉及到的参数:

  • version:配置文件使用第三套标准。
  • services:需要启动的服务(容器)列表。

对于每一个服务,又有:

  • image:该服务使用的镜像。
  • ports:该服务开放的端口。
  • volumes:将某目录或文件挂载到容器的相应位置上,后面的ro、rw表示对于容器是否可读写。
  • enviornment:设置该容器的环境变量。此处通过环境变量的形式设置数据库的账号和密码。
    !!此处数据库账号密码保存在文件中,所以一定要注意文件的访问权限!!

Nginx的配置文件:

server {
    listen       80;
    server_name  localhost;

    location / {
        root   /usr/share/nginx/html;
        index  index.php index.html index.htm;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    location ~ \.php$ {
        fastcgi_pass   PHP:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /var/www/html/$fastcgi_script_name;
        include        fastcgi_params;
    }
}

一些问题:

如何更改容器里的配置文件?

只需要在本地编辑好后挂载到容器中去(会覆盖容器中的文件),前面小节中预留的nginx.conf就是为此。

如何让 Nginx 容器与 PHP 容器通讯?

对于由 docker-compose 启动的所有容器,都会自动加入由 docker 维护的局域网中,并且会自动为其他容器将某容器的名称(如 PHP )解析成相应的局域网IP。

启动LNMP

sudo docker-compose up -d

查看启动情况

sudo docker container ls

测试环境

获取编辑权限

sudo chmod -R 777 ./data ./web

测试php:

创建index.php文件

touch ~/docker/web/index.php

填入以下内容:

<?php
phpinfo();
?>

若操作正常,可在相应页面看到php相关信息。

测试数据库:

(因为PostgreSQL更适合云部署,所以这里用的PostgreSQL)
创建测试文件并填入以下内容:

<?php
$dbconn = pg_connect('host=Database user=postgres password=rootroot') or die('Could not connect: ' . pg_last_error());
pg_query('CREATE TABLE IF NOT EXISTS test ( tester INT )');

pg_query('INSERT INTO test VALUES (0)');
$res = pg_query('SELECT * FROM test') or die('Query failed: ' . pg_last_error());
$num = pg_num_rows($res);
echo "You have visited this site $num times";

pg_free_result($res);
pg_close($dbconn);
?>

使用命令停止服务

以下命令会自动销毁相应容器

sudo docker-compose down

数据库会保存在当前 docker 目录下的 data 文件夹中,若迁移到任何一台新的主机,只需要将该目录打包带走。

结语

以上仅为学习笔记,不是解决问题的成熟方案。笔者是在临时实验机上跑的,如果有同学需要在常用云服务器甚至是企业级服务器上跑,由于现实情况的复杂性,建议对文章中提到的内容仔细研究、慎重输入,最好先在小机子上练练手,确保没问题了再跑。文章来源地址https://www.toymoban.com/news/detail-821804.html

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

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

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

相关文章

  • 【Docker 学习笔记】Windows Docker Desktop 安装

    Docker 并非是一个通用的容器工具,它依赖于已存在并运行的 Linux 内核环境。 Docker 实质上是在已经运行的 Linux 下制造了一个隔离的文件环境,因此它执行的效率几乎等同于所部署的 Linux 主机。 因此, Docker 必须部署在 Linux 内核的系统上。如果其他系统想部署 Docker 就必须安

    2024年02月15日
    浏览(46)
  • 【Docker 学习笔记】Docker架构及三要素

    Docker 是一个开源的应用容器引擎,基于Go语言 并遵从Apache2.0协议开源; Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。 1. Docker 客户端和服务器 Docker 是客户-服务器( C/S )架构的程序。

    2024年02月15日
    浏览(35)
  • Docker Dockerfile Docker-compose学习笔记

    Docker目前支持Centos7及以后的版本。64位操作系统,内核版本至少为3.10 安装软件源,以及devicemapper存储类型 添加Docker yum源 安装Docker 启动Docker 测试是否能获取镜像 查看获取的镜像 生效配置信息 安装Docker需要保证你的电脑开启虚拟化 进入任务管理器→点击性能→看一下CPU是

    2024年02月12日
    浏览(45)
  • Docker 容器学习笔记

    容器的由来 早先,虚拟机通过操作系统实现相互隔离,保证应用程序在运行时相互独立,避免相互干扰。但是操作系统又笨又重,耗费资源严重: 容器技术只隔离应用程序的运行时环境但容器之间共享同一个操作系统,这里的运行时环境指的是程序运行依赖的各种库以及配

    2024年02月11日
    浏览(42)
  • Docker学习笔记24

    Docker Swarm 搭建: 主机名 系统版本 IP地址 功能 swarm-1 centos7.9 192.168.17.10 管理节点 swarm-2 centos7.9 192.168.17.20 工作节点 swarm-3 centos7.9 192.168.17.30 工作节点 CPU、Memory、Disk不做要求。 准备IP地址和主机名: ntp: 关闭防火墙: 关闭SELinux:  如果第一次配置,需要重启系统。 虚拟机

    2024年02月12日
    浏览(36)
  • Docker学习笔记21

    案例三:使用容器运行一个wordpress应用:         语言开发环境(PHP)         数据库 第一步:创建一个工程目录: 第二步:创建一个docker-compose.yaml文件: 我们再理解下depends_on: 这个是依赖的意思。 --links:容器的互联,是一种让多个容器中的应用进行快速交互的方式,

    2024年02月13日
    浏览(47)
  • Git && Docker 学习笔记

    注意:该文章摘抄之百度,仅当做学习笔记供小白使用,若侵权请联系删除! 目录 列举工作中常用的几个git命令? 提交时发生冲突,你能解释冲突是如何产生的吗?你是如何解决的? git的4个区域及转换 如果代码出现bug,你们是如何解决的? git rebase的作用? 列举工作中常用的

    2024年01月23日
    浏览(33)
  • Docker学习笔记22

    Docker swarm:         Docker swarm 是Docker Host(Docker主机)集群管理工具                 其主要作用是把若干台Docker主机抽象为一个整体,并且通过一个入口统一管理这些Docker主机上的各种Docker资源。Swarm和Kubernetes比较类似,但是更加轻,具有的功能也比Kubernetes更少一些。

    2024年02月13日
    浏览(31)
  • Docker学习笔记23

    Docker Swarm架构:         Swarm中以集群(Cluster)为单位进行管理,支持服务层面的操作。         集群是Swarm所管理的对象。 基本概念: 节点(Node)为Swarm集群中的一个Docker Engine实例。其中管理节点(Manage Node)负责Swarm集群管理并向工作节点分配任务。工作节点(Work No

    2024年02月12日
    浏览(36)
  • 狂神docker学习笔记

    在学习 Docker 前先把 Linux 基本命令复习一下:狂神 Linux 学习笔记 1.Docker 为什么会出现? 一款产品:开发上线两套环境!应用环境,应用配置! 开发一运维。问题:我在我的电脑上可以运行!版本更新,导致服务不可用!对于运维来说,考验就十分大? 环境配置是十分的麻

    2024年02月07日
    浏览(44)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包