docker-day1

今日内容

1、docker介绍和传统虚拟机的比较

2、架构图

3、安装docker

4、镜像

5、容器

内容详细

1、docker介绍和传统虚拟机的比较

1.1什么是虚拟化

在计算机中虚拟化是一种资源管理技术,是将计算机的各种实体资源,如服务器,网络,内存及存储等,予以抽象转化后呈现出来,打破实体结构间不可分割的障碍,使用户可以比原本的状态更好的方式使用这些资源。

1.2什么是docker

docker的项目目标是实现轻量级的操作系统虚拟化解决方案。docker的基础是linux容器(LXC)等技术。

go语言实现,开源,很多人用

docker-ce免费,docker-ee收费

通过go语言对lxc技术得一个封装

上手快,简单

1.3docker和虚拟机的比较

1,容器是在操作系统层面上实现虚拟化,直接复用本地的操作系统,而传统的方式是在硬件方面实现的。

2、与传统虚拟机相比,docker的优势体现在启动速度快,占用体积小。

1.4docker是一个客户端-服务端(c/s)的架构体系(mysql和redis都是cs架构)

1.5镜像(image)和容器(container)

镜像运行起来就是容器(真正的执行单位)

类--->实例

1.6镜像从哪里来?

镜像就是一堆文件

从远程仓库拉取pull

2、架构图

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

所以Docker容器就是:

​ 一个镜像格式;

​ 一些列标准操作;

​ 一个执行环境。

​ Docker借鉴了标准集装箱的概念。标准集装箱将货物运往世界各地,Docker将这个模型运用到自己的设计中,唯一不同的是:集装箱运输货物,而Docker运输软件。

 3、docker安装

3.1windows安装

1 windows安装(不建议你装)http://get.daocloud.io/

3.2ubantu(乌班图)安装

# 0 卸载
sudo apt-get remove docker docker-engine docker.io containerd runc
# 1 安装必要工具
sudo apt-get update
sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common
# 2 安装GPG证书
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
#换成阿里云
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
# 2 写入软件源信息
#官方
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
#换成阿里云
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

# 3 更新并安装docker-ce
sudo apt-get -y install docker-ce
# 4 开启docker服务
 systemctl status docker

3.3centos安装必须7.0以上

6.8安装docker,自行搜索,升级内核版本
docker是在linux3.1以上内核中写出来的,在乌班图下开发的,docker的新特性,乌班图先看到,
官方建议docker运行在centos7 以上的系统

安装

1.更新yum

yum update

2.安装需要的软件包,yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

yum install -y yum-utils device-mapper-persistent-data lvm2

3.设置yum源为阿里云

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

4.安装

yum install docker-ce

5.安装后查看docker版本

docker -v

6.卸载docker

第一种方式:

remove docker docker-common docker-selinux docker-engin

rm -rf /var/lib/docker

第二种方式:

yum list installed |grep docker

rpm -qa |grep docker

yum -y remove docker版本文件包

rpm -qa |grep docker

rm -rf /var/lib/docker

rm -rf /etc/docker

3.4设置ustc的镜像

USTC是老牌的linux镜像提供服务者,还在遥远的ubuntu 5.04版本的时候就在用。ustc的docker镜像加速器速度很快。ustc docker mirror的优势之一就是不需要注册,是真正的公共服务。

编辑该文件

vi /etc/docker/daemon.json

在文件中输入如下内容

{ "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"] }

3.5docker的启动与停止

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

docker的基本命令格式:

 

启动docker

systemctl start docker

停止docker

systemctl stop docker

查看docker状态

sysytemctl status docker

重启docker

systemctl restart docker

开机启动

systemctl enable docker

查看docker概要信息

docker info

查看docker帮助文档

docker --help

4、镜像操作

4.1docker镜像是什么?

镜像是docker的一个可执行文件,其中包括运行应用程序所需得所有代码内容,依赖库,环境变量和配置文件等。通过镜像可以创建一个或多个容器。

一堆文件通过docker跑起来,就是容器。假设centos7镜像跑起来,那么容器就相当于宿主机上跑了一个centos7虚拟机。

4.2搜索镜像

docker search 镜像名称

  1. $ docker search ubuntu
  2. #NAME:名称
  3. #DESCRIPTION:基本功能描述
  4. #STARS:下载次数
  5. #OFFICIAL:官方
  6. #AUTOMATED:自动的运行

4.3获取镜像

#作用:

下载远程仓库(如Docker Hub)中的镜像

#命令格式:

docker pull [镜像名称]

#命令演示:

$ docker pull ubuntu

$ docker pull nginx

#注释:

#获取的镜像在哪里?

#/var/lib/docker 目录下

4.4查看镜像

docker images

docker iamge ls

  1. #命令演示:
  2. $ docker images
  3. #镜像的ID唯一标识了镜像,如果ID相同,说明是同一镜像。TAG信息来区分不同发行版本,如果不指定具体标记,

默认使用latest标记信息

  1. #docker images -a 列出所有的本地的images(包括已删除的镜像记录)
  2. #REPOSITORY:镜像的名称
  3. #TAG :镜像的版本标签
  4. #IMAGE ID:镜像id
  5. #CREATED:镜像是什么时候创建的
  6. #SIZE:大小

4.5镜像重命名

