docker (一)

news2024/9/22 1:28:11

1,什么是docker

首先我们可以好好的看看docker的那个可能的图标,你想象到了什么? ...

docker是一个开源的应用容器引擎,有Docker公司(前dotCloud公司)开发,基于Apache2.0开源授权协议发行。该引擎提供了一个轻量、快递的环境,能够运行开发者的程序,并方便高效的将程序从开发者的电脑部署到测试环境,然后再部署到生产环境。

docker的优点:

1,启动速度快(秒级),由于去除了管理程序的开销,docker容器拥有很高的性能,同一台宿主机可以运行更多的容器,有效的利用了资源

2,能够为开发,测试和部署提供一致的环境,避免了在开发或测试时一切正常,但在生成环境中却不能运行的问题。

3,鼓励面向服务架构,Docker 推荐单个容器只运行一个应 用程序或进程,这样就形成了一个分布式的应用程序模型

docker的用途

1,提供一次性的环境。比如,本地测试他人的软件、持续集成的时候提供单元测试和构建的2,环境提供弹性的云服务。因为 Docker 容器可以随开随关,很适合动态扩容和缩容组建微3,服务架构。通过多个容器,一台机器可以跑多个服务,因此在本机就可以模拟出微服务架构

docker与虚拟机的区别:

1,VM(VMware)在宿主机器、宿主机器操作系统的基础上创建虚拟层、虚拟化的操作系统、虚拟化的仓库,然后再安装应用

2,Docker在宿主机的操作系统上创建Docker引擎,直接通过宿主机的操作系统调用硬件资源,而不是虚拟化操作系统和硬件资源,所以占用资源更少,性能更高。

3,对比图

特性dockervm
启动速度秒级分钟级
硬盘使用MBGB
性能接近原生弱与原生
系统支持数量单机可支持数百甚至数千几十个

2,docker的核心组件

1)Docker客户端和服务器,也称为Docker引擎
2)Docker镜像
3)Registry
4)Docker容器

docker架构图:

 docker引擎

docker是客户端/服务器架构的程序,docker客户端只需向docker服务器或守护进程发送请求,守护进程或服务器完成后返回结果,docker的守护进程有时也称作为docker引擎。用户可以在同一台宿主机上运行Dokcer守护进程和客户端,也可以从本地的docker客户端连接到另一台宿主机上的docker引擎。示意图:

docker镜像

镜像是docker容器的基石,用户基于镜像来运行容器的,镜像在docker生命周期中属于“构建阶段”,镜像基于联合文件系统的一种层式结构,由一系列的命令构建出来。可以将镜像理解为容器的“源代码”。镜像体积小,便于分享,存储,更新。

 Registry

Registry即仓库,Registry分为公共和私有的两种。docker公司运营的公共Registry是docker hub。用户可以自己注册账号,在其中保存自己的镜像。也可以搭建私有的仓库。

容器

镜像处在docker生命周期的“构建”阶段,容器则处在“运行”阶段,如果将镜像理解为一个“类”,则容器可以理解为这个“类”的“运行时实例”,可以被创建,启动,停止,删除。
总结起来容器就是:一个镜像格式,一系列标准操作,一个执行环境。

3,docker的安装

3.1,安装的条件

安装docker时需要一些基本的前提条件:

  • 运行64位cpu架构的机器(x86_64, amd64),不支持32位机器
  • 运行linux3.8或更高的内核(可以使用uname -a 命令查看系统内核)
  • 内核必须支持一种合适的存储驱动:Device Messager,AUFS,vfs等,默认为Device Messager。
  • 内核支持cgroup和命名空间

注意:cgroups,其名称源自控制组群(control groups)的简写,是Linux内核的一个功能,用来限制、控制与分离一个进程组的资源(如CPU、内存、磁盘输入输出等)

3.2,Ubuntu安装docker

1.卸载可能存在的旧版本

apt-get remove docker docker-engine docker-ce docker.io

2.更新apt包索引

apt-get update

3.安装以下包以使apt可以通过HTTPS使用存储库(repository)

apt-get install -y apt-transport-https ca-certificates curl software-properties-common

4.添加Docker官方的GPG密钥

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

成功后应该显示OK

5.设置stable存储库

add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

6.再更新一下apt包索引

apt-get update

7.安装最新版本的Docker CE

apt-get install -y docker-ce

8.验证
8.1查看docker服务是否启动

systemctl status docker

或如下命令

service docker status

8.2若未启动,则启动docker服务

systemctl start docker 或如下命令service docker start

