今天,自己写了一部分业务代码,是常规代码的另外一种方式,不能在公司的服务器上测试,就自己在PC端搭建了一套和公司集群一样的模板,因为公司的业务模块的测试有单独的服务器(这一块还是我很稀罕的),但是,第一步就遇到了麻烦,因为公司的业务都是在Docker上执行的,我在自己的电脑上搭建的时候,按照教程,自动执行,却遇到了一个问题:

  1. Job for docker.service failed

不知道大家在搭建Docker的时候是否遇到过这个问题,感觉应该是个小问题,可是像Docker这么简单的安装都会出问题,我不服,在网上搜索的时候,相应的解决方案挺多的,这里给大家提供解决方案的同时顺手整理一下Docker的几个方面:

1、为什么使用Docker

2、Docker安装以及遇到的问题解决方案

3、Docker的常用命令

供大家学习使用

好了,话不多说,我们从为什么要使用Docker开始讲起吧

为什么使用Docker

其实在这个问题上,我的原则一向很坚定,看官网,无论什么技术,官网都会有最权威的解释

在官网的介绍中有这样一段介绍

Docker提供了在松散隔离的环境(称为容器)中打包和运行应用程序的功能。

隔离和安全性使您可以在给定主机上同时运行多个容器。

容器轻巧,因为它们不需要虚拟机管理程序的额外负载,而是直接在主机的内核中运行。

其实这不仅解释了我们为什么要使用Docker,也展示了Doker 的相应优点,而Docker的这些优点的支撑也来自其独特的引擎

而独特的引擎也决定了Docker的架构的特殊性

这一块理论的东西,大家可以去官网查看一下,这不是今天的重点,就给大家稍微的整理一下,进入今天的主题操作,因为写这篇文章的初衷就是因为在安装Docker的过程中遇到的一个问题,所以我也就从Docker的安装开始写,引出问题在哪一步出现,该如何解决

一、Docker安装

1. 查看CentOs版本

因为Docker 的特殊性,他对于操作系统的内核有相应的要求,并不是全兼容,他要求centos系统的内核版本高于3.1

  1. uname -r

2. 升级内核(非必须)

这一步不是必须操作的,也可以不执行,我测试过,对于程序的正常执行没什么影响

  1. yum update

3. 安装Docker

这个地方,如果你没什么特别的需求的话,可以直接使用默认的,因为默认的会下载最新的版本

  1. # 默认会下载最新版的Docker
  2. yum install docker

4. 启动Docker

  1. systemctl start docker

如果启动过程中没有报错,说明Docker安装启动完成,可以用docker -v查看docker版本。

其实,到这里,一般都会不出现问题,也相对较简单,因为是在自己的电脑上测试用的,没有必要搭建的那么专业,像我在执行hive、hbase等大数据的相关命令的时候,能用伪分布式一定不用集群操作

但是,我在启动的过程中遇到了下面这样的两个问题:

问题一

  1. Job for docker.service failed because the control process exited with error code.
  2. See "systemctl status docker.service" and "journalctl -xe" for details.

按照提示,输入systemctl status docker.service命令查看错误提示。

ps:这里也是提示一些刚开始进行学习的朋友,要学会去看错误提示或者说错误日志,一般错误日志中都会指出你的错误的位置以及解决方案,能帮你节省很多的时间

如果是以上错误,说明SELinux不支持此内核上的overlay2图形驱动程序,将selinux禁用即可。
禁用步骤:
1、输入以下命令

  1. vi /etc/sysconfig/docker

2、将selinux-enabled=false

然后再次启动Dcoker即可,如果还是无法启动,可以考虑升级CentOs内核版本。

或者

找到这个文件/usr/bin/docker 。把文件删除就ok了,至于具体原因为何,说实话,我也不清楚

  1. #验证Docker是否启动成功
  2. sudo docker run hello-world

问题二

说这个是问题也可以不是问题,这是我看到别人出现的问题,这里也给大家整理一下

