因为一个Docker问题,我顺手整理从安装到常用命令操作手册
今天,自己写了一部分业务代码,是常规代码的另外一种方式,不能在公司的服务器上测试,就自己在PC端搭建了一套和公司集群一样的模板,因为公司的业务模块的测试有单独的服务器(这一块还是我很稀罕的),但是,第一步就遇到了麻烦,因为公司的业务都是在Docker上执行的,我在自己的电脑上搭建的时候,按照教程,自动执行,却遇到了一个问题:
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
uname -r
2. 升级内核(非必须)
这一步不是必须操作的,也可以不执行,我测试过,对于程序的正常执行没什么影响
yum update
3. 安装Docker
这个地方,如果你没什么特别的需求的话,可以直接使用默认的,因为默认的会下载最新的版本
# 默认会下载最新版的Docker
yum install docker
4. 启动Docker
systemctl start docker
如果启动过程中没有报错,说明Docker安装启动完成,可以用docker -v查看docker版本。
其实,到这里,一般都会不出现问题,也相对较简单,因为是在自己的电脑上测试用的,没有必要搭建的那么专业,像我在执行hive、hbase等大数据的相关命令的时候,能用伪分布式一定不用集群操作
但是,我在启动的过程中遇到了下面这样的两个问题:
问题一
Job for docker.service failed because the control process exited with error code.
See "systemctl status docker.service" and "journalctl -xe" for details.
按照提示,输入systemctl status docker.service命令查看错误提示。
ps:这里也是提示一些刚开始进行学习的朋友,要学会去看错误提示或者说错误日志,一般错误日志中都会指出你的错误的位置以及解决方案,能帮你节省很多的时间
如果是以上错误,说明SELinux不支持此内核上的overlay2图形驱动程序,将selinux禁用即可。
禁用步骤:
1、输入以下命令
vi /etc/sysconfig/docker
2、将selinux-enabled=false
然后再次启动Dcoker即可,如果还是无法启动,可以考虑升级CentOs内核版本。
或者
找到这个文件/usr/bin/docker 。把文件删除就ok了,至于具体原因为何,说实话,我也不清楚
#验证Docker是否启动成功
sudo docker run hello-world
问题二
说这个是问题也可以不是问题,这是我看到别人出现的问题,这里也给大家整理一下
就是有的朋友用systemctl start docker启动docker会出现这样的一个问题
Unknown operation 'start docker'
其实解决方案很简单,
使用命令:systemctl start docker.service启动Doker即可
好了,到这里Docker的安装也就完成了,接下来,给大家总结一下,我经常使用的一些Docker 的相应操作命令
一、镜像操作
1)检索
docker search 关键字。
docker search redis
#一般不根据检索的结果进行拉取,而是在DockerHub上进行搜索。
2)拉取
docker pull 镜像名:tag(tag是可选的,tag表示标签,多为软件的版本,默认是latest)
docker pull mysql:5.7
3)列表(查看本地所有镜像)
docker images
4)删除(删除指定的本地镜像)
docker rmi image-id
二、容器操作
1)启动容器
docker start 容器的id
2)查看运行中的容器
docker ps
3)查看所有的容器
docker ps -a
4)停止运行中的容器
docker stop 容器的id
5)删除一个容器
docker rm 容器id
6)查看容器的日志
docker logs container-name/container-id
7)启动一个带端口映射的tomcat
docker run -d -p 8888:8080 tomcat
/*
注:
-d 后台运行
-p 将主机的端口映射到容器的一个端口
主机端口:容器内部的端口*/
8)正确启动mysql的命令
docker run --name mysql01 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
9)做端口映射的启动命令
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)即可。
docker run --name mysql03
-v /conf/mysql:/etc/mysql/conf.d
-e MYSQL_ROOT_PASSWORD=my-secret-pw
-d mysql:tag
2)指定mysql的部分配置参数
docker run
--name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
--character-set-server=utf8mb4
--collation-server=utf8mb4_unicode_ci
好啦,我该去完成我接下来的操作了,哪些操作我应该就没有办法再给大家详细的进行讲解了,如果大家对于Docker的相关内容感兴趣,可以私信或者下方评论区给我留言,我会找时间给大家进行整理
个人公众号:Java架构师联盟,每日更新技术好文
因为一个Docker问题,我顺手整理从安装到常用命令操作手册的更多相关文章
- Docker系列之常用命令操作手册
目录 1.安装虚拟机 2.安装Docker 3.Docker镜像操作 4.Docker容器操作 Docker系列之常用命令操作手册 继上一篇博客Docker系列之原理简单介绍之后,本博客对常用的Doc ...
- windows下docker的安装及常用命令学习
docker search 镜像名 本文主要介绍Docker在Windows下的安装.关于Docker的介绍和文档在其官网中可以找到:http://www.docker.com .安装环境:Windo ...
- docker 第一次学习(一)--安装以及相关命令
转自:https://www.jianshu.com/p/c69a2a3b4c7a https://docs.docker.com/ http://www.dockerinfo.net/documen ...
- Docker安装和常用命令
Docker安装 Docker的安装可以参考 https://docs.docker.com/ 下面的 Get Docker / Docker CE / Linux, 需要关注的主要是CentOS和U ...
- Docker 安装与常用命令介绍
docker的镜像文件作用就是:提供container运行的文件系统层级关系(基于AUFS实现),所依赖的库文件.已经配置文件等等. 安装docker yum install -y docker 启动 ...
- docker 安装与常用命令与常用容器(containers)环境
注意区别 container 与 image 的关系,container 的建立需要 image 的承载,也即 container 依赖 image,停止并删除了 container 并不会删除 im ...
- 【Docker】docker 的常用命令&操作
一.在linux虚拟机上安装docker XShell1:检查内核版本,必须是3.10及以上 uname -r2:安装docker yum install docker3:输入y确认安装4:启动doc ...
- Docker(二)安装及常用命令
1.安装 1.安装虚拟机VMWare 链接:https://pan.baidu.com/s/1Xl7ENUm2gapPOFs-iXHpRQ 提取码:eubm 2.下载centos,我下的是这个版本的 ...
- Ubuntu下安装Docker,及Docker的一些常用命令操作
1.什么是 Docker Docker 是一个开源项目,Docker 项目的目标是实现轻量级的操作系统虚拟化解决方案. Docker 的基础是 Linux 容器(LXC ...
随机推荐
- EF6 Code First 博客学习记录
学习一下ef6的用法 这个学习过程时按照微软官网的流程模拟了一下 就按照下面的顺序来写吧 1.连接数据库 自动生成数据库 2.数据库迁移 3.地理位置以及同步/异步处理(空了再补) 4.完全自动迁移 ...
- 这个Map你肯定不知道,毕竟存在感确实太低了。
这是why哥的第 75 篇原创文章 从Dubbo的优雅停机说起 好吧,其实本文并不是讲 Dubbo 的优雅停机的. 只是我在 Dubbo 停机方法 DubboShutdownHook 类中,看到了这样 ...
- dpdk网卡收包分析
一个网络报文从网卡接收到被应用处理,中间主要需要经历两个阶段: 阶段一:网卡通过其DMA硬件将收到的报文写入到收包队列中(入队)阶段二:应用从收包队列中读取报文(出队)由于目前正在使用vpp/dpdk ...
- 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. ...
- Ceph对象主本损坏的修复方法
前言 问题的触发是在进行一个目录的查询的时候,osd就会挂掉,开始以为是osd操作超时了,后来发现每次访问这个对象都有问题 log [WRN] : slow request 60.793196 sec ...
- 如何在所有的mon的损坏情况下将数据恢复如初
本篇主题 在mon无法启动,或者所有的mon的数据盘都损坏的情况下,如何把所有的数据恢复如初 写本章的缘由 在ceph中国的群里有看到一个技术人员有提到,在一次意外机房掉电后,三台mon的系统盘同时损 ...
- 【Redis】利用 Redis 实现分布式锁
技术背景 首先我们需要先来了解下什么是分布式锁,以及为什么需要分布式锁. 对于这个问题,我们可以简单将锁分为两种--内存级锁以及分布式锁,内存级锁即我们在 Java 中的 synchronized 关 ...
- [head first 设计模式] 第一章 策略模式
[head first 设计模式] 第一章 策略模式 让我们先从一个简单的鸭子模拟器开始讲起. 假设有个简单的鸭子模拟器,游戏中会出现各种鸭子,此系统的原始设计如下,设计了一个鸭子超类,并让各种鸭子继 ...
- 还不懂java类加载机制的,建议看下这份阿里技术官总结的笔记!
类加载机制 把class文件加载到内存,并对数据进行校验,准备,解析,初始化,形成可以被虚拟机直接使用的字节码 类加载的时机(触发类的初始化) 使用new关键字实例化对象 读取一个类的静态代码块 使用 ...
- ABBYY FineReader 15 文档转换功能
我们平常工作的时候总会固定地只用某几个文档格式,有的人经常使用office,所以电脑内就没安装PDF阅读器,这个时候就需要文档转换器了,ABBYY FineReader 15 也能够帮助我们实现快速的 ...