以上在线安装方式,通过连接到官网可以安装最新的版本(目前的版本为19.04),也可以使用下面的方式从软件仓库直接安装

apt-get update && apt-get install  -y docker.io

这种方式安装的优点是简单,缺点是版本较低(目前是18.09)

3.3,centos安装docker

1)root账户登录,查看内核版本如下

[root@localhost ~]# uname -a
Linux localhost.localdomain 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 
x86_64 x86_64 x86_64 GNU/Linux
  1. yum包更新到最新
[root@localhost ~]# yum update
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
 * base: centos.ustc.edu.cn
 ......

注:如果不执行更新,获取的docker版本太旧

3)安装yum-util, 该包提供yum-config-manager功能

yum install -y yum-utils
  1. 设置docker源
yum-config-manager --add-repo http://download.docker.com/linux/centos/docker-ce.repo(中央仓库)
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo(阿里仓库)

可以任选其一

5) 安装docker, yum install docker-ce-版本号

[root@localhost ~]# yum install docker-ce-18.06.3.ce
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
正在解决依赖关系
--> 正在检查事务
---> 软件包 docker-ce.x86_64.0.18.06.3.ce-3.el7 将被 安装

6)查看docker版本号,验证

[root@localhost ~]# docker version
Client:
 Version:           18.06.3-ce
 API version:       1.38
 Go version:        go1.10.3
 Git commit:        d7080c1
 Built:             Wed Feb 20 02:26:51 2019
 OS/Arch:           linux/amd64
 Experimental:      false

7)启动docker

systemctl start docker
  1. 设置开机启动
systemctl enable docker

3.4,配置镜像加速器

默认的情况下docker会从docker hub中查找或下载镜像,在国内会比较慢。可以使用阿里的镜像加速器来提高速度。
具体操作步骤如下:
1)获取加速器地址
首先需要有一个淘宝或支付宝的账号,登录阿里云 https://www.aliyun.com/。

点击“控制台”,进入如下界面: 

点击容器镜像服务,就可以获取镜像加速器地址,操作如下图所示

 

2)配置docker
在/etc/docker目录下创建daemon.json配置文件

vim /etc/docker/daemon.json

具体配置文件内容如下:

{
    "registry-mirrors":["你的阿里云专属加速器地址"]
}

3)重新加载daemon

systemctl daemon-reload

4)重启docker

systemctl restart docker

4,镜像的常用操作

4.1,镜像搜索

docker search 镜像名称

示例:

docker search rabbitmq

4.2,镜像下载

docker pull 镜像名称:标签

如果未指定标签,则默认我latest

示例:

# 未指定标签
docker pull ubuntu

#指定标签
docker pull ubuntu:16.04

4.3,查看宿主机中的镜像

docker images

4.4,删除镜像

docker rmi 镜像id或名称

 如果提示镜像被使用,需要先停止某个ID的容器,那么要先删除容器再删除镜像,如需强行删除可以使用-f参数,例如:docker rmi -f ubuntu:16.04

5,容器的常用命令

镜像在docker生命周期中的构建阶段,容器则属于运行阶段,可以将容易理解为镜像的一个运行实例。

5.1,运行容器

首先让我们来尝试启动第一个docker容器,docker run命令提供了docker容器的创建到启动的功能。使用该命令创建和启动容器也是docker的推荐做法。

#创建并启动一个ubuntu容器
sudo docker run -it ubuntu:18.04 /bin/bash

使用该命令时,如果镜像还没有下载,则docker会首先下载该镜像,然后执行创建并启动容器。具体参数说明如下:

  • -i 开启容器中的STDIN(标准输入流),能接受命令,可以理解为已交互模式启动容器
  • -t 为容器分配一个tty终端,即:分配一个命令行窗口, 有了这两个参数新创建的容器才能有一个交互式shell。
  • /bin/bash 参数告诉docker在容器中启动一个bash shell
  • 可以通过--name 参数为容器命名
  • 如果指定 -d 参数,则说明容器以守护进程形式启动
  • 可以使用 docker help run查看更详细的参数说明
  • 在容器中使用,“cat /etc/issue”可以查看到运行中的容器其实为ubuntu系统。

-i -t参数是我们创建一个交互式容器的最基本的参数,需说明的是所创建的容器是交互式的,而不是一个运行后台服务的容器。

运行上面的命令,docker会为我们创建一个ubuntu的容器,并自动以root身份进入容器,如下图:

 图中的7b8b196818d5为容器的编号。

创建容器还可以使用docker create命令,如:

docker create -it ubuntu:latest

 注意:参数与docker run命令相同,与docker run命令不同的是docker create命令创建的容器不会自动启动。

