首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Docker实践之01-入门介绍

Docker实践之01-入门介绍

作者头像
编程随笔
发布于 2019-08-14 08:03:59
发布于 2019-08-14 08:03:59
1K00
代码可运行
举报
文章被收录于专栏:后端开发随笔后端开发随笔
运行总次数:0
代码可运行

目录

一.Docker概述

Docker是利用Linux内核技术实现的操作系统层级的虚拟化

Docker三大组件:镜像,容器,仓库。

镜像

镜像是由多层存储所构成,下载也是一层层的去下载,并非单一文件。 镜像的基础是底层AUFS的支持.

容器

使用镜像运行的实例,镜像与容器的关系类比Java中类与对象的关系。

仓库

https://docs.docker.com/registry/ 介绍什么是Docker Registry及如何使用

1.常用的Docker镜像仓库公开服务

2.国内镜像加速器和镜像公开服务 国内云服务上提供的针对Docker Hub的镜像服务,被称为加速器。 使用加速器会直接从国内的地址下载Docker Hub的镜像,比直接从Docker Hub下载速度会提高很多。国内的加速器包括:

国内也有一些云服务商提供类似于Docker Hub的公开服务:

二.安装Docker

1.在CentOS上安装Docker

Docker CE支持64位版本CentOS 7,并且要求内核版本不低于3.10。 OS:CentOS Linux release 7.4.1708 (Core) 内核版本:Linux version 3.10.0-693.el7.x86_64

(1)在正式开始安装之前,先添加国内的yum源(直接使用官方源,下载非常慢):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ wget https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
$ mv docker-ce.repo /etc/yum.repos.d/
$ yum makecache fast #更新yum源缓存

(2)安装依赖:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2

(3)安装docker ce(docker社区版):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ sudo yum install docker-ce

2.在Ubuntu上安装Docker

使用APT安装:由于apt源使用HTTPS以确保软件下载过程中不被篡改。因此,我们首先需要添加使用HTTPS传输的软件包以及CA证书。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ sudo apt-get update
$ sudo apt-get install apt-transport-https ca-certificates curl software-properties-common

鉴于网络问题,使用国内源下载(如下使用中国科学技术大学的镜像源)。 (1)为了确认所下载软件包的合法性,需要添加软件源的GPG密钥。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

(2)向source.list中添加Docker软件源

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ sudo add-apt-repository "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

以上命令会添加稳定版本的Docker CE APT镜像源,如果需要最新或者测试版本的Docker CE,请将stable改为edge或者test。从Docker 17.06开始,edge、test版本的APT镜像源也会包含稳定版本的Docker。

(3)安装Docker CE

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io

特别地,如果使用上述方式无法安装Docker,可以使用如下方式安装。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
## 这样安装的docker版本可能比较低
$ sudo apt install docker.io

3.启动docker

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 将Docker加入开启启动
$ sudo systemctl enable docker
# 启动Docker
$ sudo systemctl start docker

4.建立Docker用户组

默认情况下,docker命令会使用Unix Socket与Docker引擎通信,只有root用户和docker组的用户才可以访问Docker引擎的Unix Socket。出于安全考虑,一般不会直接使用root用户,所以需要先建立docker组,并将当前用户添加到docker组中。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ sudo groupadd docker
$ sudo usermod -aG docker $USER

退出当前终端并重新登录,测试docker是否安装成功。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 查看Docker版本
$ docker --version
Docker version 18.09.4, build d14af54266

5.测试Docker是否安装成功

注意: 在执行如下测试之前,一定要退出当前终端重新登录,否则会提示当前用户没有连接Docker引擎的Unix Socket权限,切记!

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ docker run hello-world

在Ubuntu18.04 LTS桌面版上使用时,安装完毕Docker,并将当前用户添加到docker组之后需要重启机器才能使用Docker启动容器,否则会报权限错误:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.39/containers/create: dial unix /var/run/docker.sock: connect: permission denied.
See 'docker run --help'.

三.配置镜像加速器

国内从Docker Hub拉取镜像有时会非常慢,此时可以配置镜像加速器。 如下以配置163镜像加速器为例说明.

Ubuntu 14.04/Debian 7 Wheezy

对于使用upstart的系统而言,编辑/etc/default/docker文件,在其中的DOCKER_OPTS中添加获得的加速器配置: DOCKER_OPTS="--registry-mirror=http://hub-mirror.c.163.com"

