• 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>
    
  • 相关阅读:
    VSCode插件开发全攻略(一)概览
    如何使用JavaScript实现纯前端读取和导出excel文件
    ReactNative学习笔记(七)Navigator的使用
    ReactNative学习笔记(六)集成视频播放
    ReactNative学习笔记(五)踩坑总结
    ReactNative学习笔记(四)热更新和增量更新
    ReactNative学习笔记(三)打包、调试、运行等相关介绍
    ReactNative学习笔记(二)基础进阶
    ReactNative学习笔记(一)环境搭建
    彻底禁用Chrome的“请停用以开发者模式运行的扩展程序”提示
  • 原文地址:https://www.cnblogs.com/coded-ream/p/9157259.html
Copyright © 2020-2023  润新知