docker 学习笔记

docker 简介

docker有两个版本。社区版本(se)和企业版本(ee)。

​ Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

docker架构

Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。Docker 容器通过 Docker 镜像来创建。容器与镜像的关系类似于面向对象编程中的对象与类。

Linux 容器

借助于namespace的隔离机制和cgroup限额功能,LXC提供了一套统一的API和工具来建立和管理container,所以docker需要linux内核的支持。

注意

docker 不是虚拟机,仅仅是一个容器。所以不会有init进程。reboot是没有的, rc 也是不存在的。我们可以理解成轻量级的虚拟机,但是他又不是真正虚拟机。

docker的安装

接下来是记录我安装docker的一些问题以及步骤

ubuntu16.04 上安装docker

官方提供了ubuntu系列机器的自动安装脚本。所以执行他的脚本就好了。脚本地址https://get.docker.com/

所以执行下面命令:

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

或者

$ 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>
原文地址:https://www.cnblogs.com/coded-ream/p/9157259.html