重新启动服务。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ sudo service docker restart

Ubuntu 16.04+/Debian 8+/CentOS 7

对于使用systemd的系统,在/etc/docker/daemon.json中写入如下内容(如果文件不存在需要新建该文件)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
    "registry-mirrors": [
        "http://hub-mirror.c.163.com"
    ]
}

之后重新启动服务。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker

【参考】 https://github.com/yeasy/docker_practice Docker从入门到实践 https://www.gitbook.com/book/yeasy/docker_practice/details Docker — 从入门到实践 http://www.docker.org.cn/book/docker/what-is-docker-16.html docker手册 https://www.w3cschool.cn/docker/ docker教程 http://www.runoob.com/docker/docker-tutorial.html docker教程 https://docs.docker.com/install/linux/docker-ce/ubuntu/ Docker官方手册 https://www.jianshu.com/p/84b6fe281b4d docker更换为国内镜像

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-04-23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
深入理解Linux电源管理
程磊,某手机大厂系统开发工程师,阅码场荣誉总编辑,最大的爱好是钻研Linux内核基本原理。
Linux阅码场
2022/09/28
7.2K0
深入理解Linux电源管理
万字整理 | 深入理解工作队列
伟林,中年码农,从事过电信、手机、安全、芯片等行业,目前依旧从事Linux方向开发工作,个人爱好Linux相关知识分享,个人微博CSDN pwl999,欢迎大家关注! 1.1 worker_pool 1.1.1 normal worker_pool 1.1.2 unbound worker_pool 1.2 worker 1.2.1 worker处理work 1.2.2 worker_pool动态管理worker 1.2.3 cpu hotplug处理 1.3 workqueue 1.3.1 系统workq
刘盼
2022/08/26
1.9K0
万字整理 | 深入理解工作队列
workqueue
在之前的softirq中提到过,内核在中断的bottom half引入了softirq, tasklet, workqueue。 而softirq和tasklet只能用在中断上下文中,而且不可以睡眠。所以内核引入了workqueue,工作队列运行在进程上下文,同时可以睡眠。在以前版本的内核中workqueue的代码比较简单。在linux2.6.30代码量在1000行左右,而在linux3.18代码量在5000行左右。其中巨大的变化就是引入了Concurrency Managed Workqueue (cmwq)概念。不过本篇先学习以前版本的workqueue,因为它简单。在了解了简单版本的存在问题之后在学习cmwq就有更好的认识。
DragonKingZhu
2020/03/24
1.2K0
郭健: currency Managed Workqueue(CMWQ)概述
一种新的机制出现的原因往往是为了解决实际的问题,虽然linux kernel中已经提供了workqueue的机制,那么为何还要引入cmwq呢?也就是说:旧的workqueue机制存在什么样的问题?在新的cmwq又是如何解决这些问题的呢?它接口是如何呈现的呢(驱动工程师最关心这个了)?如何兼容旧的驱动呢?本文希望可以解开这些谜题。
Linux阅码场
2019/10/08
1.3K0
郭健: currency Managed Workqueue(CMWQ)概述
Linux进程描述符task_struct结构体详解--Linux进程的管理与调度(一)【转】
Linux内核通过一个被称为进程描述符的task_struct结构体来管理进程,这个结构体包含了一个进程所需的所有信息。它定义在include/linux/sched.h文件中。
233333
2018/09/14
2.5K0
Linux进程描述符task_struct结构体详解--Linux进程的管理与调度(一)【转】
Linux下2号进程的kthreadd--Linux进程的管理与调度(七)
内核初始化rest_init函数中,由进程 0 (swapper 进程)创建了两个process
233333
2018/09/14
2.5K0
深入理解Linux内核之内核线程(上)
在linux系统中, 我们接触最多的莫过于用户空间的任务,像用户线程或用户进程,因为他们太活跃了,也太耀眼了以至于我们感受不到内核线程的存在,但是内核线程却在背后默默地付出着,如内存回收,脏页回写,处理大量的软中断等,如果没有内核线程那么linux世界是那么的可怕!本文力求与完整介绍完内核线程的整个生命周期,如内核线程的创建、调度等等,当然本文还是主要从内存管理和进程调度两个维度来解析,且不会涉及到具体的内核线程如kswapd的实现,最后我们会以一个简单的内核模块来说明如何在驱动代码中来创建使用内核线程。
用户7244416
2021/08/06
2.6K0
Linux 进程管理
在内核层面,每个进程都是由task_struct 描述的,这个结构体非常大,可以粗略看下各主要内容:
一只小虾米
2023/03/09
10.3K0
Linux 进程管理
休眠与唤醒机制
当我们休眠时,如果想唤醒,则需要添加中断唤醒源,使得在休眠时,这些中断是设为开启的,当有中断来,则会退出唤醒,常见的中断源有按键,USB等。
开源519
2020/08/20
5.2K0
【Android休眠】之Android休眠机制
休眠,简而言之就是设备在不需要工作的时候把一些部件、外设关掉(掉电或让它进入低功耗模式)。
233333
2020/01/02
4.8K0
Linux唤醒抢占----Linux进程的管理与调度(二十三)
当在try_to_wake_up/wake_up_process和wake_up_new_task中唤醒进程时, 内核使用全局check_preempt_curr看看是否进程可以抢占当前进程可以抢占当前运行的进程. 请注意该过程不涉及核心调度器.
233333
2018/12/07
4.2K0
内核线程的创建和运行
通过 ps 命令可以看到红色方框标出的都是父进程为2号进程的内核线程,2号进程即蓝色方框标出的进程 kthreadd,1号进程是绿色方框标出的进程 init,它们的父进程号都是0。
刘盼
2021/07/05
1.9K2
内核线程的创建和运行
原来进程是这么创建的
大家好,我是程栩,一个专注于性能的大厂程序员,分享包括但不限于计算机体系结构、性能优化、云原生的知识。
程栩的性能优化笔记
2023/11/01
4400
原来进程是这么创建的
浅谈Linux dirty data配置
结合www.kernel.org给出的官方解释以及centos7代码的理解先对dirty相关内核参数做一个概述:
cdh
2020/05/25
4.1K0
Linux进程退出详解(do_exit)--Linux进程的管理与调度(十四)
exit是c语言的库函数,他最终调用_exit。在此之前,先清洗标准输出的缓存,调用用atexit注册的函数等, 在c语言的main函数中调用return就等价于调用exit。
233333
2018/10/09
6.5K0
Linux驱动实践:中断处理中的【工作队列】 workqueue 是什么鬼?
大家好,我是道哥,今天我为大伙儿解说的技术知识点是:【中断处理中的下半部分机制-工作队列】。
IOT物联网小镇
2021/12/28
2.1K0
Linux驱动实践:中断处理中的【工作队列】 workqueue 是什么鬼?
Linux电源管理-Suspend/Resume流程
根据上一节linux电源管理-概述可知,linux电源管理存在的几种方式,如何查看这几种方式,以及最后的如何睡眠唤醒等。
DragonKingZhu
2020/03/24
8.8K0
Linux电源管理-Suspend/Resume流程
Linux下进程的创建过程分析(_do_fork do_fork详解)--Linux进程的管理与调度(八)
Unix标准的复制进程的系统调用时fork(即分叉),但是Linux,BSD等操作系统并不止实现这一个,确切的说linux实现了三个,fork,vfork,clone(确切说vfork创造出来的是轻量级进程,也叫线程,是共享资源的进程)
233333
2018/10/09
2.8K0
Linux下进程的创建过程分析(_do_fork do_fork详解)--Linux进程的管理与调度(八)
Linux0号进程,1号进程,2号进程
本节我们将从linux启动的第一个进程说起,以及后面第一个进程是如何启动1号进程,然后启动2号进程。然后系统中所有的进程关系图做个简单的介绍
DragonKingZhu
2020/03/24
7.3K1
do_fork实现--下
昨天在do_fork实现–上中学习了do_fork创建的前半段,今天我们接着继续分析copy_Process函数
DragonKingZhu
2020/03/24
1.6K0
do_fork实现--下
相关推荐
深入理解Linux电源管理
更多 >
LV.7
这个人很懒,什么都没有留下~
目录
  • 目录
  • 一.Docker概述
    • 镜像
    • 容器
    • 仓库
  • 二.安装Docker
    • 1.在CentOS上安装Docker
    • 2.在Ubuntu上安装Docker
    • 3.启动docker
    • 4.建立Docker用户组
    • 5.测试Docker是否安装成功
  • 三.配置镜像加速器
    • Ubuntu 14.04/Debian 7 Wheezy
    • Ubuntu 16.04+/Debian 8+/CentOS 7
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档