docker 學習筆記

docker 簡介

docker有兩個版本。社區版本(se)和企業版本(ee)。php

​ Docker 是一個開源的應用容器引擎,讓開發者能夠打包他們的應用以及依賴包到一個可移植的容器中,而後發佈到任何流行的 Linux 機器上,也能夠實現虛擬化。容器是徹底使用沙箱機制,相互之間不會有任何接口。html

docker架構

Docker 使用客戶端-服務器 (C/S) 架構模式,使用遠程API來管理和建立Docker容器。Docker 容器經過 Docker 鏡像來建立。容器與鏡像的關係相似於面向對象編程中的對象與類。mysql

Linux 容器

藉助於namespace的隔離機制和cgroup限額功能,LXC提供了一套統一的API和工具來創建和管理container,因此docker須要linux內核的支持。linux

注意

docker 不是虛擬機,僅僅是一個容器。因此不會有init進程。reboot是沒有的, rc 也是不存在的。咱們能夠理解成輕量級的虛擬機,可是他又不是真正虛擬機。web

docker的安裝

接下來是記錄我安裝docker的一些問題以及步驟sql

ubuntu16.04 上安裝docker

官方提供了ubuntu系列機器的自動安裝腳本。因此執行他的腳本就行了。腳本地址https://get.docker.com/docker

因此執行下面命令:shell

$ wget -qO- https://get.docker.com/ | sh

或者apache

$ curl https://get.docker.com/ | sh

認識 docker

一些docker的名次解釋一下編程

鏡像(image)

iso稱爲鏡像。同一個東西。

容器(container)

使用鏡像建立的一個運行環境。相似於虛擬機的建立好的一臺虛擬機環境。

問題集合

使用中遇到的一些問題。記錄了下來。

docker啓動執行腳本

等待補充

不是root用戶使用docker命令如何不加sudo

不是root用戶自行docker的一些命令會報一些錯誤。必須加sudo權限。避免每次都加sudo。

下面是解決辦法:

  • 若是尚未 docker group 就添加一個:
$ sudo groupadd docker
  • 將用戶加入該 group 內。而後退出並從新登陸就生效啦。
$ sudo gpasswd -a ${USER} docker
  • 重啓 docker 服務
$ sudo service docker restart

而後就是從新進入命令行,由於有緩存。因此須要從新進入。

命令解釋

下面對命令進行一些解釋,或者說是翻譯。

docker --help
--config string //後面跟上配置文件路徑 ,默認是 /root/.docker

經常使用命令

docker run

運行一個全新的容器。

  • -t:在新容器內指定一個僞終端或終端。
  • -i:容許你對容器內的標準輸入 (STDIN) 進行交互。
  • __-d__表示後臺運行
  • -p 表示進行物理機和docker的端口映射 本機端口:容器的端口 。而且容許多映射。

docker pull [iamge]

將hub.docker.com上已有的鏡像下載到docker裏面。

能夠經過 docker search [keywpord] 來進行查找

docker ps

這個命令是查看正在運行的容器。

-a 參數,列出全部的容器

docker container start [container ID]

啓動容器的命令

參數說明

-i 交互式界面

Docker 容器鏡像刪除

1.中止全部的container,這樣纔可以刪除其中的images:

docker stop $(docker ps -a -q)

若是想要刪除全部container的話再加一個指令:

docker rm $(docker ps -a -q)

2.查看當前有些什麼images

docker images

3.刪除images,經過image的id來指定刪除誰

docker rmi <image id>

想要刪除untagged images,也就是那些id爲 的image的話能夠用

docker rmi $(docker images | grep "^<none>" | awk "{print $3}")

要刪除所有image的話

docker rmi $(docker images -q)

docker 部署web服務

下載ubuntu16.04的鏡像

$ docker pull  ubuntu:16.04

建立一個新的容器

將本機8080端口映射到容器的80端口

$ docker run -i -t -p 8080:80 ubuntu:16.04 /bin/bash

安裝lamp環境

$ apt-get update
$ apt-get install apache2 php7.0 mysql-server libapache2-mod-php7.0

宿主機 apache 反向代理配置

目的是爲了都使用80 端口,參考資料

步驟:

  • 加載apache模塊,使用a2enmod命令加載模塊
$ a2enmod proxy proxy_balancer proxy_http

注意: a2enmod 是添加模塊 a2dismod 是刪除模塊

  • 修改配置文件 /etc/apache2/sites-enabled/000-default.conf
<VirtualHost *:80>
        #配置站點的域名
        ServerName xxx.com
        #配置站點的管理員信息
        ServerAdmin xxx@gmail.com

        #off表示開啓反向代理,on表示開啓正向代理
        ProxyRequests Off
        ProxyMaxForwards 100
        ProxyPreserveHost On
        #這裏表示要將如今這個虛擬主機跳轉到本機的4000端口
        ProxyPass / http://127.0.0.1:4000/
        ProxyPassReverse / http://127.0.0.1:4000/

        <Proxy *>
            Order Deny,Allow
            Allow from all
        </Proxy>
</VirtualHost>
相關文章
相關標籤/搜索