Docker学习笔记

一、Ubuntu Docker 安装

(1)、获取最新版本Docker安装包

lyn@lyn:/data/docker$ sudo wget -qO- https://get.docker.com/ | sh

当要以非root用户可以直接运行docker时,需要执行 sudo usermod -aG docker lyn 命令,然后重新登陆

(2)、启动docker 后台服务

lyn@lyn:~$ sudo service docker start

二、 Docker 容器使用(运行一个web应用)

(1)、我们将在docker容器中运行一个 Python Flask 应用来运行一个web应用

sudo docker run -d -P training/webapp python app.py

参数说明:

-d:让容器在后台运行。

-P:将容器内部使用的网络端口映射到我们使用的主机上。

(2)、查看 WEB 应用容器

docker ps -a

默认Docker开放了5000端口 映射到主机端口32768上,可以通过-p绑定指定端口;

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

3、登录到容器

sudo docker logs -f 容器ID/容器名称

4、查看运行结果

在浏览器中输入: 	IP地址:5000

5、查看容器内部运行的进程

sudo docker top 容器ID/容器名称

6、检查WEB应用程序

使用 docker inspect 来查看Docker的底层信息。它会返回一个 JSON 文件记录着 Docker 容器的配置和状态信息。

docker inspect 容器ID/容器名称

7、停止WEB应用容器

docker stop 容器ID/容器名称

8、重启WEB应用容器

docker start 容器ID/容器名称   (对已经停止的容器)

正在运行的容器,我们可以使用 docker restart 命令来重启

9、移除WEB应用容器(删除不需要的容器,删除容器时,容器必须是停止状态)

docker rmi 容器ID/容器名称

三、Docker 镜像使用

当运行容器时,使用的镜像如果在本地中不存在,docker 就会自动从 docker 镜像仓库中下载,默认是从 Docker Hub 公共镜像源下载。

1、列出镜像列表

docker images

同一仓库源可以有多个 TAG,代表这个仓库源的不同个版本,如ubuntu仓库源里,有15.10、14.04等多个不同的版本,我们使用 REPOSTITORY:TAG 来定义不同的镜像。所以,我们如果要使用版本为15.10的ubuntu系统镜像来运行容器时,命令如下:

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

2、获取一个新的镜像

docker pull ubuntu:13.10

3、查找镜像

docker search 名称(ubuntu)

我们也可以从 Docker Hub 网站来搜索镜像,Docker Hub 网址为: https://hub.docker.com/

4、创建镜像

当我们从docker镜像仓库中下载的镜像不能满足我们的需求时,我们可以通过以下两种方式对镜像进行更改。

(1).从已经创建的容器中更新镜像,并且提交这个镜像

(2).使用 Dockerfile 指令来创建一个新的镜像

(1)更新镜像

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

在运行的容器内使用 apt-get update 命令进行更新。

在完成操作之后,输入 exit命令来退出这个容器。

我们可以通过命令 docker commit来提交容器副本

docker commit -m="has update" -a "geek_lyn" fb271472d680 geek_lyn/ubuntu:v2

各个参数说明:

-m:提交的描述信息

-a:指定镜像作者

e218edb10161:容器ID

runoob/ubuntu:v2:指定要创建的目标镜像名

我们采用新镜像来启动一个容器:

docker run -t -i geek_lyn/ubuntu:v2 /bin/bash

(2)构建镜像

我们使用命令 docker build , 从零开始来创建一个新的镜像。为此,我们需要创建一个 Dockerfile 文件,其中包含一组指令来告诉 Docker 如何构建我们的镜像。

runoob@runoob:~$ sudo vi Dockerfile

`FROM centos:6.7

MAINTAINER Fisher "fisher@sudops.com"

RUN /bin/echo 'root:123456' |chpasswd

RUN useradd runoob

RUN /bin/echo 'runoob:123456' |chpasswd

RUN /bin/echo -e "LANG="en_US.UTF-8"" > /etc/default/local

EXPOSE 22

EXPOSE 80

CMD /usr/sbin/sshd -D`

每一个指令都会在镜像上创建一个新的层,每一个指令的前缀都必须是大写的。

第一条FROM,指定使用哪个镜像源

RUN 指令告诉docker 在镜像内执行命令,安装了什么。。

sudo docker build -t runoob/centos:6.7 .

参数说明:

-t :指定要创建的目标镜像名

. :Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径

通过docker images查看新建的镜像;

5、设置镜像标签

我们可以使用 docker tag 命令,为镜像添加一个新的标签。dev镜像名;

sudo docker tag 860c279d2fec runoob/centos:dev

6、删除镜像

sudo docker rmi 镜像名

如无法删除,通过docker ps -a命令查看所有容器;正确的做法应该是先删除依赖该镜像的所有容器

sudo docker rm 636151e7941b,先移除容器,然后再删除镜像。

docker rmi $(docker images --filter dangling=true -q) 执行这条命令删除pull过程或者create过程产生的临时镜像,剩下的都是有用的镜像。镜像是一层层叠加起来的,你使用的是带名字和tag的发布镜像,那些中间镜像没有名字,只有哈希,所以叫none。

杀死所有正在运行的容器

docker kill $(docker ps -a -q)

删除所有已经停止的容器

docker rm $(docker ps -a -q)

删除所有未打 dangling 标签的镜像

docker rmi $(docker images -q -f dangling=true)