5.2,使用容器

这是一个精简但完整的ubuntu系统,例如执行以下的命令:

root@7b8b196818d5:/# hostname
7b8b196818d5

root@7b8b196818d5:/# ls
bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
boot  etc  lib   media  opt  root  sbin  sys  usr

但当你收入ip,或ifconfig命令时会发现,无法找到命令:

root@7b8b196818d5:/# ip a
bash: ip: command not found

root@7b8b196818d5:/# ifconfig
bash: ifconfig: command not found

root@7b8b196818d5:/# whereis ifconfig
ifconfig:

#查看环境变量
root@7b8b196818d5:/# env
.....
HOSTNAME=7b8b196818d5
PWD=/
HOME=/root
TERM=xterm
SHLVL=1
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
_=/usr/bin/env
OLDPWD=/etc/apt

因为是这些命令还都没有安装,ubuntu镜像是精简版的系统,如果需要使用这些命令需要另外安装net-tools,包括vi,vim等也是需要另外安装的。

5.3,查看运行的容器

保持刚才运行的容器不要退出,另外打开一个命令终端,输入下列命令:

lisen@ubuntu:~$ sudo docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
7b8b196818d5        ubuntu:18.04        "/bin/bash"         2 hours ago         Up 2 hours                              cranky_lewin

docker ps命令可以查看运行中的容器信息,包括id,镜像,名称等。

注:为什么要保持刚才运行的ubuntu容器不退出?
原因是上面创建的是普通的交互式容器,不是运行于后台的服务容器,如果推出则容器自动停止运行。
容器退出后可以使用 docker ps -a 命令查看到,-a参数表示查看所有容器,包括已停止的。

5.4,容器的退出

退出时如果想继续运行容器:按顺序按【ctrl+p】,【ctrl+q】
如果不想继续运行:按【ctrl+d】或输入exit

如果不是运行于后台的服务容器,则在容器退出后回自动停止运行,此时通过docker ps命令查看不到容器信息,需要使用docker ps -a命令查看。

5.5,容器的启动与停止

1)停止容器

root@ubuntu:/# docker stop 7b8b
7b8b

2)启动容器

root@ubuntu:/# docker start 7b8b
7b8b

注:7b8b为容器id,容器id可以不输入完全,但需要能唯一确定一个容器。

5.6,复制文件

复制文件可以分为从容器到宿主机的复制,和从宿主机到容器的复制
1)从容器到宿主机的复制, 容器 -> 宿主机
命令格式:docker cp 容器名或ID:要拷贝的文件在容器里面的路径 要拷贝到宿主机的相应路径
示例:将test.js从容器里面拷到宿主机的/opt路径下面

docker cp testtomcat:/usr/local/tomcat/webapps/test/js/test.js  /opt

2)从宿主机到容器的复制, 宿主机 -> 容器
命令格式:docker cp 要拷贝的文件路径 容器名:要拷贝到容器里面对应的路径
示例:如果宿主机已经实现了换源,则可以通过如下命令将宿主机的配置文件拷到容器中,实现ubuntu容器换源

docker cp /etc/apt/sources.list  ubuntu:/etc/apt/

5.7,进入容器

命令格式:docker exec -it 容器ID/容器NAME /bin/bash
示例:

root@ubuntu:/# docker exec -it 7b8b /bin/bash
root@7b8b196818d5:/#

注意:只能进入运行中的容器。

5.8,查看容器信息

查看容器信息可以进入容器后,使用命令查看,例如:hostname,env等,(如果运行ifconfig,ip addr等命令,则需要先安装),可以在宿主机通过如下格式的命令查看:

root@ubuntu:/# docker exec 7b8b hostname
7b8b196818d5

root@ubuntu:/# docker exec 7b8b env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=7b8b196818d5
HOME=/root

推荐使用docker inspect命令查看容器信息,使用方式如下所示

