您的位置:首页 > 运维架构 > Docker

docker简介

2019-02-14 14:47 134 查看

Docker简介

Dockers是一个

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

Docker的组成:
  • DockerClient客户端
  • Docker Daemon守护程序
  • Docker Images镜像
  • DockerContainer容器
Docker架构

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

Docker 面向对象
容器 对象
镜像

安装

系统环境:

win10 pro

前提:
开启Hyper-V
注:开启Hyper-V会导致VMware等虚拟机不能运行,不兼容
在windows上运行docker其实是在win的linux子系统上运行

安装Toolbox,下载地址:toolbox下载地址

双击下载的Docker for Windows install安装文件,一路next,点击Finish完成安装。
安装完成通知栏出现 ,表示docker正在运行!
可以在命令行执行docker version来查看版本号,docker run hello-world来载入测试镜像测试。
鉴于国内网络问题,后续拉取

Docker镜像
非常缓慢,我们可以配置加速器来解决,我使用的是网易的镜像地址:
http://hub-mirror.c.163.com

新版的 Docker 使用
/etc/docker/daemon.json
Linux)或者
%programdata%\docker\config\daemon.json
Windows) 来配置 Daemon。
请在该配置文件中加入(没有该文件的话,请先建一个):

{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}

:如果是linux环境,可以输入docker查看是否安装了docker(Ubuntu内核高于3.10才支持docker)
Ubuntu查看内核是否高于3.10:uname -r
获取最新docker安装包:wget -qo- https://get.docker.com/ | sh

Dockers 使用

1. Docker hello world

$ docker run ubuntu:15.10 /bin/echo "Hello world"
Hello world

各个参数解析:

  • docker
    :Docker的二进制执行文件。
  • run
    :与前面的docker组合来运行一个容器
  • ubuntu:15.10
    :指定要运行的镜像,docker首先从本地查找镜像,不存在则从镜像仓库docker hub下载公共镜像。
  • /bin/echo "Hello world"
    :在启动的容器里执行的命令

运行交互式容器

通过docker两个参数-t -i,让docker运行的容器接收输入输出

$ docker run -i -t ubuntu:15.10 /bin/bash
root@dc0050c79503:/#
  • -t
    :在新容器内指定一个伪终端或终端
  • -i
    :允许你对容器内的标准输入(STDIN)进行交互

交互后可直接输入命令查看容器
可以在容器内运行命令

cat /proc/version
ls
分别查看当前系统的版本信息和当前目录下的文件列表
我们可以通过运行
exit
命令或者使用
CTRL+D
来退出容器

启动容器(后台模式)

$ docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"
2b1b7a428627c51ab8810d541d759f072b4fc75487eed05812646b8534a2fe63

-d
:以守护进程方式运行(后台)
这个长字符串叫容器ID,对每个容器来说都是唯一的,我们看他通过容器ID来查看对应的容器发生了什么。

$ docker ps

CONTAINER ID:容器ID
NAMES:自动分配的容器名称
在容器内使用docker logs命令,查看容器内的标准输出

$ docker logs (容器IDor 自动分配的名字)

停止容器

$ docker stop (可选:写ID或name)

请求帮助:

docker(没错,只输入这个单词即可显示help信息)
docker command --help(更深入一些)
docker stats --help
docker容器中运行一个Python Flask应用运行一个WEB应用:
docker pull training/webapp #载入镜像
docker run -d -P(将容器的网络端口映射到主机上) training/webapp python app.py
docker ps(会发现多了端口的信息(docker默认开放了python flask的端口被映射))
docker run -d -p 5000:5000(-p参数可指定) training/webapp python app.py
docker ps(查看端口是否被映射到正确位置)
可单独直接查看端口信息的命令:docker port (ID或名字)
查看WEB应用程序日志:
docker logs -f(类似linux的tail -f) (ID或名字)
查看web应用的进程:
docker top determined_swanson
检查WEB应用程序:docker inspect determined_swanson(会返回一个JSON文件记录着Dokcer容器的配置和状态信息)
停止WEB应用程序:docker stop determined_swanson
重启WEB应用程序:docker start determined_swanson
docker ps -l(查询最后一次创建的容器)
docker restart(对正在运行的程序可重启)
移除WEB应用容器:docker rm determined_swanson(删除容器时,容器必须时停止状态)
查看本地主机上的镜像:docker images
指定15.10的ubuntu运行容器:dockerrun -t -i ubuntu:15.10 /bin/bash
(不指定一个镜像的版本标签的话,默认使用ubuntu:lastest镜像)
其他
获取新的镜像:docker pull ubuntu:13.10
更新镜像(需要创建一个新的容器):docker run -t -i ubuntu:15.10 /bin/bash
在内部:apt-get update   然后:exit
创建容器副本:docker connit -m(提交描述的信息)="hasupdate" -a(指定镜像作者)="runoob" e218edb10161(容器ID) runoob/ubuntu:v2(要创建的目标镜像名)
设置镜像标签:docker tag 860c279d2fec(容器ID)runoob/centos:dev
-P :是容器内部端口随机映射到主机的高端口。
-p : 是容器内部端口绑定到指定的主机端口。

上面的例子中,默认都是绑定

tcp
端口,如果要绑定
UDP
端口,可以在端口后面加上
/udp

当我们创建一个容器的时候,docker会自动对它进行命名。另外,我们也可以使用–name标识来命名容器,例如:
docker run -d -P --name runoob training/webapp python app.py

Docker常用命令大全

博客原文链接

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: