Docker:
先说缺点:
Docker是基于Linux 64bit的,没有window的。
网络管理方面比较简单。
云端的容器安全性有待考证。
容器随着用户进程的停止而销毁,容器中的log等用户数据不便收集。
特点:
轻量级虚拟机,是针对应用程序层次的虚拟机。
做好对应镜像 启动像是按钮一样,随开随关。
可以挂载主机的文件夹。
由于消耗小,利于集群搭建。

安装配置

  1. CentOS7 系统 CentOS-Extras 库中已带 Docker,可以直接安装:
    $ sudo yum install docker
  2. 安装之后启动 Docker 服务,并让它随系统启动自动加载。
    $ sudo service docker start

    $ sudo chkconfig docker on

  3. 配置/etc/sysconfig/docker 添加 (docker pull的时候有可能下载不了其他网站的镜像)
    OPTIONS=’–selinux-enabled –insecure-registry dl.dockerpool.com:5000’
    OPTIONS=’–selinux-enabled –insecure-registry /dockerfile/’

镜像获取
共两种方法 :别人做好的镜像拖下来,再就是用dockerfile文件直接自定义配置镜像。

  1. 镜像:
    命令 : docker pull (从docker官方下载镜像),docker pull 后面添加镜像地址。
    示例:docker pull unbuntu (从docker官网下载)
    docker pull dockerfile/Ubuntu (从dockerfile仓库下载)

  2. 有关docker镜像的操作查看:
    查看镜像: docker images

  3. 镜像更新:
    通过镜像 docker run -i -t mysql /bin/bash 进入shell
    安装软件包:Apt-get update apt-get install openssh-server
    mkdir /var/run/sshd
    passwd
    exit
    此时容器已经关闭。
    镜像更新:
    docker commit 51774a81beb3 mysql:latest 更新原来的镜像 id 是通过docker ps查看。
    再通过运行sshd启动容器
    docker run -d -p 22 -p 3306:3306 mysql /usr/sbin/sshd –D
    查看 docker 查看随机端口 0.0.0.0:32768->22/tcp,
    通过工具连接虚拟机

  4. dockerfile镜像文件:
    比较实用的dockerfile文件下载网站 https://github.com/dockerfile。
    从dockerfile文件来创建镜像方法:
    Wget https://codeload.github.com/dockerfile/ubuntu/zip/master unbuntu镜像
    wget https://codeload.github.com/dockerfile/mysql/zip/master mysql的镜像dockerfile
    通过 dockerfile 创建镜像 docker build -t mysql . (dockerfile 文件位置)
    镜像中的from 改成 FROM dockerfile/Ubuntu
    dockerfile文件解析 详见http://blog.csdn.net/wsscy2004/article/details/25878223

        ```## MySQL Dockerfile## https://github.com/dockerfile/mysql## Pull base image.FROM dockerfile/ubuntu# Install MySQL.RUN \apt-get update && \DEBIAN_FRONTEND=noninteractive apt-get install -y mysql-server && \rm -rf /var/lib/apt/lists/* && \sed -i 's/^\(bind-address\s.*\)/# \1/' /etc/mysql/my.cnf && \sed -i 's/^\(log_error\s.*\)/# \1/' /etc/mysql/my.cnf && \echo "mysqld_safe &" > /tmp/config && \echo "mysqladmin --silent --wait=30 ping || exit 1" >> /tmp/config && \echo "mysql -e 'GRANT ALL PRIVILEGES ON *.* TO \"root\"@\"%\" WITH GRANT OPTION;'" >> /tmp/config && \bash /tmp/config && \rm -f /tmp/config# Define mountable directories.VOLUME ["/etc/mysql", "/var/lib/mysql"]# Define working directory.WORKDIR /data# Define default command.CMD ["mysqld_safe"]# Expose ports.EXPOSE 3306```
    

    这里说一点:Dockerfile 中RUN命令是执行docker build 做镜像跑的命令,CMD命令是docker run 起容器的时候跑的命令

  5. http镜像起容器:
    安装httpd镜像:
    下载 wget https://codeload.github.com/docker-library/httpd/zip/master
    解压 修改 dockerfile文件中的FROM dockerfile/Ubuntu
    在dockerfile目录下运行 docker build -t httpd .
    安装 httpd镜像

    docker run -d -p 80:8080 --name httpd --link mysql10:httpd httpd

