镜像是一种轻量级、可执行的独立软件包,它包含运行某个软件所需的所有内容,包括代码、运行时、库、环境变量和配置文件。

容器是镜像的运行时实例 - 实际执行时镜像会在内存中变成什么。默认情况下,它完全独立于主机环境运行,仅在配置为访问主机文件和端口的情况下才执行此操作。

1. 尝试Hello world

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

各个参数解析:

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

以上命令完整的意思可以解释为:Docker 以 ubuntu15.10 镜像创建一个新容器,然后在容器里执行 bin/echo "Hello world",然后输出结果。

2. 运行交互式的容器

$ docker run -i -t ubuntu:15.10 /bin/bash

各个参数解析:

  • -t:在新容器内指定一个伪终端或终端。
  • -i:允许你对容器内的标准输入 (STDIN) 进行交互。

我们可以通过运行exit命令或者使用CTRL+D来退出容器

3. 启动容器(后台模式)

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

这个长字符串叫做容器ID,对每个容器来说都是唯一的

3.2 可以通过 docker ps 查看

CONTAINER ID:容器ID

NAMES:自动分配的容器名称

3.3 可以通过 docker logs id/名称 查看容器内的标准输出

3.4 可以通过 docker stop id/名称 命令来停止容器:

4. 运行一个web应用

$ docker pull training/webapp  # 载入镜像
$ docker run -d -P training/webapp python app.py

我们将在docker容器中运行一个 Python Flask 应用来运行一个web应用。

参数说明:

  • -d:让容器在后台运行。
  • -P:将容器内部使用的网络端口映射到我们使用的主机上。

4.2. 使用 docker ps 来查看我们正在运行的容器:

Docker 开放了 5000 端口(默认 Python Flask 端口)映射到主机端口 32768 上这时我们可以通过浏览器访问WEB应用

–p: 也可以 通过 –p 指定端口

$ docker run -d -p 5000:5000 training/webapp python app.py

docker port id/名称,使用 docker port 可以查看指定 (ID 或者名字)容器的某个确定端口映射到宿主机的端口号。

查看 WEB 应用程序日志可以使用 docker logs -f id/名称

$ docker logs -f bf08b7f2cd89

查看WEB应用程序容器的进程docker top id/名称

检查 WEB 应用程序docker inspect id/名称

停止 WEB 应用容器docker stop id/名称

重启WEB应用容器docker start id/名称

移除WEB应用容器docker rm id/名称

5. 命令及注意点

5.1. 命令

(1) 罗列所有镜像:

docker images

(2)、删除镜像,从本地删除一个已经下载的镜像

docker rmi IMAGE [IMAGE...]
docker rmi centos:latest

(3)创建名为webdemo的docker容器 并进入 webdemo1,命令行:

docker run -it --name webdemo1 -p 81:8080 tomcat /bin/bash

-i:标准输入给容器 -t:分配一个虚拟终端 /bin/bash:执行bash脚本

注意:name前面是两个-, 端口前面有-p, 后面有个tomcat;

(4) 罗列所有的docker容器:包含了启动的Docker和没有启动的容器Docker

docker ps -a;

(5) 启动容器:

docker start webdemo

可能端口会被占用,我们可以先把运行的docker实例停掉,然后再删掉,

docker kill webdemo
 
docker rm webdemo

(6) 停止容器:

docker stop webdemo

(7)拷贝文件

从主机复制到容器 sudo docker cp host_path containerID:container_path

从容器复制到主机 sudo docker cp containerID:container_path host_path

请注意,以上这两个命令都是在主机中执行的,不能再容器中执行

docker cp /root/software/docker.war webdemo:/
docker cp demo:/abc.txt  /root/software/

5.2. Docker进入后台容器

把原来创建的容器ssh关闭了,然后又打开,如何进入已经打开的容器呢,两种方法

a:使用docker attach命令

docker attach db3 或者 docker attach d48b21a7e439

db3是后台容器的NAMES,d48b21a7e439是容器的进程ID  CONTAINER ID

然后就进去了这个容器的ssh界面。

但是它有一个缺点,只要这个连接终止,或者使用了exit命令,容器就会退出后台运行

b:使用docker exec命令

这个命令使用exit命令后,不会退出后台,一般使用这个命令,使用方法如下

docker exec -it db3 /bin/sh 或者 docker exec -it d48b21a7e439 /bin/sh

6. 让容器进入后台运行

Ctrl + P + Q 退出容器保持后台运行(按住ctrl和P 再按Q),再用 docker ps 进行查看:  exit可以直接退出容器

 

进入后台运行的进程:使用docker exec命令

这个命令使用exit命令后,不会退出后台,一般使用这个命令,使用方法如下

docker exec -it name /bin/sh 或者 docker exec -it id /bin/sh

7. 远程仓库

6.1. 注册

进入Docker Hub首先注册一个账号:https://hub.docker.com/注册

6.2. 登录

完成后,我们可以通过命令行在本地绑定对应的Docker Hub账号。

docker login

6.3. 标记镜像

用于将本地镜像与镜像库中的镜像仓库相关联的表示法为 username/repository:tag。tag 是可选项,但建议使用它,因为这是镜像库用于为 Docker 镜像指定版本的机制。现在,将其合并到一起,以标记镜像。此命令的语法为:

docker tag image username/repository:tag

docker tag tomcat a11745/get-started:part1