作用:对本地镜像的NAMETAG进行重命名,并新产生一个命名后镜像

  1. #命令格式:
  2. docker tag [老镜像名称]:[老镜像版本][新镜像名称]:[新镜像版本]
  3. #命令演示:
  4. $ docker tag nginx:latest panda-nginx:v1.0

4.6删除镜像

作用:将本地一个或多个镜像删除

#命令格式:

docker rmi [命令参数][镜像ID]

docker rmi [命令参数][镜像名称]:[镜像版本]

docker image rm [命令参数][镜像]

#命令演示:

$docker rmi 3fa822599e10

$docker rmi mysql:latest

#注意:

如果一个image_id存在多个名称,那么应该使用 名称:版本 的格式删除镜像

#命令参数(OPTIONS)

-f , --force   强制删除

4.7导出镜像

将已经下载好的镜像导出到本地,以备后用。

作用:将本地的一个或多个镜像打包成本地的tar文件

  1. #命令格式:
  2. docker save [命令参数][导出镜像名称][本地镜像镜像]
  3. #命令参数(OPTIONS)
  4. -o, --output string          指定写入的文件名和路径
  5. #导出镜像
  6. :~$ docker save -o nginx.tar nginx​​​​​​​

4.8导入镜像

作用:将save命令打包的镜像导入到本地镜像库中

#导入镜像命令格式:

$ docker load [命令参数][被导入镜像压缩文件的名称]

$ docker load < [被导入镜像压缩文件的名称]

$ docker load --input [被导入镜像压缩文件的名称]

#命令参数(OPTIONS)

-i--input string     指定要打入的文件,如没有指定,默认是STDIN

#为了更好的演示效果,我们先将nginx的镜像删除掉

docker rmi nginx:v1.0 docker rmi nginx

#导入镜像文件:

$ docker load < nginx.tar

#注意:

如果发现导入的时候没有权限需要使用chmod命令修改镜像文件的权限

4.9查看镜像历史

docker history 镜像名称:镜像版本

docker history 镜像ID

4.10 镜像详细信息

作用:查看本地一个或多个镜像的详细信息

docker image 命令参数 镜像名称:镜像版本

docker inspect 命令参数 镜像ID

  1. #查看镜像详细信息:
  2. $ docker inspect nginx

4.10 总结

 5、容器

5.1docker容器技术

docker容器技术是指Docker是由go语言写的程序运行的“容器”。docker则实现了应用程序级别的隔离,他改变了我们基本的开发,操作单元,由直接操作虚拟主机转换到操作程序运行的“容器”中来。

5.1查看容器

docker ps

  1. 作用
  2. 显示docker容器列表
  3. #命令格式:
  4. docker ps
  5. #命令演示:
  6. $ docker ps
  7. #CONTAINER ID 容器ID
  8. #IMAGE 基于那个镜像
  9. #COMMAND  运行镜像使用了哪些命令?
  10. #CREATED多久前创建时间
  11. #STATUS   开启还是关闭
  12. #PORTS端口号
  13. #NAMES容器名称默认是随机的
  14. #注意:
  15. 管理docker容器可以通过名称,也可以通过ID
  16. ps是显示正在运行的容器,     -a是显示所有运行过的容器,包括已经不运行的容器

5.2删除容器

docker rm 容器ID/容器名字

5.3启动并运行容器

通过centos:centos7镜像,创建一个名为mycentos的容器,并把它运行起来。

docker run -dt --name=mycentos centos:centos7

5.4停止容器

docker stop 容器id/容器名字

5.5启动容器

docker start 容器名字/容器id\

5.6容器的创建和启动

docker create --name=xxx redis 

docker start xxx

5.7创建并启动

  -创建并启动(run)
    -i:表示运行容器
    -t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。
    -d:在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t两个参数,创建后就会自动进去容器)。
    --name :为创建的容器命名。如果不写,会自动分配一个名字(英文人名)
    -v:表示目录映射关系(前者是宿主机目录,后者是容器目录,映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。
    -p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射
    docker run -it --name=myredis redis
        
 # 注意,docker run  镜像 如果本地没有,会先pull,再run

5.8进入容器的几种方式

第一种:docker exec -it 容器id /bin/bash

docker exec 容器id ls

exec真正的作用是在容器内执行命令

第二种:ssh连接(容器内部装ssh服务端)

5.9退出

exit

6、文件拷贝

从宿主机拷贝到容器内部

docker cp pjq.txt 容器id:/home

从容器内部拷贝到宿主机

docker cp 容器id:/home/pjq.txt /app

7、目录挂载

docker run -di --name=mycentos -v /home/pjq:/home centos:centos7

一旦挂载,以后宿主机目录内更改,同样影响容器内部。

8、端口映射

docker run -di -p 6377:6379 redis:latest​​​​​​​

9、 查看容器详细信息


    docker inspect f81
    # 查看ip地址
    docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称(容器ID)

10、应用部署

# 在容器内部署mysql


# -e表示环境变量

docker run -di --name=mysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
# 官方提供的
docker run --name some-mysql -v /my/own/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
        
# 在容器内部署redis
docker run -di -p 6377:6379 redis:latest
        
# 在容器内部署nginx
docker run -di --name=mynginx -p 8080:80 nginx

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

右耳要加油

你们的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值