容器
容器是从镜像创建的运行实例,相当于aws的实例一样,但容器是一个相当简易的linux环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。当你启动一个容器时,在容器里面ps -ef 就能看到你运行的应用程序进程。

  1. 容器启动
    docker run [参数] 镜像文件
    示例:启一台mysql镜像:
    docker run -d –name mysql -p 3306:3306 mysql:latest (默认root 没密码 )
    -d 后台守护运行 –name 取一个名字 -p 端口映射(主机接受的3306转发到容器的3306)
    如果 docker run的时候最后面接的命令/bin/bash,创建完容器就直接进入到容器里面。但是你exit退出shell的时候这个容器就会停止了。更多的时候,需要让 Docker 容器在后台以守护态(Daemonized)形式运行,就得加上 -d 再加 类型于/usr/sbin/sshd –D这种后台进程。
  2. 容器的查看:
    docker ps 查看正在运行的容器

    id 用来进入 删除 停止。

  3. 容器的停止删除:
    Docker stop id 来停止容器,通过docker ps -a 来查看停止的容器,通过docker rm id 来删除停止容器。
    删除大量停止的docker容器:

        $ docker      rm      $(docker      ps      -a -q)
    
  4. 容器的进入:
    官方容器进入的步骤比较繁琐,可以通过写入shell脚本中来做一个命令。再通过 docker-enter id 来进入容器中。
    vi /usr/bin/docker-enter

    
    #!/bin/shif [ -e $(dirname "$0")/nsenter ]; then# with boot2docker, nsenter is not in the PATH but it is in the same folderNSENTER=$(dirname "$0")/nsenterelseNSENTER=nsenterfiif [ -z "$1" ]; thenecho "Usage: `basename "$0"` CONTAINER [COMMAND [ARG]...]"echo ""echo "Enters the Docker CONTAINER and executes the specified COMMAND."echo "If COMMAND is not specified, runs an interactive shell in CONTAINER."elsePID=$(docker inspect --format "{{.State.Pid}}" "$1")if [ -z "$PID" ]; thenexit 1fishiftOPTS="--target $PID --mount --uts --ipc --net --pid --"if [ -z "$1" ]; then# No command given.# Use su to clear all host environment variables except for TERM,# initialize the environment variables HOME, SHELL, USER, LOGNAME, PATH,# and start a login shell."$NSENTER" $OPTS su - rootelse# Use env to clear all host environment variables."$NSENTER" $OPTS env --ignore-environment -- "$@"fifi

    通过 docker-enter id 来进入容器中

数据卷
数据卷的好处:可以挂在宿主的文件夹当做数据卷,并且可以多容器挂载统一数据卷。
数据卷的使用类似于linux的mount。

  1. 创建数据卷
    在用 docker run 命令的时候,使用 -v 标记来创建一个数据卷并挂载到容器里。在一次 run 中多次使用可以挂载多个数据卷。

    $ sudo docker run -d -P --name web -v /webapp training/webapp python app.py
  2. 挂载主机目录作为数据卷

    $ sudo docker run -d -P --name mysql -v /opt:/opt mysql

容器之间通信

示例:
1,准备 先做好镜像
2,先启动数据库
docker run –name db001 -e MYSQL_ROOT_PASSWORD=admin -d -p 3306:3306 mysql
3,再启动应用类镜像
docker run -d -p 80:8080 –name tomcat001 –link db001:tomysql tutum/tomcat:8.0
–link @1:@2 @1表示要连接的数据库 @2 这个连接的别名