6.4.发布镜像

将已标记的镜像上传到镜像仓库:

docker push a11745/get-started:part1

完成后,将公开此上传的结果。如果登录 Docker Hub,可以使用其 pull 命令看到新的镜像。

6.5.从远程镜像仓库中拉取并运行镜像

从现在开始,您可以使用 docker run,并且可以使用以下命令在任何机器上运行您的应用:

docker run -it --name webapp2 -p 81:8080 a11745/get-started:part1 /bin/bash

如果镜像在机器本地不可用,Docker 将从镜像仓库中拉取它。

Docker简单使用的更多相关文章

  1. Docker 简单入门

    Docker 简单入门 http://blog.csdn.net/samxx8/article/details/38946737

  2. Docker简单介绍

    Docker简单介绍 Docker是一个能够把开发的应用程序非常方便地部署到容器的开源引擎.由Docker公司团队编写,基于Apache 2.0开源授权协议发行.Docker的主要目的例如以下: 提供 ...

  3. Ubuntu Docker 简单安装 GitLab

    相关博文: Ubuntu 简单安装 Docker Ubuntu 简单安装和配置 GitLab 服务器版本 Ubuntu 16.04 LTS. 1. 安装和配置 安装命令: sudo docker ru ...

  4. docker简单介绍----镜像和容器管理

    docker可以分为三部分:docker镜像   docker仓库  docker容器 docker镜像:一个image可以包含一个镜像,也可以理解为一个系统模板,里面安装了相关应用,也可以是纯净版的 ...

  5. docker简单搭建gitlab

    docker启动非常简单: docker run --detach --hostname 192.168.0.33 --publish 443:443 --publish 80:80 \ --publ ...

  6. docker 简单介绍及基础命令运用

    一.什么是docker? Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源. 简单的来讲Docker实际上就是一个大型容器.容器是完全使用沙箱机制,相互之间不 ...

  7. docker简单入门之使用docker容器部署简单的java web开源项目jpress博客程序

    一.在centos7.3上安装docker 前置条件 x86_64-bit 系统 kernel 3.10+ .检查内核版本,返回的值大于3.10即可 [root@node1 ~]# uname -r ...

  8. docker 简单入门(一)

    本篇目录 写在最前面的话 docker概念介绍 镜像的概念.容器的概念 docker的安装介绍 写在最前面的话 大家好,首先跟大家说声对不起,我班门弄斧了,我本身是做系统开发,使用的语言是C#和JAV ...

  9. Docker简单说明

    前段时间工作需要,简单的研究了下docker.侧重点放在docker的镜像定制方面,后续会研究下k8s的使用. Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的.可移植的.自给自足的 ...

  10. Docker 简单应用

    Docker 允许你在容器内运行应用程序, 使用 docker run 命令来在容器内运行一个应用程序. 输出Hello world runoob@runoob:~$ docker run ubunt ...

随机推荐

  1. python 使用多线程进行并发编程/互斥锁的使用

    import threading import time """ python的thread模块是比较底层的模块,python的threading模块是对thread做了 ...

  2. webpack打包工具

    目的:平时小项目中例如一些网站需要进行打包压缩,用这个工具可以进行打包压缩,就可以上传到服务器. 使用方法: 1,引进需要打包的项目,把入口html替换掉项目中的index.html,把引进的js,c ...

  3. python tricks

    1. cities = ['Marseille', 'Amsterdam', 'New York', 'Londom'] # the good way for i, city in enumerate ...

  4. static加载顺序简介

    1.先执行父类的静态代码块和静态变量初始化,并且静态代码块和静态变量的执行顺序只跟代码中出现的顺序有关. 2.执行子类的静态代码块和静态变量初始化. 3.执行父类的实例变量初始化 4.执行父类的构造函 ...

  5. 阿里P9架构师讲解从单机至亿级流量大型网站系统架构的演进过程

    阶段一.单机构建网站 网站的初期,我们经常会在单机上跑我们所有的程序和软件.此时我们使用一个容器,如tomcat.jetty.jboos,然后直接使用JSP/servlet技术,或者使用一些开源的框架 ...

  6. 如何从GitHub仓库clone项目

    自己也已经多次接触了git了,但是因为工作用svn,自己平时也很少用git,所以每次都是用的时候可能还可以,等过一段时间再来用的时候,就又忘得差不多了,所以索性自己写个博客,自己记得自己也好懂,而且熟 ...

  7. kafka+elk

    安装elasticsearch 下载:http://www.elastic.co/downloads/elasticsearch 下载后解压 修改配置文件,xxx是自定义目录 vi elasticse ...

  8. 从零开始学 Web 之 jQuery(二)获取和操作元素的属性

    大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...

  9. 如何在Lua与C/C++之间实现table数据的交换

    之前在<C/C++和Lua是如何进行通信的?>一文中简单的介绍了lua与宿主之间的通信.简单的说两种不同的语言之间数据类型不一样又如何进行数据交换呢?那就是lua_State虚拟栈,通过栈 ...

  10. 2017年最新20个轻量的 JavaScript 库和插件

    下面这个列表中的免费 JavaScript 插件都是今年发布的,没有臃肿的一体化的框架,它们提供轻量级的解决方案,帮助 Web 开发过程更容易和更快.提供的插件可以创建滑块.响应式菜单.模态窗口.相册 ...