文章目录

  • Docker 的优点
  • 一、Docker 架构
    • 1.1:容器与虚拟机的区别
  • 二、docker安装:
    • 2.1:镜像基础命令操作
  • 三、Docker基础操作

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版),我们用社区版就可以了。

Docker 的优点

Docker 是一个用于开发,交付和运行应用程序的开放平台。Docker 使您能够将应用程序与基础架构分开,从而可以快速交付软件。借助 Docker,您可以与管理应用程序相同的方式来管理基础架构。通过利用 Docker 的方法来快速交付,测试和部署代码,您可以大大减少编写代码和在生产环境中运行代码之间的延迟。

1、快速,一致地交付您的应用程序
Docker 允许开发人员使用您提供的应用程序或服务的本地容器在标准化环境中工作,从而简化了开发的生命周期。

容器非常适合持续集成和持续交付(CI / CD)工作流程,请考虑以下示例方案:

您的开发人员在本地编写代码,并使用 Docker 容器与同事共享他们的工作。
他们使用 Docker 将其应用程序推送到测试环境中,并执行自动或手动测试。
当开发人员发现错误时,他们可以在开发环境中对其进行修复,然后将其重新部署到测试环境中,以进行测试和验证。
测试完成后,将修补程序推送给生产环境,就像将更新的镜像推送到生产环境一样简单。

2、响应式部署和扩展
Docker 是基于容器的平台,允许高度可移植的工作负载。Docker 容器可以在开发人员的本机上,数据中心的物理或虚拟机上,云服务上或混合环境中运行。

Docker 的可移植性和轻量级的特性,还可以使您轻松地完成动态管理的工作负担,并根据业务需求指示,实时扩展或拆除应用程序和服务。

3、在同一硬件上运行更多工作负载
Docker 轻巧快速。它为基于虚拟机管理程序的虚拟机提供了可行、经济、高效的替代方案,因此您可以利用更多的计算能力来实现业务目标。Docker 非常适合于高密度环境以及中小型部署,而您可以用更少的资源做更多的事情。

一、Docker 架构

Docker 包括三个基本概念:

●镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。

●容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。

●仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。
Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。

Docker 容器通过 Docker 镜像来创建。

容器与镜像的关系类似于面向对象编程中的对象与类。

1.1:容器与虚拟机的区别

二、docker安装:

1.安装依赖包

[root@localhost ~]# yum -y install yum-utils device-mapper-persistent-data lvm2
yum-utils 提供了yum-config-manager

●Device mapper:存储驱动程序需要device-mapper-persistent-data lvm2

●Device mapper是Liunx2.6内核中支持逻辑卷管理的通用设备映射机制,它为实现用于存储资源管理的块设备驱动提供了一个高度模块化的内核架构

2.设置阿里云镜像资源,下载一个docker-ce

