Docker教程
来源:互联网 发布:java逐个读取单词 编辑:程序博客网 时间:2024/05/21 08:37
什么是Docker
&bsp; Docker包括一个命令行程序、一个后台守护进程,以及一组远程服务。它通过Unix的容器技术解器的封装。这个充当容器分发角色的组件被称为镜像。Docker镜像是一个容器中运行程序的所有文件的捆绑快照。
Docker解决的问题
- 组织有序
- 提高了移植性
- 保护你的机器
Docker提供了所谓的抽象,抽象允许你以简化的方式处理复杂的工作。但容器不能改善程序的安全。
何时何处使用Docker
Docker应用范围限定在Linux服务器或桌面运行的软件,如Web服务器、邮件服务器、数据库、代理服务器等。
Docker仓库
完成镜像的传输
- hub.docker.com (速度慢)
- c.163.com (网易蜂巢 镜像中心)
- https://dev.aliyun.com/search.html (阿里镜像仓库)
- 镜像也可以搭建内网的镜像中心
Docker命令
docker search <镜像名字> 搜索可用的docker镜像 docker pull <镜像名字> 下载镜像docker ps 可以查看当前在这台机器上运行的容器 docker ps -a 查看所有镜像信息 docker ps -aq 查看所有镜像的id docker ps -q 查看所有镜像的iddocker run -d <镜像名> 在后台运行容器,并返回容器的id -d是detach的缩写docker run --help 查看docker run的参数docker exec 进入容器内部 docker exec [OPTIONS] CONTAINER COMMAND [ARG...]docker exec -i 保证我们的输入有效docker exec -t 分配一个伪终端docker exec -it f4 两个命令一起运行 由于当前容器运行的镜像非常的少,它就可以通过前两个id判断出是哪个镜像,从而进入这个容器docker exec 镜像的名称或ID 运行的命令docker exec -it f4<名字或id> bash 切换到容器内部docker search <镜像名字> 搜索可用的docker镜像docker exec -ti <镜像id> /bin/bash 进入后台容器并提供bashdocker stop <镜像的id或名字> 停掉当前的镜像docker start <镜像的id或名字> 启动镜像docker restart <镜像的id> 重启docker容器docker rmi <镜像名称> <镜像名称>.. 删除一个或者多个镜像docker rmi -f <镜像名称> -f = --force 强制删除镜像 docker ps -a 查看所有容器(包括stop的容器)docker rm <容器id> 删除指定id的容器docker stop $(docker ps -q) 停用全部运行中的容器docker rm $(docker ps -aq) 删除全部容器docker stop $(docker ps -q) & docker rm $(docker ps -aq) 一条命令实现停用并删除容器
更新镜像
1.更新镜像之前,我们需要使用镜像来创建一个容器。2.在运行的容器中使用 apt-get update 命令进行更新,在完成操作之后输入exit命令退出容器。3.通过docker commit命令来提交容器副本。
docker commit -m="has update" -a="tomato" <镜像id> tomato/ubuntu:v2
各个参数说明: -m:提交的描述信息 -a:指定镜像作者 e218edb10161:容器ID tomato/ubuntu:v2:指定要创建的目标镜像名
Docker的网络
Bridge 桥接<默认情况>端口映射Host 利用主机的IP和端口号None 不与外界通信
构建镜像
- Dockerfile 用来告诉Docker,我制作镜像的每一个步骤
- docker build 执行Dockerfile中所描述的每一件事情
使用命令 docker build,从零开始来创建一个镜像,我们需要创建一个Dockerfile文件,其中包含一组命令来告诉Docker如何构建镜像。首先创建一个空白的文件夹,mkdir myDockerFROM centos:6.7MAINTAINER tomato "XXX@XXX.com"RUN /bin/echo 'root:123456' |chpasswdRUN useradd runoobRUN /bin/echo 'runoob:123456' |chpasswdRUN /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/localEXPOSE 22EXPOSE 80CMD /usr/sbin/sshd -D
每一个指令都会在镜像上创建一个新的层,每一个指令的前缀都必须是大写的。第一条指令FROM,指定使用哪个镜像源RUN指令告诉Docker在镜像内执行命令,安装了什么然后,使用Dockerfile文件,通过docker build命令构建一个镜像。$ docker build -t tomato/centos:6.7 .参数说明:-t:指定创建的目标镜像名.:Dockerfile文件所在目录,可以指定Dockerfile的绝对路径
当构建的时候,用户会指定构建镜像上下文的路径,docker build 命令得知这个路径后,会将路径下的所有内容打包,然后上传给 Docker 引擎。所以命令 docker build -t tomato/centos:6.7 . 中的这个 . ,实际上是在指定上下文的目录, docker build 命令会将该目录下的内容打包交给Docker 引擎以帮助构建镜像。如果观察 docker build 输出,我们其实已经看到了这个发送上下文的过程: $ docker build -t tomato/centos:6.7 . Sending build context to Docker daemon 2.048 kB ...理解构建上下文对于镜像构建是很重要的,避免犯一些不应该的错误。比如将 Dockerfile 放到了硬盘根目录去构建,结果发现 docker build 执行后,在发送一个几十 GB 的东西,极为缓慢而且很容易构建失败。那是因为这种做法是在让 docker build打包整个硬盘,这显然是使用错误。
什么是Docker
Docker包括一个命令行程序、一个后台守护进程,以及一组远程服务。它通过Unix的容器技术解决了常见的软件问题,并简化了安装、运行、发布和删除软件。
容器不是虚拟化,Docker容器不使用硬件虚拟化,Docker容器中的程序接口和主机的Linux内核直接打交道,容器的运行与计算机操作系统之间没有额外的中间层。
Docker通过一种打包和分发的软件,完成传统容器的封装。这个充当容器分发角色的组件被称为镜像。Docker镜像是一个容器中运行程序的所有文件的捆绑快照。
Docker解决的问题
- 组织有序
- 提高了移植性
- 保护你的机器
Docker提供了所谓的抽象,抽象允许你以简化的方式处理复杂的工作。但容器不能改善程序的安全。
何时何处使用Docker
Docker应用范围限定在Linux服务器或桌面运行的软件,如Web服务器、邮件服务器、数据库、代理服务器等。
Docker仓库
完成镜像的传输
- hub.docker.com (速度慢)
- c.163.com (网易蜂巢 镜像中心)
- https://dev.aliyun.com/search.html (阿里镜像仓库)
- 镜像也可以搭建内网的镜像中心
Docker命令
docker search <镜像名字> 搜索可用的docker镜像 docker pull <镜像名字> 下载镜像docker ps 可以查看当前在这台机器上运行的容器 docker ps -a 查看所有镜像信息 docker ps -aq 查看所有镜像的id docker ps -q 查看所有镜像的iddocker run -d <镜像名> 在后台运行容器,并返回容器的id -d是detach的缩写docker run --help 查看docker run的参数docker exec 进入容器内部 docker exec [OPTIONS] CONTAINER COMMAND [ARG...]docker exec -i 保证我们的输入有效docker exec -t 分配一个伪终端docker exec -it f4 两个命令一起运行 由于当前容器运行的镜像非常的少,它就可以通过前两个id判断出是哪个镜像,从而进入这个容器docker exec 镜像的名称或ID 运行的命令docker exec -it f4<名字或id> bash 切换到容器内部docker search <镜像名字> 搜索可用的docker镜像docker exec -ti <镜像id> /bin/bash 进入后台容器并提供bashdocker stop <镜像的id或名字> 停掉当前的镜像docker start <镜像的id或名字> 启动镜像docker restart <镜像的id> 重启docker容器docker rmi <镜像名称> <镜像名称>.. 删除一个或者多个镜像docker rmi -f <镜像名称> -f = --force 强制删除镜像 docker ps -a 查看所有容器(包括stop的容器)docker rm <容器id> 删除指定id的容器docker stop $(docker ps -q) 停用全部运行中的容器docker rm $(docker ps -aq) 删除全部容器docker stop $(docker ps -q) & docker rm $(docker ps -aq) 一条命令实现停用并删除容器
更新镜像
1.更新镜像之前,我们需要使用镜像来创建一个容器。2.在运行的容器中使用 apt-get update 命令进行更新,在完成操作之后输入exit命令退出容器。3.通过docker commit命令来提交容器副本。
docker commit -m="has update" -a="tomato" <镜像id> tomato/ubuntu:v2
各个参数说明: -m:提交的描述信息 -a:指定镜像作者 e218edb10161:容器ID tomato/ubuntu:v2:指定要创建的目标镜像名
Docker的网络
Bridge 桥接<默认情况>端口映射Host 利用主机的IP和端口号None 不与外界通信
构建镜像
- Dockerfile 用来告诉Docker,我制作镜像的每一个步骤
- docker build 执行Dockerfile中所描述的每一件事情
使用命令 docker build,从零开始来创建一个镜像,我们需要创建一个Dockerfile文件,其中包含一组命令来告诉Docker如何构建镜像。首先创建一个空白的文件夹,mkdir myDockerFROM centos:6.7MAINTAINER tomato "XXX@XXX.com"RUN /bin/echo 'root:123456' |chpasswdRUN useradd runoobRUN /bin/echo 'runoob:123456' |chpasswdRUN /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/localEXPOSE 22EXPOSE 80CMD /usr/sbin/sshd -D
每一个指令都会在镜像上创建一个新的层,每一个指令的前缀都必须是大写的。第一条指令FROM,指定使用哪个镜像源RUN指令告诉Docker在镜像内执行命令,安装了什么然后,使用Dockerfile文件,通过docker build命令构建一个镜像。$ docker build -t tomato/centos:6.7 .参数说明:-t:指定创建的目标镜像名.:Dockerfile文件所在目录,可以指定Dockerfile的绝对路径
当构建的时候,用户会指定构建镜像上下文的路径,docker build 命令得知这个路径后,会将路径下的所有内容打包,然后上传给 Docker 引擎。所以命令 docker build -t tomato/centos:6.7 . 中的这个 . ,实际上是在指定上下文的目录, docker build 命令会将该目录下的内容打包交给Docker 引擎以帮助构建镜像。如果观察 docker build 输出,我们其实已经看到了这个发送上下文的过程: $ docker build -t tomato/centos:6.7 . Sending build context to Docker daemon 2.048 kB ...理解构建上下文对于镜像构建是很重要的,避免犯一些不应该的错误。比如将 Dockerfile 放到了硬盘根目录去构建,结果发现 docker build 执行后,在发送一个几十 GB 的东西,极为缓慢而且很容易构建失败。那是因为这种做法是在让 docker build打包整个硬盘,这显然是使用错误。
阅读全文
1 0
- DOCKER教程
- Docker教程
- Docker教程
- Docker教程(一) Docker入门教程
- docker中文 docker手册 docker教程
- docker中文 docker手册 docker教程
- Docker使用基本教程
- Docker简要教程
- docker简单教程
- Docker Swarm学习教程
- Docker Swarm学习教程
- 一小时Docker教程
- Docker简明教程
- Docker Swarm学习教程
- Docker使用教程
- Docker 完整教程
- docker 详细使用教程
- docker安装教程
- 2017年严重拖延着患者欠下的债
- 实现在一组数中找出最大值与最小值
- 后端总结1
- Nginx
- 总有一天你将破蛹而出
- Docker教程
- python基础入门 02
- Nginx安装使用(一)
- 学生信息管理系统4
- 防止DNS污染,顺利下载caffe依赖文件
- CCF认证 201509-1:数列分段
- 调了一天的配置VS2012+opencv2.4.10
- Ubuntu下为python下载python-tk软件包
- intToRoman算法题