docker学习总结

docker学习总结

 最近在学习docker,内容比较多也比较简单,所以做一个简单的总结,做为笔记供自己学习

 参考链接:

  docker中文社区

  docker官网

  dockerHub

  广州千峰-李卫民-博客(推荐加书签)

  菜鸟教程-docker篇

1. docker是什么

  我解释起来比较困难,推荐自行百度或阅读参考文章

引用百度百科的解释:

  Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

我个人的理解:

  docker是一个容器化引擎,能够在运行在win,mac,linux 三大平台下的容器引擎,我们把操作系统比作一个房间,docker就像一个打气筒,能简单快速的制造出一个轻量化的气球(容器)出来,我们能再这个轻量化的容器里面做我们需要的操作,容器能与外部隔离但是又可以和外部共享网络,文件等资源;理解不是很到位,但是这个比较容易理解的大概意思

参考文章:

什么是Docker, 为什么这么火

2. docker安装

 由于不同版本的linux安装docker有一点点不同,但是也都是大同小异的,所以推荐请根据自己的系统版本百度安装教程,或者阅读参考文章

 我个人使用的是centos7,在这里只列举centos7下面的docker安装

 docker分 yum安装脚本安装的方式,由于我的linux命令使用比较渣,所以我就是用了最简单的<使用 yum 安装>

 Docker 划分为 CE 和 EE。CE 即社区版(免费,支持周期三个月),EE 即企业版,强调安全,付费使用

警告

 切勿在没有配置 Docker YUM 源的情况下直接使用 yum 命令安装 Docker

安装要求:

 Docker CE 支持 64 位版本 CentOS 7,并且要求内核版本不低于 3.10

查看内核版本命令:

uname -a

安装

1.卸载旧版本

 旧版本的 Docker 称为 docker 或者 docker-engine,使用以下命令卸载旧版本:

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine

2.安装依赖包:

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

3.修改软件源:

 鉴于国内网络问题,强烈建议使用国内源,官方源请在注释中查看

sudo yum-config-manager \
    --add-repo \
    https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo


# 官方源
# $ sudo yum-config-manager \
#     --add-repo \
#     https://download.docker.com/linux/centos/docker-ce.repo  

4.安装 Docker CE:

 更新 yum 软件源缓存,并安装 docker-ce

sudo yum makecache fast
sudo yum install docker-ce

参考安装文章:

 我个人觉得这个博客里面的教程是比较全面的,几乎所有系统版本的安装教程都有,直接参考借鉴

参考文章:

Docker 安装

3. docker简单使用

  docker 用起来比较简单,主要是 拉取镜像(pull)和运行容器(run),所以这里我不做深入讲解,还是简单的介绍使用

常用命令的最简单使用


拉取镜像

 格式:

docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]

 说明:

  从 Docker 镜像仓库获取镜像的命令,如果只加镜像名称,默认下载最新版本镜像

 示例:

docker pull ubuntu:16.04

列出所有镜像:

 命令:

docker image ls

 说明:

  列表包含了 仓库名、标签、镜像 ID、创建时间 以及 所占用的空间。


删除镜像:

 命令:

docker image rm [选项] <镜像1> [<镜像2> ...]```或者 ```docker rmi <镜像> 

 说明:

  其中,<镜像> 可以是 镜像短 ID、镜像长 ID、镜像名 或者 镜像摘要。


启动容器:

  启动容器有两种方式,一种是基于镜像新建一个容器并启动,另外一个是将在终止状态(stopped)的容器重新启动。
因为 Docker 的容器实在太轻量级了,很多时候用户都是随时删除和新创建容器。

 命令:

docker run -p -d <外部端口>:<容器内端口> --name <容器名称> <镜像>

 说明:

  -p:表示映射端口(-P 就不用跟参数,会随机映射端口)

  -d:表示以守护态启动容器(即在后台运行)

  --name:表示为容器提供名称(可以不填,会随机命名)

  镜像: 镜像的id,名称,等等,(值得一提的是,如果没有pull镜像,docker会先自动去pull镜像,在run,也就说我们不需要pull,只需要run即可)

 示例:

