树莓派安装 Docker

2,838 阅读1分钟

树莓派安装Docker

Docker是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源。 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。 容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。

安装docker

  1. 直接通过安装脚本安装

    $ curl -sSL https://get.docker.com | sh
    
  2. 手动安装

    • 安装docker需要的依赖

      $ sudo apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common
      
    • 添加docker源

      $ curl -fsSL https://download.docker.com/linux/raspbian/gpg | sudo apt-key add -
      $ echo "deb [arch=armhf] https://download.docker.com/linux/raspbian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list
      
    • 更新源

      $ sudo apt update
      
    • 安装docker

      $ sudo apt install docker-ce
      
    • 查看是否安装成功

      $ sudo docker --version
      
    • 设置docker国内镜像

      $ sudo nano /etc/docker/daemon.json
      

      添加如下内容

      {
        "registry-mirrors": ["https://registry.docker-cn.com"]
      }
      
    • 重启docker

      $ sudo systemctl restart docker.service
      
    • 开机启动

      $ sudo systemctl enable docker.service
      

安装docker可视化管理工具(portainer)

  1. 拉取镜像

    $ sudo docker pull portainer/portainer-ce
    
  2. 启动portainer

    $ sudo docker volume create portainer_data
    $ sudo docker run -d -p 9000:9000 --name portainer \
    --restart always -v /var/run/docker.sock:/var/run/docker.sock \
    -v portainer_data:/data portainer/portainer-ce
    

    打开9000端口 sudo ufw allow 9000

安装nginx

  1. 拉取nginx镜像

    $ sudo docker pull nginx
    
  2. 设置nginx目录

    $ mkdir ~/workspace # 创建工作目录(不是必须)
    $ cd workspace/
    $ mkdir nginx # 创建nginx目录
    $ mkdir nginx/log # 创建nginx日志目录
    $ mkdir nginx/conf # 创建nginx基础配置文件目录
    $ nano nginx/conf/nginx.conf # 创建基础配置文件
    $ mkdir nginx/conf.d # 创建nginx虚拟主机配置目录
    $ nano nginx/conf.d/default.conf # 创建默认nginx虚拟主机配置文件
    $ mkdir nginx/html # 创建静态资源目录
    $ nano nginx/html/index.html # 创建默认入口页面
    
    • nginx.conf

      user  nginx;
      worker_processes  1;
      
      error_log  /var/log/nginx/error.log warn;
      pid        /var/run/nginx.pid;
      
      events {
        worker_connections  1024;
      }
      
      http {
        include       /etc/nginx/mime.types;
        default_type  application/octet-stream;
      
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
      
        access_log  /var/log/nginx/access.log  main;
      
        sendfile        on;
        #tcp_nopush     on;
      
        keepalive_timeout  65;
      
        #gzip  on;
      
        include /etc/nginx/conf.d/*.conf;
      }
      
      
    • defalut.conf

      server {
        listen       80;
        server_name  localhost;
      
        #charset koi8-r;
        #access_log  /var/log/nginx/host.access.log  main;
      
        location / {
          root   /usr/share/nginx/html;
          index  index.html index.htm;
          autoindex	on;
        }
      
        #error_page  404              /404.html;
      
        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
          root   /usr/share/nginx/html;
        }
      }
      
      
    • index.html

      <!DOCTYPE html>
      <html>
      <head>
      <title>Welcome to nginx!</title>
      <style>
        body {
          width: 35em;
          margin: 0 auto;
          font-family: Tahoma, Verdana, Arial, sans-serif;
        }
      </style>
      </head>
      <body>
      <h1>Welcome to nginx!</h1>
      </body>
      </html>
      
  3. 启动nginx服务

    $ sudo docker run --name web_nginx_server -d -p 80:80 -p 8080:8080 \
        -v /home/pi/workspace/nginx/log:/var/log/nginx \
        -v /home/pi/workspace/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
        -v /home/pi/workspace/nginx/conf.d:/etc/nginx/conf.d \
        -v /home/pi/workspace/nginx/html:/usr/share/nginx/html nginx