什么是Docker?

作者: AnnaJIAN | 来源:发表于2018-11-19 23:51 被阅读18次

    什么是Docker?

    Docker 是基于Go语言实现的开源容器项目。利用操作系统本身已有的机制和特性,可以实现远超传统虚拟机的轻量级虚拟化。它是内核级的虚拟化。期望达到使项目运行环境“一次封装,到处运行的目的”。

    利用docker创建的运行环境叫做docker容器,容器是通过docker镜像创建的,docker镜像文件可以放在私有仓库中也可以放在共有仓库中。最大的公有仓库是官方Docker Hub

    Docker怎么用?

    安装docker

    安装对应版本的docker之后,就可以使用docker了.官方安装
    需要说明的是Docker的核心底层技术是LXC(Linux Container),win/mac中安装的都是客户端,还是要借助vm中的linux虚拟机才能工作。
    通过阿里云镜像加速器安装

    对于10.10.3以下的用户 推荐使用Docker Toolbox
    Mac安装文件:[http://mirrors.aliyun.com/docker-toolbox/mac/docker-toolbox/](http://mirrors.aliyun.com/docker-toolbox/mac/docker-toolbox/)
    
    对于10.10.3以上的用户 推荐使用Docker for Mac
    Mac安装文件:[http://mirrors.aliyun.com/docker-toolbox/mac/docker-for-mac/](http://mirrors.aliyun.com/docker-toolbox/mac/docker-for-mac/?spm=5176.8351553.0.0.6eaf1991mMotLl)
    
    对于Windows 10以下的用户,推荐使用Docker Toolbox
    Windows安装文件:[http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/](http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/)
    
    对于Windows 10以上的用户 推荐使用Docker for Windows
    Windows安装文件:[http://mirrors.aliyun.com/docker-toolbox/windows/docker-for-windows/](http://mirrors.aliyun.com/docker-toolbox/windows/docker-for-windows/)
    
    

    开始使用docker

    查看当前版本

    docker version
    

    查看本地所有镜像文件

    docker images
    

    获取云中ubuntu18的镜像

    docker pull ubuntu:18.04
    

    创建一个ubuntu18的容器,并且运行容器。-i 表示标准模式;-t 表示是否分配一个伪终端,默认false; -rm 表示容器退出后是否自动删除,默认为false;

    docker run -it -rm ubuntu:18.04
    

    启动一个nginx容器命名为local_nginx,并且映射到80端口。在浏览器中0.0.0.0:80可以访问nginx。-d 表示后台运行,-p 表示端口映射 hostport:containerport;--name 表示容器名字。

    docker run -d -p 80:80 --name local_nginx nginx
    

    查看运行的容器

    docker ps
    
    其他各种常用命令

    docker tag xxx tagname 镜像文件加标签;
    docker search xxx 查找官方镜像;
    docker rmi xxxID/xxxname 删除镜像文件;
    docker rm xxx 删除容器;
    docker push xxx;上传镜像;
    docker import xxx 导入镜像;
    docker stop xxx 终止容器;
    docker pause xxx 暂停容器;
    docker unpause xxx 恢复容器;
    docker kill xxx 强制杀死容器;
    docker attach xxxID/xxxname 进入后台运行的容器;
    docker container inspect xxx 查看一个容器;
    docker top xxx 查看容器内进程;
    docker stat xxx 查看容器内cup使用情况;
    docker container port test 查看容器端口;
    docker commit origin_container_id new_image 执行一些新的操作后添加容器到另外一个镜像/保存版本号
    等等

    对docker 数据卷的管理

    数据卷指容器与主机的共享/映射目录
    默认是 /var/lib/docker/volumes,也可指定路径
    创建一个容器ubuntu命名为dbdata,放在数据卷dbdata里面

    docker run -it -v /dbdata --name dbdata ubuntu
    

    通过镜像training/webapp创建一个后台运行的容器命名为web,并在其中运行python app.py。自动分配端口号,把容器中webapp映射到主机/opt/webapp 位置。

    docker run -d -P --name web --mount type=bind,source=/webapp,destination=/opt/webapp training/webapp python app.py
    
    容器互联

    创建一个新的容器web,让其和容器namedb互联,namedb是由ubuntu镜像生成的,在里面运行了bash bash.sh,两个容器中安装了ssh,就可以互相登录了

    docker run -d -P --name web --link namedb:aliasdb ubuntu bash bash.sh
    
    用dockerfile创建容器

    复杂的能运行开发环境的容器通常是用dockerfile生成的。
    一个简单的dockerfile

    #设置继承镜像
    FROM ubuntu:18.04
    #安装ssh
    RUN apt-get install -y openssh-server
    RUN mkdir -p /var/run/sshd
    RUN mkdir -p /root/.ssh
    
    ADD authorized_keys /root/.ssh/authorized_keys
    ADD run.sh /run.sh
    RUN chmod 755 /run.sh
    
    #开放端口
    EXPOSE 22
    
    #设置自启动命令
    CMD ["run.sh"]
    

    在dockerfile 所在目录 build 一个image文件

    docker build -t my-lamp-image
    

    通过镜像文件创建一个容器

    docker run -p 8080:80 --name my-lamp my-lamp-image
    

    docker machine

    docker machine可以高效的管理多个主机集群
    docker-machine create --driver xxx args1 args2 instance 创建一个主机
    docker-machine ls 查看所有主机
    docker-machine ip instance 查看某个主机的ip
    docker-machine stop instance 停止某个主机的ip
    docker-machine kill instance 杀死某个主机的ip

    docker compose

    通过模板文件docker-compose.yml部署复杂环境
    docker-compose build
    docker-compose up
    docker-compose down

    docker swarm

    进入swarm模式集群管理平台
    docker swarm init xxx --advertise-addr ip 初始化一个集群
    docker swarm join --token xxx ip:port 加入一个集群
    docker node ls

    Docker和Vagrant有什么区别?

    查看什么是Vagrant

    Docker 相关资源

    一小时Docker

    Docker 菜鸟教程

    相关文章

      网友评论

        本文标题:什么是Docker?

        本文链接:https://www.haomeiwen.com/subject/sbgafqtx.html