就是有的朋友用systemctl start docker启动docker会出现这样的一个问题

  1. Unknown operation 'start docker'

其实解决方案很简单,

使用命令:systemctl start docker.service启动Doker即可


好了,到这里Docker的安装也就完成了,接下来,给大家总结一下,我经常使用的一些Docker 的相应操作命令

一、镜像操作

1)检索
docker search 关键字。

  1. docker search redis
  2. #一般不根据检索的结果进行拉取,而是在DockerHub上进行搜索。

2)拉取
docker pull 镜像名:tag(tag是可选的,tag表示标签,多为软件的版本,默认是latest)

  1. docker pull mysql:5.7

3)列表(查看本地所有镜像)

  1. docker images

4)删除(删除指定的本地镜像)

  1. docker rmi image-id

二、容器操作

1)启动容器

  1. docker start 容器的id

2)查看运行中的容器

  1. docker ps

3)查看所有的容器

  1. docker ps -a

4)停止运行中的容器

  1. docker stop 容器的id

5)删除一个容器

  1. docker rm 容器id

6)查看容器的日志

  1. docker logs container-name/container-id

7)启动一个带端口映射的tomcat

  1. docker run -d -p 8888:8080 tomcat
  2. /*
  3. 注:
  4. -d 后台运行
  5. -p 将主机的端口映射到容器的一个端口
  6. 主机端口:容器内部的端口*/

8)正确启动mysql的命令

  1. docker run --name mysql01 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

9)做端口映射的启动命令

  1. docker run -p 3306:3306 --name mysql02 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

三、其余的高级操作

这个地方说实话没想好该怎么处理,正好我在使用mysql,所以就通过mysql为例,给大家讲解一下把

1)把主机的/conf/mysql文件夹挂载到 mysqldocker容器的/etc/mysql/conf.d文件夹里面
改mysql的配置文件就只需要把mysql配置文件放在自定义的文件夹下(/conf/mysql)即可。

  1. docker run --name mysql03
  2. -v /conf/mysql:/etc/mysql/conf.d
  3. -e MYSQL_ROOT_PASSWORD=my-secret-pw
  4. -d mysql:tag

2)指定mysql的部分配置参数

  1. docker run
  2. --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
  3. --character-set-server=utf8mb4
  4. --collation-server=utf8mb4_unicode_ci

好啦,我该去完成我接下来的操作了,哪些操作我应该就没有办法再给大家详细的进行讲解了,如果大家对于Docker的相关内容感兴趣,可以私信或者下方评论区给我留言,我会找时间给大家进行整理

个人公众号:Java架构师联盟,每日更新技术好文

