DevOps技术Jenkins/Gitlab/Sonarqube等

Docker学习笔记

2019-05-18  本文已影响139人  32a08e1b7af0

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

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

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

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

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

2. Docker安装与启动

2.1 Docker安装

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

sodu yum update

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

sudo yum install docker-re

docker -v


image.png

2.2 Docker启动与停止

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

systemctl start docker

systemctl stop docker

systemctl restart 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 部署

首先通过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

上一篇 下一篇

猜你喜欢

热点阅读