Docker学习笔记

Docker

  • 掌握Docker基础知识,理解Docker镜像与容器的概念
  • 完成Docker安装与启动
  • 掌握Docker镜像与容器相关命令
  • 掌握Tomcat,Nginx等软件的常用应用的安装
  • 掌握Docker备份与迁移相关命令
  • 能够运用Docker编写与创建容器的脚本
  • 能够搭建与使用Docker私有仓库

1. Docker简介

1.1 什么是虚拟化

在计算机中,虚拟化(英文:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器,网络,内在及存储等,给予抽象,转换后呈现出来,打破实体结构间的不可切割的障碍,使用用户可以比原本的组织形态更好的方式来应用这些资源,这些资源的虚拟部分是不爱现有资源的架设方式,地域或物理组织形态所限制,一般所指的虚拟化资源包括计算机和存储。

1.2 什么是Docker

Docker是一个开源项目,诞生于2013年初,最初是dotCloud公司内部的一个业余项目,它基于Google公司推出的Go语言实现,项目后来加入到Linux基金会,遵从Apache2.0协议开源,项目代码在GitHub上进行维护。
Docker自开源后,受到广泛的关注和讨论,以至于与dotCloud公司后来都改名为Docker Inc,Redhat已经在其REL6.5中集中支持Docker,Google也在其Pass产品中广泛应用 。
Docker项目的目标是实现轻量级的操作系统虚拟化解决方案,Docker的基础是Linux(LXC)等技术。
在LXC基础上Docker进行了进一步的封装,让用户不需要去关心容器的原理,使得操作更为简便,用户操作Docker的容器就像操作一个快速轻量级的虚拟机一样简单。

为什么选择Docker?

  • 上手快
  • 职责的逻辑分类明确
  • 快速高效的开发生命周期
  • 鼓励使用面向服务的架构

1.3 Docker常用组件

  • Docker服务器与客户端

Docker是一个客户端/服务器(C/S)架构程序,Docker客户端只需要向服务器或者守护进程发出请求,服务器或守护进程将完成所有的工作并返回结题,Docker提供了一个命令行工具Docker以及一整套RESTful api,可以在同一台宿主机上运行Docker守护进程和客户端,也可以从本地的Docker客户端连接到运行在另一台宿主机上的远程Docker守护进程。

  • Docker镜像

镜像是构建Docker的基石,用户基于镜像来运行自己的容器,镜像是Docker生命周期中的构建部分,镜像是基于联合文件系统的一种层级结构,由一系列指令一步一步构建出来,例如:添加一个文件,执行一条命令,打开一个窗口。

  • Docker容器

容器是基于镜像启动起来的,容器中可以运行一个或多个进程,我们可以认为,镜像是Docker生命周期中的或打包阶段,而容器则是启动或执行阶段,容器基于镜像启动,一旦容器启动完成后,就可以登录到容器中安装自己所需要的软件或服务。
Docker容器就是

  • 一个镜像格式
  • 一系列标准操作
  • 一个执行环境
  • Register

Docker用Register来保存用户构建的镜像,Register分为公共与私有,Docker公司运营公共的Register叫做Docker Hub,用户可以在Docker Hub注册账号,分享并保存自己的镜像(DockerHub下载过慢,可以自己构建私有的Register)

2. Docker安装与启动

2.1 Docker安装

Docker官方建议在Ubuntu中安装, 因为Docker基于Ubutun发布,一般Docker出问题Ubutun是最先更新或打补丁的

  • yum 包更新依赖

sodu yum update

  • 安装需要的软件包

sudo yum install -y yum-utils device-manager-persistent-data lvm2

  • Docker安装

sudo yum install docker-re

  • 安装后检查Docker版本

docker -v


image.png

2.2 Docker启动与停止

systemctl命令是系统服务的管理器指令

  • 启动Docker

systemctl start docker

  • 停止Docker

systemctl stop docker

  • 重启Docker

systemctl restart docker

  • 查看Docker状态

systemctl status docker

3. 镜像常用命令

3.1 镜像相关命令

查看镜像

docker images

参数介绍

REPOSITORY: 镜像名称
TAG: 镜像标签(pull镜像时需要添加)
IMAGE ID: 镜像ID(唯一)
CREATED: 镜像的创建时间(不是获取镜像日期)
SIZE: 镜像大小
镜像都是存储在Docker宿主机/var/lib/docker目录下

3.2 搜索镜像

如果你需要从网络中查找需要的镜像,可以通过以下命令搜索

docker search 镜像名称

参数介绍

NAME:仓库名称

3.3 拉取镜像

拉取镜像是从中央仓库中下载镜像到本地

docker pull 镜像名称

例如:下载centos7镜像

docker pull centos:7

3.4 删除镜像

按镜像ID删除镜像

docker rmi 镜像ID

删除所有镜像

docker rmi 'docker images -q'

4. 容器相关命令

4.1 查看容器

查看正在运行的容器

docker ps

查看所有容器

docker ps -a

4.2 创建与启动容器

创建容器的常用参数说明
创建容器命令:

docker run

  • -i: 表示运行容器
  • -t: 表示容器启动后会进行其命令行,加入-i -t参数后,容器创建后就能登录进去,即分配一个伪终端
  • --name: 为创建的容器命名
  • -v: 表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录映射,注意:最好做目录映射,在宿主机上修改,然后共享到容器上
  • -d: 在run命令后面加上-d参数,则会创建一个守护式容器在后台运行(创建容器后不会自动登录容器),如果只加-i >-t 两个参数,创建后自动进入容器
  • -p: 表示端口映射,前者是宿主机端口,后者是容器内的映射端口,可以使用多个-p参数做多个端口映射
交互式方式创建容器(-it)

docker run -it --name=容器名称 镜像名称:标签 /bin/bash
通过docker ps命令查看,可以看到容器,状态为启动

退出当前容器

exit

守护式方式创建容易

docker run -i -d --name=镜像名称 镜像名称:标签

4.3 停止与启动容器

停止容器

systemctl stop docker

启动容器

systemctl start docker

重启容器

systemctl restart docker

4.4 文件拷贝

需要将文件拷贝到容器内可以使用CP命令

docker cp 需要拷贝的文件或目录 容器名称:容器目录

从容器内拷贝到宿主机

docker cp 容器名称:容器目录 拷贝的文件或目录

目录挂载

可以在创建容器的时候,将宿主机的目录与容器内的目录进行映射,就可以通过修改宿主机某个目录的文件从而去影响容器。

创建容器时添加-v参数如: -v 宿主机目录:容器目录,例如:

docker -it -v /usr/local/myhtml:/usr/local/myhml --name=mycentos centos:7
如果是共享多级目录,可能会出现权限不足的提示

4.5 查看容器IP地址

通过以下命令查看运行的各种数据

docker inspect 容器名称(容器ID)

直接执行下面命令输入ID地址

docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称(容器ID)

4.6 删除容器

删除指定容器:

docker rm 容器名称(容器ID)

5. 应用部署

5.1 MySql 部署

  • 拉取mysq镜像
首先通过docker search mysql 查看需要那个版本的镜像
image.png
image.png

显示上信息pull成功,如果pull的过程比较慢,可以尝试换成其它的,或百度设置一个国内镜像地址

  • 创建容器

docker run -id --name=mysql56 -p 63306:3306 -e MYSQL_ROOT_PASSWORD=qq111111 docker.io/centos/mysql-56-centos7

  • -p 端口映射,宿主机映射端口:容器运行端口
  • -e 添加环境变量MYSQL_ROOT_PASSWORD是root用户的登录密码


    image.png
  • 登录mysql
    连接宿主机,端口指定:63306
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 222,000评论 6 515
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,745评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,561评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,782评论 1 298
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,798评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,394评论 1 310
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,952评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,852评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,409评论 1 318
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,483评论 3 341
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,615评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,303评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,979评论 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,470评论 0 24
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,571评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 49,041评论 3 377
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,630评论 2 359