因为一个Docker问题,我顺手整理从安装到常用命令操作手册的更多相关文章

  1. Docker系列之常用命令操作手册

    目录 1.安装虚拟机 2.安装Docker 3.Docker镜像操作 4.Docker容器操作 Docker系列之常用命令操作手册 继上一篇博客Docker系列之原理简单介绍之后,本博客对常用的Doc ...

  2. windows下docker的安装及常用命令学习

    docker search 镜像名 本文主要介绍Docker在Windows下的安装.关于Docker的介绍和文档在其官网中可以找到:http://www.docker.com .安装环境:Windo ...

  3. docker 第一次学习(一)--安装以及相关命令

    转自:https://www.jianshu.com/p/c69a2a3b4c7a https://docs.docker.com/ http://www.dockerinfo.net/documen ...

  4. Docker安装和常用命令

    Docker安装 Docker的安装可以参考 https://docs.docker.com/ 下面的 Get Docker / Docker CE / Linux, 需要关注的主要是CentOS和U ...

  5. Docker 安装与常用命令介绍

    docker的镜像文件作用就是:提供container运行的文件系统层级关系(基于AUFS实现),所依赖的库文件.已经配置文件等等. 安装docker yum install -y docker 启动 ...

  6. docker 安装与常用命令与常用容器(containers)环境

    注意区别 container 与 image 的关系,container 的建立需要 image 的承载,也即 container 依赖 image,停止并删除了 container 并不会删除 im ...

  7. 【Docker】docker 的常用命令&操作

    一.在linux虚拟机上安装docker XShell1:检查内核版本,必须是3.10及以上 uname -r2:安装docker yum install docker3:输入y确认安装4:启动doc ...

  8. Docker(二)安装及常用命令

    1.安装 1.安装虚拟机VMWare 链接:https://pan.baidu.com/s/1Xl7ENUm2gapPOFs-iXHpRQ 提取码:eubm 2.下载centos,我下的是这个版本的 ...

  9. Ubuntu下安装Docker,及Docker的一些常用命令操作

    1.什么是 Docker         Docker 是一个开源项目,Docker 项目的目标是实现轻量级的操作系统虚拟化解决方案.         Docker 的基础是 Linux 容器(LXC ...

随机推荐

  1. EF6 Code First 博客学习记录

    学习一下ef6的用法 这个学习过程时按照微软官网的流程模拟了一下 就按照下面的顺序来写吧 1.连接数据库  自动生成数据库 2.数据库迁移 3.地理位置以及同步/异步处理(空了再补) 4.完全自动迁移 ...

  2. 这个Map你肯定不知道,毕竟存在感确实太低了。

    这是why哥的第 75 篇原创文章 从Dubbo的优雅停机说起 好吧,其实本文并不是讲 Dubbo 的优雅停机的. 只是我在 Dubbo 停机方法 DubboShutdownHook 类中,看到了这样 ...

  3. dpdk网卡收包分析

    一个网络报文从网卡接收到被应用处理,中间主要需要经历两个阶段: 阶段一:网卡通过其DMA硬件将收到的报文写入到收包队列中(入队)阶段二:应用从收包队列中读取报文(出队)由于目前正在使用vpp/dpdk ...

  4. 154. Find Minimum in Rotated Sorted Array II(循环数组查找)

    Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e. ...

  5. Ceph对象主本损坏的修复方法

    前言 问题的触发是在进行一个目录的查询的时候,osd就会挂掉,开始以为是osd操作超时了,后来发现每次访问这个对象都有问题 log [WRN] : slow request 60.793196 sec ...

  6. 如何在所有的mon的损坏情况下将数据恢复如初

    本篇主题 在mon无法启动,或者所有的mon的数据盘都损坏的情况下,如何把所有的数据恢复如初 写本章的缘由 在ceph中国的群里有看到一个技术人员有提到,在一次意外机房掉电后,三台mon的系统盘同时损 ...

  7. 【Redis】利用 Redis 实现分布式锁

    技术背景 首先我们需要先来了解下什么是分布式锁,以及为什么需要分布式锁. 对于这个问题,我们可以简单将锁分为两种--内存级锁以及分布式锁,内存级锁即我们在 Java 中的 synchronized 关 ...

  8. [head first 设计模式] 第一章 策略模式

    [head first 设计模式] 第一章 策略模式 让我们先从一个简单的鸭子模拟器开始讲起. 假设有个简单的鸭子模拟器,游戏中会出现各种鸭子,此系统的原始设计如下,设计了一个鸭子超类,并让各种鸭子继 ...

  9. 还不懂java类加载机制的,建议看下这份阿里技术官总结的笔记!

    类加载机制 把class文件加载到内存,并对数据进行校验,准备,解析,初始化,形成可以被虚拟机直接使用的字节码 类加载的时机(触发类的初始化) 使用new关键字实例化对象 读取一个类的静态代码块 使用 ...

  10. ABBYY FineReader 15 文档转换功能

    我们平常工作的时候总会固定地只用某几个文档格式,有的人经常使用office,所以电脑内就没安装PDF阅读器,这个时候就需要文档转换器了,ABBYY FineReader 15 也能够帮助我们实现快速的 ...