zoukankan      html  css  js  c++  java
  • docker 技术全面整理

    docker 和 vm 虚拟机技术比较像,但又有一些区别。

    vm 像真机一样有 BIOS ,有硬盘,有网卡,声卡,可以安装操作系统, win7 win10 macOS ubuntu centOS,有好用方便的快照功能,隔离性较强,vm 蹦溃不影响宿主,软件发布时间长,支持众多宿主操作系统,XP WIN7 centOS 6。

    vm 缺点也是上面的问题,需要自行安装 操作系统,软件,启动慢,大概需要1分钟,高配电脑,也需要有半分钟。

    docker 可以很方便的拉取 image 运行,省去了自行安装操作系统和软件的过程。还可以很方便的进行配置或删除。随便安装ubuntu 14 16 18 仅需要下载 image 就行了。启动快速,秒开。

    docker 缺点是不支持 windows mac OS 这种非 linux 的操作系统,软件这几年刚有,仅支持 CentOS 6.8 7 或更高版本,kernel 要求 3.1 以上,仅支持 win10,还是用虚拟机实现。

    基本使用

    1, 先去 https://www.docker.com/ 注册一个帐户 因为有的 image 需要登录用户才能拉取

    2, 安装 docker 在 ubuntu 18  

    sudo apt-get install docker.io
    sudo docker info

    3, 添加 docker 用户,这样以后就不必每次都打 sudo 

    sudo groupadd docker     #添加docker用户组
    sudo gpasswd -a $USER docker     #将登陆用户加入到docker用户组中
    newgrp docker     #更新用户组
    docker ps    #测试docker命令是否可以使用sudo正常使用

    4,启用systemctl

    sudo systemctl enable docker
    sudo systemctl start docker

    5, 拉取 nginx 并运行

    docker pull nginx
    docker run --name "nginx" -p 80:80 -d nginx

      #传入 html 路径 交互模式 退出自动删除容器
      docker run --rm -it -p 8000:80 -v $PWD/html:/usr/share/nginx/html nginx

    6, 修改docker 保存的位置, 用软链比较简单。

    sudo mv /var/lib/docker /opt/data/
    sudo ln -s /opt/data/docker/ /var/lib/docker

    7, 其它的命令

    搜索 image
    docker search nginx

    查看容器运行状态
    docker ps -a 

    查看所有镜像
    sudo docker images

    仅显示容器ID
    sudo docker ps -aq

    停止所有容器
    sudo docker stop $(sudo docker ps -aq)

    删除所有容器
    sudo docker rm $(sudo docker ps -aq)

    进入容器
    sudo docker exec -it f66627b76918 /bin/bash

    复制容器配置文件
    docker cp f66627b76918:/etc/nginx/ .

    run 详细参数
    https://docs.docker.com/engine/reference/commandline/run/#options
    --detach , -d Run container in background and print container ID
    --rm Automatically remove the container when it exits
    --interactive , -i Keep STDIN open even if not attached
    --tty , -t Allocate a pseudo-TTY

    如何打包制作镜像 image 

    Dockerfile  

    ENV PORT 8000 #设置变量,可以通过 -e 指定
    RUN apt-get update && apt-get install -y ssh && rm -rf /var/lib/apt/lists/* # 执行普通的命令
    RUN sed -i 's/# StrictHostKeyChecking ask/StrictHostKeyChecking no/' /etc/ssh/ssh_config #通过 sed 流文本编译器来修改文件,经常使用
    COPY run.sh /run.sh #复制文件到镜像中 另一个常用的是 ADD 可以从网络读取下载到镜像
    EXPOSE 80 #声明发布的端口 这里是 web 的 80
    CMD ["/run.sh"] #自动启动时执行的自定义命令  -d 的时候

    开始构建
    docker build -t ubuntu-nginx .

  • 相关阅读:
    MVC中使用jquery的浏览器缓存问题
    3 工厂方法模式
    2 简单工厂模式
    1 单例模式
    Sqlserver With as
    Memcache的使用
    mysql的分区和分表
    MySQL主从复制与读写分离
    SqlServer 表分区
    SqlServer 2012 AlwaysOn
  • 原文地址:https://www.cnblogs.com/ningci/p/10050879.html
Copyright © 2011-2022 走看看