DOCKER笔记(1)相关推荐

  1. Docker笔记:常用服务安装——Nginx、MySql、Redis(转载)

    转载地址:https://www.cnblogs.com/spec-dog/p/11320513.html 开发中经常需要安装一些常用的服务软件,如Nginx.MySql.Redis等,如果按照普通的 ...

  2. Docker笔记——jdk镜像制作

    Docker笔记--jdk镜像制作 openjdk镜像依赖如下: openjdk:8-jdk -> buildpack-deps:jessie-scm -> buildpack-deps: ...

  3. Docker笔记四 发布自制DockerImage 到 Dockerhub

    Docker笔记 四 发布自制DockerImage 到 Dockerhub 1.注册Dockerhub账号 https://hub.docker.com/ 2.制作准备上传的dockerp_w_pi ...

  4. docker 笔记(2) -- 镜像

    docker 笔记(2) -- 镜像 Ubuntu 14.04 无论如何,飞蛾扑火都是一种高贵的姿态. 参考 菜鸟教程 -- docker 额 当使用的镜像文件本地不存在时,则从远程镜像库中下载,默认 ...

  5. Docker笔记三 Docker镜像制作

    Docker笔记三 Docker镜像制作 1.Docker镜像制作方法: docker commit 保存当前container的状态到镜像,生成p_w_picpath. docker build 利 ...

  6. Docker笔记01-发布一个dotnetcore应用

    Docker笔记01-发布一个dotnetcore应用 原文:Docker笔记01-发布一个dotnetcore应用 OS:Widows 10 IDE: VS2017 Docker:Docker De ...

  7. 尚硅谷周阳老师Docker笔记

    链接:https://pan.baidu.com/s/1UZD4vDzGzTK8YM9p37TKew 提取码:gjgj 我的Docker笔记 Docker学习笔记(一)–基础篇 Docker学习笔记( ...

  8. docker 笔记一

    docker 笔记一 docker 官网:https://www.docker.com/ docker概述 docker 出现的原因,解决了什么问题 在我们接触的传统项目开发中,项目或者说产品的一般拥 ...

  9. Docker笔记2 容器及其基本操作

    基础概念 容器是镜像的一个运行时的状态.镜像是静态的只读文件,容器是带有运行时需要的可写文件层,容器中的应用进程处于运行状态. 容器和虚拟机的差别: 容器:独立运行的一组应用以及这组应用所必须的运行环 ...

  10. Docker笔记(四)网络

    本笔记是记录一些学习微信公众号CloudMan的Docker的文章.本篇介绍容器的网络. 网络 Docker 安装时会自动在 host 上创建三个网络,可用 docker network ls 命令查 ...

最新文章

  1. iOS Category小举例
  2. C/Cpp / 如何定义一个只能在堆上(栈上)生成对象的类?
  3. python创建tcp socket_Python Socket如何建立TCP连接
  4. 技术沟通者的自我修养
  5. Apache JMeter (二)性能测试 入门实例
  6. Android中long类型对应Java/Jni/C++中的类型
  7. 在写事件函数的时候function(e)当中的e是什么意思
  8. java时间格式转换
  9. linux native是啥分区,Linux native是什么意思
  10. Statement cancelled due to timeout or client request报错
  11. 公园遛狗 / 小白逛公园【线段树】
  12. 转载——天才与锻炼(华罗庚)
  13. HTS快速交易接口——itpdk_typedef.h中关于ifdef _Windows系统无法识别的问题
  14. java 基础运算_Java 基础 运算符
  15. 这五款牛逼的 IDEA 插件,堪称代码质量检查利器!
  16. 看着很滑稽,但现实又何尝不是这样呢?
  17. CTF术语_ReversePwn(持续更新)
  18. word常见问题_3 批量修改图片大小
  19. 广西投资集团推出“数字广投”,为广西数字化转型打版
  20. 推荐系统 (一): 推荐系统的架构

热门文章

  1. Pytorch 分类模板
  2. Linux 驱动开发 四十三:platform 设备驱动实验(一)
  3. 查找 android 恶意软件,安卓恶意软件分析: 剖析 Hydra Dropper
  4. win7系统错误代码,以及解决的办法集锦
  5. IE访问HTTPS链接下载文件,IE提示无法下载
  6. J_link无法调试
  7. 有限域的构造之常见本原多项式
  8. Writing a Linux Keylogger in C
  9. SOLIDWORKS 2023正版软件安装教程
  10. 张纪中选定潇浪饰新版《西游记》孙悟空