初识Docker: 概念和基础

1:Docker概述

Docker 是一个开源的应用容器引擎 ,Docker可以让开发者打包他们的应用以及依赖到一个轻量级、可移植的容器中,然后发布到任何流行的机器上。可以理解成一个轻量的虚拟机。

容器使用的是沙箱机制,性能开销极低。

  Docker的优势:

  1. 更高效的利用资源。由于容器不需要进行硬件虚拟以及运行完整操作系统等额外开销,Docker对系统资源的利用率更高。
  2. 更快速的启动时间。Docker直接运行于宿主机内核,无需启动完整的操作系统。
  3. 一致的运行环境。Docker镜像提供了除内核外完整的运行时环境,确保测试,开发,生产环境一致。
  4. 持续交付和部署。
  5. 更轻松的迁移。Docker确保了环境的一致性。可以在很多平台运行。使得迁移更容易。
  6. 更轻松的维护和扩展。Docker使用分层存储及镜像的技术,使得应用重复部分的复用更容易。维护更加简单。

  Docker应用场景:

  1. 提供一次性的环境。方便web打包发布。
  2. 提供弹性的云服务。Docker可以随开随关,适合动态扩容和缩容。
  3. 组件微服务架构。通过多个容器,一台机器可以跑多个服务,本机就可以模拟出微服务架构。

  Docker架构:

  1. 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
  2. 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
  3. 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。

2:Docker安装

  CentOS安装Docker 

# 1yum 源更新到最新
yum update

# 2、安装依赖软件包,yum-utils 提供yum-config-manager功能,另外两个是devicemapper驱动依赖
yum install -y yum-utils device-mapper-persistent-data lvm2

# 3、设置yum源
## 3.1 使用ustc源
yum-config-manager --add-repo http://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
## 3.2 使用aliyun源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
## 3.1 使用docker源
yum-config-manager --add-repo http://download.docker.com/linux/centos/docker-ce.repo

# 4、安装docker 可以通过 yum list docker-ce --showduplicates|sort -r 查看版本,指定安装。例如:yum install -y docker-ce-18.03.1.ce 
yum install -y docker-ce

  其他命令

# 卸载删除docker
yum remove docker docker-common docker-selinux docker-engine

# docker运行状态
systemctl status docker

# 启动,停止,重启docker
systemctl start docker

# 加入开机启动
systemctl enable docker

# 设置docker配置文件 ... https://reg-mirror.qiniu.com/  https://docker.mirrors.ustc.edu.cn https://hub-mirror.c.163.com/
vi /etc/docker/daemon.json
{
"registry-mirrors": ["https://cr.console.aliyun.com/"]
}
# 修改完之后
systemctl daemon-reload 重新加载,systemctl restart docker 重启docker

3:镜像相关命令

  3.1 镜像操作:

# 查看本地镜像
docker images

# 搜索镜像
docker search centos

# 删除镜像 指定删除名字或者镜像ID。docker rmi `docker images -q` 删除所有(慎用)
docker rmi centos-name

# 拉取镜像
docker pull centos-name:版本

# 上传镜像 hub.docker.com 上注册账号登录,创建Repository
docker push ...

  3.2 Dockerfile文件指令生成镜像

Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。 没有后缀。

Dockerfile 指令每执行一次会在docker上新建一层。建议RUN 下面的操作可以用&&符号连接减少指令。

  常用命令:

FROM image_name:tag定义了使用哪个基础镜像启动构建流程
MAINTAINER user_name 镜像的创建者
ENV key value 设置环境变量(可以多条)
RUN command 核心命令(可以多条)
ADD source_dir/file dest_dir/file 将宿主机的文件复制到容器内,如果是一个压缩文件,将会在复制后自动解压
COPY source_dir/file dest_dir/file 和ADD相似,但是如果是压缩文件不会解压
WORKDIR path_dir 设置工作目录

  执行Dockfile

# 使用Dockfile文件构建镜像语句 先进入到Dockerfile所在目录。注意不要漏了.
docker build -t nginx:test .

4:容器相关命令

创建和启动容器:docker run 参数

参数说明:

  • -i 表示运行容器
  • -t 表示容器启动后会进入命令行。即会分配一个伪终端。交互式容器。
  • --name 容器名称
  • -v 目录映射关系(前者是宿主机目录,后面是容器内的目录),可以使用多个-v做多个映射,最后做映射。当宿主机修改之后,会共享在容器下。
  • -d 会创建一个守护式容器后台运行。例如MYSQL之类。
  • -p 端口映射 (前者是宿主机端口,后面是容器内的端口),可以做多个映射。

交互式容器:启动容器后直接进入容器的命令行终端,如果退出则容器停止运行。

命令:docker run -it --name=myname1 镜像名 /bin/bash

守护式容器:容器启动后可以在后台运行。

命令:docker run -di --name=myname2 镜像名

如果想进入守护式容器,则输入命令:docker exec -it myname2 /bin/bash

  容器常用操作:

  

# 查看容器
docker ps -a

# 创建容器
## 1、交互式
docker run -it --name=myname1 镜像名 /bin/bash
## 2、守护式
docker run -di --name=myname2 镜像名
docker exec -it myname2 /bin/bash

# 停止容器
docker stop myname2

# 宿主机复制文件>>容器
docker cp 文件 myname2:/路径

# 容器复制文件>> 宿主机
docker cp myname2:/路径+文件 /root

# 目录挂载
## 1、本地创建好映射的目录
touch /usr/local/test
## 2、生成一个挂载的容器 使用参数-v
docker run -di -v /usr/local/test:/usr/local/test --name=myname3 镜像名 

# 宿主机下查看容器IP
docker inspect myname3

# 删除容器 ,如果容器在运行中,不可操作可以先停止运行
docker rm myname3
posted @ 2020-07-30 17:27  wish_yang  阅读(146)  评论(0编辑  收藏  举报