删除所有镜像

docker rmi $(docker images -q)

为这些命令创建别名

# ~/.bash_aliases

# 杀死所有正在运行的容器.

alias dockerkill='docker kill $(docker ps -a -q)'

# 删除所有已经停止的容器.

alias dockercleanc='docker rm $(docker ps -a -q)'

# 删除所有未打标签的镜像.

alias dockercleani='docker rmi $(docker images -q -f dangling=true)'

# 删除所有已经停止的容器和未打标签的镜像.

alias dockerclean='dockercleanc || true && dockercleani'

Docker 安装部署的更多相关文章

  1. 使用docker安装部署Spark集群来训练CNN(含Python实例)

    使用docker安装部署Spark集群来训练CNN(含Python实例) http://blog.csdn.net/cyh_24/article/details/49683221 实验室有4台神服务器 ...

  2. Docker安装部署es集群

    Docker安装部署es集群:环境准备:已安装docker的centos服务器一台1. 拉取es版本docker pull elasticsearch:5.6.82. 新建文件夹 数据挂载目录 和 配 ...

  3. docker安装部署、fastDFS文件服务器搭建与springboot项目接口

    一.docker安装部署 1.更新yum包:sudo yum update 2.安装需要的软件包,yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动 ...

  4. Docker安装部署Rancher

    # 一.Rancher简介 [Rancher](https://www.cnrancher.com/rancher/)是一个开源的企业级容器管理平台.通过Rancher,企业再也不必自己使用一系列的开 ...

  5. Docker安装部署redis

    借鉴博客:https://my.oschina.net/u/3489495/blog/1825335 待续... >>>>>>>>>docker安 ...

  6. CentOS 7 Docker安装部署Go Web

    Docker 是一种容器技术,它部署简单,能很好的进行服务隔离,生成镜像,Push到镜像仓库,其他机器一键拉取部署. Docker分为社区版CE和企业版EE,社区版是免费提供给个人和小型团队使用,企业 ...

  7. docker安装部署neo4j

    docker部署neo4j 环境:ubuntu16.04LTS docker安装 详见:菜鸟教程(docker安装) docker国内镜像源配置 第一步,进入阿里云,登陆后点击左侧的镜像加速,生成自己 ...

  8. 002.Docker安装部署

    一 docker安装-CentOS系统 1.1 docker自动安装脚本 root@docker:~# wget -qO- https://get.docker.com/ | sh 或—— root@ ...

  9. win10 docker 安装部署

    Docker 安装教程: https://blog.csdn.net/hunan961/article/details/79484098 安装docker前需要首先开启虚拟服务:重启电脑-->F ...

随机推荐

  1. 【原】iOS学习之XMPP环境搭建

    XMPP环境搭建 1> 搭建XMPP环境需要几个辅助工具: Java Openfire 采用Java开发,因此我们需要先安装Java环境 XAMPP XAMPP(Apache+MySQL+PHP ...

  2. Android 蓝牙4.0 BLE

    Android ble (Bluetooth Low Energy) 蓝牙4.0,也就是说API level >= 18,且支持蓝牙4.0的手机才可以使用. BLE是蓝牙4.0的核心Profil ...

  3. HDU 4749 Parade Show(贪心+kmp)

    题目链接 题目都看不懂,做毛线...看懂了之后就是kmp出,所有的匹配区间,然后DP可以写,贪心也可以做把,DP应该需要优化一下,直接贪,也应该对的,经典贪心问题. #include<iostr ...

  4. ubuntn 安装 MySQL

    1. sudo apt-get install mysql-server   2. apt-get isntall mysql-client   3.  sudo apt-get install li ...

  5. thinkphp 的save()不能更新数据解决办法

    用save()方法始终更新不了数据,又不显示明确的错误信息,找了好久才在手册里看到一句至关重要的话: 为了保证数据库的安全,避免出错更新整个数据表,如果没有任何更新条件,数据对象本身也不包含主键字段的 ...

  6. JSP + AJAX完整实例及代码

    (1)发送请求index.jsp,注意引入jquery.min.js文件 <%@ page language="java" contentType="text/ht ...

  7. java抽象类和接口的区别

    抽象类特点:1.抽象类中可以构造方法2.抽象类中可以存在普通属性,方法,静态属性和方法.3.抽象类中可以存在抽象方法.4.如果一个类中有一个抽象方法,那么当前类一定是抽象类:抽象类中不一定有抽象方法. ...

  8. UIDynamic(物理仿真)

    简介 什么是UIDynamic UIDynamic是从iOS 7开始引入的一种新技术,隶属于UIKit框架 可以认为是一种物理引擎,能模拟和仿真现实生活中的物理现象 如: 重力.弹性碰撞等现象 物理引 ...

  9. 20145337《Java程序设计》第三周学习总结

    20145337 <Java程序设计>第三周学习总结 教材学习内容总结 类与对象 类与对象的关系:要产生对象必须先定义类,类是对象的设计图,对象是类的实例.我觉得在视频中对类与对象关系的描 ...

  10. 西部数据出现“WD SES Device USB Device”怎么办,而且说明书全是英文。

    您好.wd ses device driver这个驱动程序可以在baidu中输入关键词找到,什么驱动之家.驱动人生之类的专业驱动网站也都是有的. western digital的移动硬盘驱动程序安装步 ...