docker run -p 8080:8080 --name tomcat tomcat

查看运行中的容器:

 命令:

docker ps

查看所有容器:

 命令:

docker ps -a

终止容器:

 命令:

docker stop <容器>

 说明:

  这里的容器可以是容器id,或者容器名称名称


删除容器:

 命令:

docker rm <容器>

 说明:

  这里的容器可以是容器id,或者容器名称名称

 注意:

  删除容器之前一定要先停止容器,否则无法删除,或者添加 -f 参数强制删除


进入容器:

 在使用 -d 参数时,容器启动后会进入后台。
某些时候需要进入容器进行操作,包括使用 docker attach 命令或 docker exec 命令,推荐大家使用 docker exec 命令,所以这里我只介绍exec命令

 命令:

docker exec -i -t <容器> /bin/bash

 说明:

  进入容器里面一样可以使用部分linux命令

退出容器:

ctrl+dexit


docker运行nginx案例

1. 下载镜像

docker pull nginx

2. 运行nginx容器(运行成功后可以在浏览器输入linux服务器地址访问)

docker run -p 80:80 -d --name nginx nginx

3. 查看运行中容器

docker ps

4. 停止nginx容器(这里我是根据一开始–name设置的镜像名称,不然就要使用ps里面的镜像ID)

docker stop nginx

5. 删除nginx容器

docker rm nginx

6. 删除nginx镜像

docker rmi nginx

7.参考文章:

使用 Docker 镜像

操作 Docker 容器

4. docker-compose简单使用

 Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。