[root@localhost ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3.安装docker-ce,并启动

[root@localhost ~]# yum -y install docker-ce
[root@localhost ~]# systemctl start docker.service    ##开启docker

4.配置镜像加速,用浏览器打开阿里云官网

5.回到虚拟机在/etc目录下配置镜像加速,并重新加载

[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl restart docker

6.镜像加速
使用刚才在阿里云官网的加速,每个人都有不同的

7.配置网络优化

[root@localhost docker]# vim /etc/sysctl.conf   ##开启路由功能
net.ipv4.ip_forward=1       ##底行加入
[root@localhost docker]# sysctl -p
net.ipv4.ip_forward = 1
[root@localhost docker]# service network restart    ##重启网络功能
[root@localhost docker]# systemctl restart docker    ##重启服务

到此docker就安装完成了

2.1:镜像基础命令操作

查看版本

[root@localhost docker]# docker version
Client: Docker Engine - CommunityVersion:           19.03.13API version:       1.40Go version:        go1.13.15Git commit:        4484c46d9dBuilt:             Wed Sep 16 17:03:45 2020OS/Arch:           linux/amd64Experimental:      false
省略....

搜索nginx镜像

[root@localhost docker]# docker search nginx
NAME                               DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
nginx                              Official build of Nginx.                        13757               [OK]
jwilder/nginx-proxy                Automated Nginx reverse proxy for docker con…   1876                                    [OK]
richarvey/nginx-php-fpm            Container running Nginx + PHP-FPM capable of…   787                                     [OK]
linuxserver/nginx                  An Nginx container, brought to you by LinuxS…   128

下载nginx镜像

[root@docker ~]# docker pull nginx
在下载的时候是分成若干个部分进行下载的,AUFS(联合文件系统)
Using default tag: latest
latest: Pulling from library/nginx
d121f8d1c412: Pull complete
ebd81fc8c071: Pull complete
655316c160af: Pull complete
d15953c0e0f8: Pull complete
2ee525c5c3cc: Pull complete
Digest: sha256:c628b67d21744fce822d22fdcc0389f6bd763daac23a6b77147d0712ea7102d0
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
下载后存放在/var/lib/docker中

查看下载的镜像列表

[root@localhost docker]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              7e4d58f0e5f3        9 days ago          133MB
其中TAG为标签,在准备私有仓库的时候有用,ID为镜像id号

查看镜像信息

[root@docker ~]# docker inspect 7e4d58f0e5f3(ID号)或者
[root@localhost ~]# docker inspect nginx:latest

添加新标签
复制了一份,只是标签不同

[root@localhost ~]# docker tag nginx:latest nginx:web
[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              7e4d58f0e5f3        9 days ago          133MB
nginx               web                 7e4d58f0e5f3        9 days ago          133MB
busybox             latest              6858809bf669        11 days ago         1.23MB

删除镜像
删除镜像可以使用标签,也可以使用ID,在使用ID的时候,如果有多个标签不同的相同镜像,则无法删除,关于镜像删除,只要镜像在容器中就不可以被删除,不管容器是运行还是停止状态

[root@docker ~]# docker rmi nginx:latest
Untagged: nginx:latest
[root@docker ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               web                 7e4d58f0e5f3        8 days ago          133MB
[root@docker ~]# docker pull nginx
[root@docker ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              7e4d58f0e5f3        8 days ago          133MB
nginx               web                 7e4d58f0e5f3        8 days ago          133MB
使用ID删除时报错
[root@docker ~]# docker rmi 7e4d58f0e5f3
Error response from daemon: conflict: unable to delete 7e4d58f0e5f3 (must be forced) - image is referenced in multiple repositories

存出镜像
存出镜像nginx:latest到当前目录下名为nginx

[root@localhost ~]# docker save -o /opt/nginx nginx:latest
[root@localhost ~]# ls /opt
containerd  nginx  rh
[root@localhost ~]# ll -h /opt
总用量 131M
drwx--x--x. 4 root root   28 9月  20 12:23 containerd
-rw-------. 1 root root 131M 9月  20 13:32 nginx
drwxr-xr-x. 2 root root    6 10月 31 2018 rh

载入镜像

[root@localhost ~]# docker load < /opt/nginx
07cab4339852: Loading layer  72.49MB/72.49MB
f431d0917d41: Loading layer  64.31MB/64.31MB
60c688e8765e: Loading layer  3.072kB/3.072kB
eabfa4cd2d12: Loading layer  4.096kB/4.096kB
908cf8238301: Loading layer  3.584kB/3.584kB
Loaded image: nginx:latest
[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              7e4d58f0e5f3        9 days ago          133MB
busybox             latest              6858809bf669        11 days ago

三、Docker基础操作

创建容器

[root@localhost ~]# docker create -it nginx:latest /bin/bash
eecc6eff0159101940b2029d83877227af216e4319496d5278e5fe9154e59095

查看容器状态

[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
eecc6eff0159        nginx:latest        "/docker-entrypoint.…"   9 seconds ago       Created                                 sleepy_rhodes

启动容器

[root@localhost ~]# docker start eecc6eff0159
eecc6eff0159
[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS               NAMES
eecc6eff0159        nginx:latest        "/docker-entrypoint.…"   About a minute ago   Up 2 seconds        80/tcp              sleepy_rhodes

查看网卡信息

●在创建容器之后会有一个docker0的网卡,供docker连接

[root@localhost ~]# ifconfig
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255inet6 fe80::42:7eff:fe0b:9c27  prefixlen 64  scopeid 0x20<link>ether 02:42:7e:0b:9c:27  txqueuelen 0  (Ethernet)RX packets 0  bytes 0 (0.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 13  bytes 1784 (1.7 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

在上面的操作中,启动容器的步骤有三个,下载镜像->创建容器->开启容器

[root@docker ~]# docker search centos7
paigeeworld/centos7[root@docker ~]# dcoker pull paigeeworld/centos7
[root@docker ~]# docker create -it paigeeworld/centos7 /bin/bash
[root@docker ~]# docker start 44d19a107964

使用run命令可涵盖这三个步骤

-c 后跟指令查看根目录

[root@localhost ~]# docker run centos:7 /bin/bash -c ls /
anaconda-post.log
bin
dev
etc
home
lib
lib64
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var

查看状态,可看到状态为退出,执行完任务后就自动退出了,释放了资源

[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES
673259bb2525        centos:7            "/bin/bash -c ls /"      32 seconds ago      Exited (0) 31 seconds ago                       cranky_northcutt

如果希望一直在后台运行的话
run -d表示在后台运行并打印ID号,

[root@localhost ~]# docker run  -d centos:7 /bin/bash -c "while true;do echo hello;done"
b6a6d7681d0dbeca81916d43ea2b6bb56cb221e7707e78b010d1c13f25c3368c
[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES
b6a6d7681d0d        centos:7            "/bin/bash -c 'while…"   10 seconds ago      Up 9 seconds                                    angry_rhodes

终止镜像运行

[root@localhost ~]# docker stop b6a6d7681d0d
b6a6d7681d0d
[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                       PORTS               NAMES
b6a6d7681d0d        centos:7            "/bin/bash -c 'while…"   2 minutes ago       Exited (137) 4 seconds ago                       angry_rhodes

进入容器

[root@localhost ~]# docker ps -a           容器一定要是up状态
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                       PORTS               NAMES
f9ad5d33ae4f        centos:7            "/bin/bash"              26 seconds ago      Up 1 second                                      boring_hoover
b6a6d7681d0d        centos:7            "/bin/bash -c 'while…"   4 minutes ago       Exited (137) 2 minutes ago                       angry_rhodes
673259bb2525        centos:7            "/bin/bash -c ls /"      8 minutes ago       Exited (0) 8 minutes ago                         cranky_northcutt
b89b7044bbd6        nginx:latest        "/docker-entrypoint.…"   49 minutes ago      Exited (0) 20 minutes ago                        fervent_ritchie
[root@localhost ~]# docker exec -it f9ad5d33ae4f  /bin/bash
[root@f9ad5d33ae4f /]#
[root@f9ad5d33ae4f /]# exit
exit
[root@localhost ~]#
exit退出

容器导出

[root@localhost ~]# docker export b89b7044bbd6 > /opt/nginx_c
[root@localhost ~]# cd /opt
[root@localhost opt]# ls
containerd  nginx  nginx_c  rh

容器导入(会生成镜像,而不会创建容器)

[root@localhost opt]# cat nginx_c |docker import - nginx:abc
sha256:cad91aaab6a8ebc3ff50e52f181df8283ccd151b95cb4fa84ea209e61755e0c4
[root@localhost opt]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               abc                 cad91aaab6a8        16 seconds ago      131MB
nginx               latest              7e4d58f0e5f3        10 days ago         133MB
busybox             latest              6858809bf669        12 days ago         1.23MB
centos              7                   7e6257c9f8d8        5 weeks ago         203MB

删除容器
删除容器不能删除正在运行的容器,要先终止运行stop

[root@docker ~]# docker rm a3d5f5a4247a

批量删除容器

[root@localhost opt]# docker ps -a | awk '{print "docker rm "$1}' | bash
Error: No such container: CONTAINER
Error response from daemon: You cannot remove a running container f9ad5d33ae4f9bf2f7bd72cb55af9856084c3455e7facf550e7e58072bef977f. Stop the container before attempting removal or force remove
b6a6d7681d0d
673259bb2525
b89b7044bbd6
[root@localhost opt]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
f9ad5d33ae4f        centos:7            "/bin/bash"         31 minutes ago      Up 31 minutes                           boring_hoover
删除了stop状态的容器,up状态的不能被删除

Docker基本管理:上篇(Docker理论概述和基础命令)相关推荐

  1. 小白菜 docker 基础命令整理

    以下操作的系统环境为 centos. 全程纯干饭,无水分. 1. 启动 docker systemctl start docker 2. 停止docker systemctl stop docker ...

  2. Docker 私有仓库部署和管理 | Harbor 概述 - 核心组件 - 架构拓扑 | Harbor 构建 Docker 私有仓库实战(理论+实操,超详细!)

    文章目录 一.Docker Harbor 概述 1.Harbor 简介 2.Harbor 的优势 二.Harbor 的核心组件 1.Proxy 2.Registry 3.Core services 4 ...

  3. Docker基本理论概述

    < Docker基本理论概述 > 关于Docker 1.为什么要使用 Docker ? 项目从开发到上线,从操作系统,到运行环境,再到应用的详细配置.作为开发工程师与运维工程师之间的协作, ...

  4. Docker小白到实战之开篇概述

    前言 "不对啊,在我这运行很正常啊",这句话小伙伴们在前几年应该听得很多:每次一到安装.部署时总有一堆问题,毕竟操作系统版本.软件环境.硬件资源.网络等因素在作怪,此时难免会导致开 ...

  5. Docker最全教程——从理论到实战(六)

    Docker最全教程--从理论到实战(六) 原文:Docker最全教程--从理论到实战(六) 托管到腾讯云容器服务 托管到腾讯云容器服务,我们的公众号"magiccodes"已经发 ...

  6. Docker最全教程——从理论到实战(一)

    Docker最全教程--从理论到实战(一) 目录 前言 随着生产力的发展尤其是弹性架构的广泛应用(比如微服务),许多一流开发者都将应用托管到了应用容器上,比如Google.微软.亚马逊.腾讯.阿里.京 ...

  7. Docker最全教程——从理论到实战(五)

    在笔者参加腾讯容器服务技术交流会时,我们了解到了藏区牧民的目前的生活艰辛状况,因此除了在同事朋友之间推荐其土特产之外,我们也在此进行初步分享,希望略尽绵薄之力,能够帮助到他们: 货真价实.确保都是37 ...

  8. Docker最全教程——从理论到实战(二)

    容器是应用走向云端之后必然的发展趋势,因此笔者非常乐于和大家分享我们这段时间对容器的理解.心得和实践. 本篇教程持续编写了2个星期左右,只是为了大家更好地了解.理解和消化这个技术,能够搭上这波车. 你 ...

  9. docker 管理工具_详解Docker可视化管理工具shipyard--部署教程及功能展示

    概述 谈及docker,避免不了需要熟练的记住好多命令及其用法,对于熟悉shell.技术开发人员而言,还是可以接受的,熟练之后,命令行毕竟是很方便的,便于操作及脚本化.但对于命令行过敏.非技术人员,进 ...

最新文章

  1. 从零开始山寨Caffe·拾:IO系统(三)
  2. Coursera课程Python for everyone:Quiz: eXtensible Markup Language
  3. 玄元剑仙服务器列表为空,玄元剑仙3月11日维护更新公告
  4. Django Channels 入门指南
  5. 解剖 Nginx ·自动脚本篇(1)解析配置选项脚本 auto/options
  6. .NET 中密封类的性能优势
  7. 基于linux的netfilter处理数据包的过程分析,基于Netfilter的网络数据包分析
  8. 软件架构设计的三个维度,软件架构师需要知道的点,了解一下吧!
  9. 3-18pytorch与矩阵分解PCA
  10. NHibernate Profiler使用方法
  11. Nginx 代理设置
  12. 火狐firebug和firepath插件安装方法(最新)
  13. 软件项目开发各阶段文档模板(参考)
  14. Ubuntu16.04.4制作自定义安装光盘方案
  15. WinEdit编辑器中中文乱码
  16. matlab 自激振荡,自激振荡系统matlab仿真课程设计
  17. python文件处理基础_第六篇:python基础之文件处理
  18. 01_k8s入门----部署一个应用程序
  19. duang!各位期待的傻猴更新稳定版来了~
  20. linaro根文件系统仓库

热门文章

  1. 51单片机的计时器和计数器
  2. 【Android+OkHttp3+Jsoup】 模拟登录教务系统 抓取课表和成绩
  3. java实现mysql还原_java代码实现mysql的备份与还原
  4. 螺钉式接线端子 KF128/ DG128/ MG128
  5. [转] ChatGPT热引发年薪千万高管辞职潮
  6. Inno Setup入门(十一)——完成安装后执行某些程序
  7. OSChina 周五乱弹 —— 破手机比 2080ti 核动力煤气灶还贵
  8. 概率统计——概率论与数理统计
  9. 【micropython】microbit声音模块
  10. Cmake语句find_package()函数