root@ubuntu:/# docker inspect 7b8b
[
    {
        "Id": "7b8b196818d5d53af160847462c6ab68987d938bb68cd8ea982b229fee76268c",
        "Created": "2020-01-31T03:54:16.467988209Z",
        "Path": "/bin/bash",
 ... ...

7b8b为容器ID

该命令以json的方式返回容器的信息,内容比较多,可以只查询一种一部分,示例如下:

root@ubuntu:/# docker inspect -f {{.Config.Hostname}} 7b8b
7b8b196818d5

注:inspect使用的是go语言模板,详细资料请参考Go语言模板。

5.9,容器的删除

命令格式:docker rm 容器ID,(与删除镜像的命令很像,只少个i,镜像删除docker rmi 镜像名)

参数:

  • -f, --force=false 是否强行终止并删除一个运行中的容器
  • -1, --link=false :删除容器的连接 ,但保留容器
  • -v, --volumes=false :删除容器挂载的数据卷

6,删除容器,docker

6.1,如何卸载原先安装的docker

1.打开Terminal,执行下面命令:

sudo apt-get purge docker-ce

2.删除Docker安装目录

sudo rm -rf /var/lib/docker

3.验证是否删除成功

docker info
bash: /usr/bin/docker: No such file or directory

我们可以看到已经无法找到 docker 安装目录,证明 卸载成功

6.2,关于删除容器

方法一:
#显示所有的容器,过滤出Exited状态的容器,取出这些容器的ID,

sudo docker ps -a|grep Exited|awk '{print $1}'

#查询所有的容器,过滤出Exited状态的容器,列出容器ID,删除这些容器

sudo docker rm docker ps -a|grep Exited|awk '{print $1}'

方法二:
#删除所有未运行的容器(已经运行的删除不了,未运行的就一起被删除了)

sudo docker rm $(sudo docker ps -a -q)

方法三:
#根据容器的状态,删除Exited状态的容器

sudo docker rm $(sudo docker ps -qf status=exited)

方法四:
#Docker 1.13版本以后,可以使用 docker containers prune 命令,删除孤立的容器。

sudo docker container prune (推荐)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1546105.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

碳实践|企业组织碳排放源识别方法、案例分析,及注意事项

在上一章中讲到“界、源、算、质、查”五步法实现企业组织碳的完整核算流程,本章将针对其中的“源”- “识别排放源”这一步骤来展开,主要分析其识别方法、实操案例,并列举注意事项。 企业识别碳排放源是指在组织边界内找到产生碳排放的设施,…

算法沉淀 —— 动态规划篇(路径问题)

算法沉淀 —— 动态规划篇(路径问题) 前言一、不同路径1二、珠宝的最高价值三、下降路径最小和四、地下城游戏 前言 几乎所有的动态规划问题大致可分为以下5个步骤,后续所有问题分析都将基于此 1.、状态表示:通常状态表示分为以下…

登录校验解决方案JWT

目录 🎗️1.JWT介绍 🎞️2.应用场景 🎟️3.结构组成 🎫4.JWT优点 🎠5.封装成通用方法 🛝6.JWT自动刷新 1.JWT介绍 官网:JWT官网 JSON Web Token (JWT) 是一个开放标准,它…

C语言:编译与链接

目录 前言1. 翻译环境与运行环境2.翻译环境:预编译编译汇编链接3. 运行环境 前言 我们写一个程序,例如test.c或是test.h这些源文件,头文件,事实上这些代码都是文本文件,但是计算机能够看得懂,并且直接执行…

C#代码混淆器 ipaguard 的优势与使用

摘要 本文探讨了iOS开发的优势、费用以及软件开发方面的相关内容。通过分析iOS开发所采用的编程语言、开发环境、用户界面设计、应用审核流程以及应用领域等方面,展示了iOS开发的诸多优势和特点。虽然iOS开发具有高用户体验、统一的硬件和软件环境、良好的市场份额等…

uni-app中web-view的使用

1. uni-app中web-view的使用 uni-app中的web-view是一个 web 浏览器组件,可以用来承载网页的容器,uni-app开发的app与web-view实现交互的方式相关简单,应用通过属性message绑定触发事件,然后在web-view的网页向应用 postMessage 触…

博途PLC 系统时间读取写入功能块

系统时间数据类型属于DTL数据类型,DTL本身是结构变量,有时、分、秒、纳秒。利用纳秒寄存器可以实现伪随机数发生器,伪随机数发生器详细代码介绍请参考下面文章链接: 1、伪随机数 https://rxxw-control.blog.csdn.net/article/details/122157365https://rxxw-control.blog…

电脑桌面记事本便签软件,记事本软件哪个好

在这个快节奏的生活中,我们每个人都需要一个得力的助手来帮助我们管理琐碎的事务。作为一名忙碌的职场人士,你是否经常因为忘记重要事项而感到焦虑?是否因为繁杂的待办事项而感到无从下手?今天,我要向你推荐的这款电脑…

Git相关命令(一)

一、简介 Git 是一个开源的分布式版本控制系统。 当然, git 不会傻傻的把你的每一个版本完整的存储下来,他仅仅会存储每次修改的位置和内容(可持久化),每一次 commit 可以理解为产生一个版本,接下来的版本…

第二十章 javascript使用

文章目录 1. JS基中基1. 注释2. 弹窗3. 引入JS代码4. JS的基本数据类型5. 变量6. 字符串的操作 2. 条件分支3. 循环4. JS中的函数1. 闭包函数(自运行函数) 5. 定时器 1. JS基中基 1. 注释 HTML的注释 <!– –>JS的注释 // 单行注释 /* */多行注释 2. 弹窗 alert(“我…

C语言例4-18:从键盘输入平面上一个点的坐标值,判断其所在的象限。

代码如下&#xff1a; //从键盘输入平面上一个点的坐标值&#xff0c;判断其所在的象限。 #include<stdio.h> int main(void) {float x,y;printf("输入平面上一个点的坐标值\n");printf("x");scanf("%f",&x); //从键盘输入平面上一个…

使用npm i进行admin依赖安装的时候出现问题

提示&#xff1a; npm ERR! code CERT_HAS_EXPIRED npm ERR! errno CERT_HAS_EXPIRED npm ERR! request to https://registry.npm.taobao.org/string-width failed, reason: certificate has expired 切换淘宝源到http或者更换其他国内镜像 npm config set registry http:/…

第十三届蓝桥杯省赛真题 Java 研究生 组【原卷】

文章目录 发现宝藏【考生须知】试题 A: 排列字母试题 B: 灭鼠先锋试题 C: 质因数个数试题 D: 数位排序试题 E: 蜂巢试题 F : \mathrm{F}: F: 爬树的甲壳虫试题 G: 重新排序试题 H \mathrm{H} H : 技能升级试题 I: 最优清零方案试题 J : \mathrm{J}: J: 推导部分和 发现宝藏 …

赵本山:这眼睛不好他也嫉妒,潘长江:上看台是好事不过我这腿上不去!

赵本山&#xff1a;这眼睛不好他也嫉妒&#xff0c;潘长江&#xff1a;上看台是好事不过我这腿上不去&#xff01; ——小品《大观灯》&#xff08;中4&#xff09;的台词 &#xff08;接上&#xff09; 赵本山&#xff08;瞎子&#xff09;&#xff1a;你说这咋又挪这来了你说…

Linux课程____shell脚本应用

一、认识shell 常用解释器 Bash , ksh , csh 登陆后默认使用shell&#xff0c;一般为/bin/bash&#xff0c;不同的指令&#xff0c;运行的环境也不同 二、 编写简单脚本并使用 # vim /frist.sh //编写脚本文件&#xff0c;简单内容 #&#xff01;/bin/bash …

日常刷题之77-组合

题目 给定两个整数 n 和 k&#xff0c;返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案 提示&#xff1a;假设 n5,k3 就是需要组合出来&#xff0c;长度3且内容数据是在[1,n]这个区间内的所有可能得组合 同时一个组合里面内个数字只能出现一次&#…

买卖股票的最佳时机1,2,3

买卖股票的最佳时机 力扣题目链接 dp[i][0] 表示第i天持有股票所得最多现金 定义二维数组 两列 &#xff1a;0代表持有股票 1代表不持有股票 行代表第几天 dp[i][0] max(dp[i - 1][0], -prices[i]); 第i天持有股票&#xff1a;两种情况 第一种是昨天就已经持有股票了 所…

电脑桌面记事本便签软件,好用的桌面记事本

在快节奏的生活中&#xff0c;我们常常需要记录一些重要事项&#xff0c;以便随时查看和提醒自己。然而&#xff0c;传统的便签容易丢失、难以管理&#xff0c;让我们感到困扰。在这种情况下&#xff0c;一款好用的电脑桌面便签软件就显得尤为重要。今天&#xff0c;小编为大家…

BIOS中英文对照表

Main菜单&#xff1a;这里记录着电脑的主要信息&#xff0c;比如时间和日期&#xff0c;软盘现在已经不再使用&#xff0c;下面的驱动器中会记录电脑连接的硬盘信息&#xff0c;扩展内存就是电脑的物理内存大小&#xff0c;1024KB1MB&#xff0c;1024MB1GB。 Advanced高级设置&…

【PCL】mac下安装PCL的安装与配置

【PCL】mac下安装PCL的安装与配置 PCL PCL官方文档 PCL&#xff08;Point Cloud Library&#xff09;是在吸收了前人点云相关研究基础上建立起来的大型跨平台开源C编程库&#xff0c;它实现了大量点云相关的通用算法和高效数据结构&#xff0c;涉及到点云获取、滤波、分割、配…