Docker Compose 介绍

 Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。从功能上看,跟 OpenStack 中的 Heat 十分类似。

 其代码目前在 https://github.com/docker/compose 上开源。

 Compose 定位是 「定义和运行多个 Docker 容器的应用(Defining and running multi-container Docker applications)」,其前身是开源项目 Fig。

 通过第一部分中的介绍,我们知道使用一个 Dockerfile 模板文件,可以让用户很方便的定义一个单独的应用容器。然而,在日常工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现一个 Web 项目,除了 Web 服务容器本身,往往还需要再加上后端的数据库服务容器,甚至还包括负载均衡容器等。

 Compose 恰好满足了这样的需求。它允许用户通过一个单独的 docker-compose.yml 模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。

 Compose 中有两个重要的概念:

 服务 (service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。

 项目 (project):由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中定义。
 Compose 的默认管理对象是项目,通过子命令对项目中的一组容器进行便捷地生命周期管理。

 Compose 项目由 Python 编写,实现上调用了 Docker 服务提供的 API 来对容器进行管理。因此,只要所操作的平台支持 Docker API,就可以在其上利用 Compose 来进行编排管理。

 参考文章:

  Docker Compose 介绍

Docker Compose 安装与卸载

  Compose 支持 Linux、macOS、Windows 10 三大平台。

  Compose 可以通过 Python 的包管理工具 pip 进行安装,也可以直接下载编译好的二进制文件使用,甚至能够直接在 Docker 容器中运行。

二进制包安装

  在 Linux 上的也安装十分简单,从 官方 GitHub Release 处直接下载编译好的二进制文件即可。

sudo curl -L https://github.com/docker/compose/releases/download/1.17.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

sudo chmod +x /usr/local/bin/docker-compose

手动安装

  我个人是在GitHub 上下的tar.gz包,然后解压到/usr/local/bin/docker-compose目录

卸载

  如果是二进制包方式安装的,删除二进制文件即可。

sudo rm /usr/local/bin/docker-compose

  如果是通过 pip 安装的,则执行如下命令即可删除。

sudo pip uninstall docker-compose

参考文章:

github-compose

Docker Compose 安装与卸载

Docker Compose 命令的简单使用

1.在/usr/local/docker/test 目录下新建docker-compost.yml模板文件(一定要是这个名字)

2.编辑模板文件内容

  模板文件内容请参考文章Docker Compose 模板文件,下面的nginx 案例会做部分介绍

3.执行常用命令(需要在有docker-compose.yml文件目录下执行):


运行docker compose项目:

docker-compose up

守护态运行docker compose项目:

docker-compose up -d

停止docker compose项目:

docker-compose down

重启docker compose 项目:

docker-compose restart

Docker Compose 运行 nginx 案例

1. 新建目录

mkdir /usr/local/docker/nginx

2. 在nginx目录新建docker-compose.yml 模板文件

touch docker-compose.yml

3.编辑模板文件内容

vi docker-compose.yml
内容:

version: "3"
services: 
 nginx:
  restart: always
  container_name: nginx
  image: nginx
  ports:
   - 80:80
   - 443:443

 说明:

  version: compose版本,最新的是3

  services: 服务集合

  nginx: 服务名称

  restart: 是否自动启动

  container_name: 容器名称

  image: 镜像名称(这个是必填的)

  ports: 将容器内部端口映射到外部集合

4. 运行docker-compose 项目

docker-compose up -d

  启动成功后在浏览器输入linux地址就能看到nginx页面

5. 参考文章:

Docker Compose 使用

Docker Compose 模板文件

5. Dockerfile自定义镜像

  docker 用别人的镜像就已经很方便了,能用自己的镜像就更便捷,所以就有Dockerfile

镜像构成

 这里我暂时也不是很理解,仅仅提供文章参考;

 参考文章:

  利用 commit 理解镜像构成

Dockerfile指令详解

 Dockerfile 需要用到很多的指令,而且指令比较多,记录起来比较麻烦,所以推荐用到设么查什么,也只提供文章参考;

 参考文章:

  Dockerfile 指令详解

Dockerfile 案例

 dockerfile 其实很简单,主要是考验个人的linux指令的熟练度,我个人接触linux时间比较短,会得linux指令比较少,所以就列举一个简单的Dockerfile 案例

项目需求:

 我们搭建一个java环境的容器,在这个容器里面运行我们的一个只有一个页面的jar包,用Java -jar test.jar 来运行我们的java项目,从而构成一个镜像

 这里我们直接列出我的dockerfile 文件,下面再一一解析dockerfile文件里面的指令

#目录结构:

usr
│
└─local
│    │
│    └─docker
│        │
│        └──project
│    │   │    Dockerfile
│    │   │    docker-compost.yml
│    │   │    project.jar

1. 新建Dockerfile文件

vim Dockerfile

 Dockerfile内容

FROM openjdk:8-jdk
WORKDIR /data/server
COPY ./project.jar .
EXPOSE 8080
CMD java -jar project.jar

 命令说明:

 FROM: 指定基础镜像,我们的基础镜像是jdk8,docker会自己去下载对应的镜像

 WORKDIR: 指定工作目录(这里的工作目录是docker容器里面的目录,不是我么操作系统的目录)

 COPY: 复制文件,我们将操作系统里面的jar复制到容器里面的工作目录,’.'指的是当前目录

 EXPOSE: 暴露端口,将容器内部的端口暴露给Docker

 CMD: 启动容器命令,在启动容器的时候会执行的操作命令

2. 构建镜像

命令格式:

docker build [选项] <上下文路径/URL/->

命令:

docker build -t myImage:1.0.0 .

 说明:

 -t: 镜像的名字及标签,我们这里的名字myImage,版本为1.0.0

3. 新建docker-compose.yml模板文件

vim docker-compose.yml

 compose内容:

version: "3"
services:
 project:
  restart: always
  container_name: project
  image: project
  ports:
   - 8080:8080

4. 启动我们自己构建的容器

docker-compose up -d

5. 构建成功访问

   浏览器就能访问我们的项目地址(ip+端口号)

6. 参考文档

使用Dockerfile 定制镜像

菜鸟教程-docker命令大全

6. 总结

不会写稿,只会说一下自己对docker看法,做为一个开发者,docker对于我们而言大大减少了我们队项目部署和项目维护的难度,同时对于运维人员来说也是一个利器,因为它真的做到了一次部署到处运行,相较于操作系统显得更为强大;我写的都只是入门级别的东西,只是个人的一个笔记而已,其实docker还是有很多复杂的操作值得我们去学习,我相信,如果能熟练掌握好docker,项目部署和维护都将是小问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值