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>
相关文章
相关标签/搜索