Docker 的基本管理

1.Docker的概述

       如果要方便的创建运行在云平台上的应用,必须要脱离底层的硬件,同时还需要任何时 间地点可获取这些资源,这正是 Docker 所能提供的。Docker 的容器技术可以在一台主机上轻松为任何应用创建一个轻量级的、可移植的、自给自足的容器。通过这种容器打包应用程序,意味着简化了重新部署、调试这些琐碎的重复工作,极大的提高了工作效率。

      Docker 的三大核心概念——镜像,容器,仓库。

1.1Docker的优势

       Docker 容器运行速度很快,启动和停止可以在秒级实现,比传统虚拟机要快很多;Docker 核心解决的问题是利用容器来实现类似虚拟机的功能,从而利用更加节省的硬件资源提供给用户更多的计算资源。因此,Docker 容器除了运行其中的应用之外,基本不消耗额外的系统资源,在保证应用性能的同时,又减小了系统开销,使得一台主机上同时运行数千个 Docker 容器成为可能。Docker 操作方便,可以通过 Dockerfile 配置文件支持灵活的自动化创建和部署。

       Docker 之所以拥有众多优势,与操作系统虚拟化自身的特点是分不开的。传统虚拟机需要有额外的虚拟机管理程序和虚拟机操作系统层,而 Docker 容器则是直接在操作系统层面之上实现的虚拟化。图 1.2 是 Docker 与传统虚拟机架构。

2.Docker 镜像

   Docker(Docker)镜像除了是Docker的核心技术之外,也是应用发布的标准格式。个完整的Docker (Docker) 镜像可以支撑一个Docker (Docker)容器的运行,在DockerDocker)的整个使用过程中,进入一个已经定型的容器之后,就可以在容器中进行操作,最常见的操作就是在容器中安装应用服务。

2.1Docker镜像结构

       镜像不是一个单一的文件,而是有多层构成。可以通过 docker history 命令查看镜像中各层内容及大小,每层对应着 Dockerfile 中的一条指令。Docker 镜像默认存储在var/ib/docker/<storage-driver>目录中。容器其实是在镜像的最上面加了一层读写层, 在运行容器里做的任何文件改动,都会写到这个读写层。如果删除了容器,也就删除了其最上面的读写层,文件改动也就丢失了。Docker 使用存储驱动管理镜像每层内容及可读写层的容器层。

Docker 镜像是分层的,下面这些知识点非常重要。
(1) Dockerfile 中的每个指令都会创建一个新的镜像层;
(2) 镜像层将被缓存和复用:
3) 当Dockerfile 的指令修改了,复制的文件变化了,或者构建镜像时指定的变量不同了,对应的镜像层缓存就会失效;
(4) 某一层的镜像缓存失效,它之后的镜像层缓存都会失效:
(5)镜像层是不可变的,如果在某一层中添加一个文件,然后在下一层中删除它,则镜像中依然会包含该文件,只是这个文件在 Docker 容器中不可见了。

2.2Dockerfile介绍

     Dockerfile是Docker的程序解释脚本,dockerfile由多条命令组成每条指令对应Linux 下面的一条命令。Docker 程序将这些Dockerfile 指令翻译成真正的Linux 命令。Dockerfile 有自己书写格式和支持的命令,Docker 程序解决这些命令间的依赖关系,类似于Makefile。Docker 程序将读取 Dockerfile,根据指令生成定制的镜像。相比镜像这种黑盒子Dockerfile 这种显而易见的脚本更容易被使用者接受,它明确的表明镜像是怎么产生的。有了Dockerfile,当有定制额外的需求时,只需在 Dockerfile 上添加或者修改指令, 重新生成镜像。

2.2.1 镜像

    镜像是创建容器的基础,类似于虚拟机的快照,面向dcoker容器引擎的只读模板。

例如:一个镜像可以是完整的centos操作系统,称为Centos镜像;也可以是安装Mysql应用程序,称为MYSQL镜像。

2.2.2容器

      容器是镜像创建的运行的实例,可以被启动,停止,和删除。每个容器都是相互隔离的,互不可见,Docker利用容器运行和隔离应用。

2.2.3 仓库

       仓库用来集中保存镜像,创建镜像之后,可以使用push上传到共有仓库(Public)和私有仓库(private)。另外机器上使用镜像时,可以直接从仓库获取。

       仓库注册服务器 (Registry) 是存放仓库的地方,其中包含了多个仓库。每个仓库集中存放某类镜像,并且使用不同的标签 (tag) 来区分它们。目前最大的公共仓库是 docker Hub,存放了数量庞大的镜像供用户下载使用。

3.实验部署

1.docker安装

使用ali仓库
rm -rf /etc/yum.repos.d/*
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
yum clean all

systemctl stop firewalld
systemctl disable firewalld
setenforce 0
vim  /etc/sysconf/selinux

使用aliyun镜像站安装
# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3
sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
# Step 4: 更新并安装Docker-CE
sudo yum makecache fast sudo yum -y install docker-ce

添加国内镜像站
mkdir /etc/docker/
/etc/docker/daemon.json

{

"exec-opts":["native.cgroupdriver=systemd"],

"registry-mirrors":["https://cf-workers-docker-io-8jv.pages.dev"],

"insecure-registries":["192.168.10.106"]

}

开启Docker服务

systemctl restart docker

systemctl enable docker

docker version

vim  /etc/sysctl.conf 

net.ipv4.ip_forward=1

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

sysctl -p   (立即生效+检测语法)

2.Docker 镜像的制作

[root@localhost ~]# docker search lamp            搜索镜像

[root@localhost ~]# docker pull mattrayner/lamp     获取镜像

[root@localhost ~]# docker images           查看镜像

[root@localhost ~]# docker pull centos:7  

[root@localhost ~]# docker pull hub.atomgit.com/amd64/nginx:1.25.2-perl

https://atomhub.openatom.cn   (浏览器搜索国内网站镜像,amd-nginx)

  更改镜像名称
[root@localhost ~]# docker tag hub.atomgit.com/amd64/nginx:1.25.2-perl nginx:v1.23 
备注:
hub.atomgit.com/amd64/nginx:1.25.2-perl         旧名称:旧版本
nginx:v1.23                新名称:新版本

删除镜像
[root@localhost ~]# docker rmi nginx:v1.23    
 

导出镜像
[root@localhost ~]# dockr save -o centos7 centos:7
centos7  导出镜像的文件名称
centos:7  镜像名称

导入镜像
[root@localhost ~]# docker load < centos7 

创建容器
[root@localhost ~]# docker create -it centos:7

注意:
-i:让容器的输入保持打开状态
-t:让Docker分配一个伪终端
-d:以守护进程的方式运行该容器

[root@localhost ~]# docker start d3     启动  d3是ID号

容器导出
[root@localhost ~]# docker export 6a > centos001

容器导入生成镜像
[root@localhost ~]# docker import centos001 centos02:test
备注:
centos001    容器名称
centos02:test   镜像名称:标签

3.端口映射

(1)随机映射端口

[root@consul ~]# docker run -d -P httpd

-d 守护进程

[root@consul ~]# docker ps -a

(2)指定映射端口

[root@consul ~]# docker run -d -p 49280:80 httpd

[root@ consul ~]# docker ps -a

备注:

49280:是映射到外部的端口,这个端口范围通常是从32768到61000

80:是容器的端口

4.容器互联

(1)创建源容器

[root@consul ~]# docker run -dit --name web01 centos:7

(2)创建接收容器

[root@consul ~]# docker run -dit --name web02 --link web01:web01 centos:7

备注:

 --link web1:web1

冒号前的web1,是第一个需要链接的容器的名字

冒号后的web1,是链接到第二个容器后,为第一个容器起的别名

(3)测试容器互联

[root@consul ~]# docker exec -it web02 /bin/bash

[root@71591dd4a58e /]# cat /etc/hosts

127.0.0.1 localhost

::1 localhost ip6-localhost ip6-loopback

fe00::0 ip6-localnet

ff00::0 ip6-mcastprefix

ff02::1 ip6-allnodes

ff02::2 ip6-allrouters

172.17.0.2 web01 36411a49ce54

172.17.0.3 71591dd4a58e

[root@71591dd4a58e /]# ping web01

5.docker的数据管理

(1)创建数据卷

[root@localhost ~]# docker run -dit -v /data1 -v /data2 --name web03 centos:7

[root@localhost ~]# docker  exec -it web03 /bin/bash

[root@9a398d3ec1f3 /]# cd /data1

[root@9a398d3ec1f3 data1]# cd /data2

(2)数据卷容器

[root@localhost ~]# docker run -dit --volumes-from web03 --name db1 centos:7 /bin/bash

(3)挂载主机目录作为数据卷

案例1

[root@localhost ~]# docker run -dit -p 8080:80 -v /data1:/usr/local/apache2/htdocs --name web04 httpd

[root@localhost ~]# echo "ni hao">/data1/index.html

[root@localhost ~]# curl 192.168.10.101:8080

案例2

[root@localhost ~]# mkdir -p /www/{conf,html}

将编辑好的nginx配置文件拷贝到/www/conf

将网站代码拷贝到/www/html

[root@localhost ~]# docker run -dit -p 9090:80 -v /www/conf/nginx.conf:/etc/nginx/nginx.conf -v /www/html:/www/html --name web05 nginx /bin/bash -c "nginx"

[root@localhost conf]# docker run -d -p 9090:80 -v /www/conf/default.conf:/etc/nginx/conf.d/default.conf -v /www/html:/usr/share/nginx/html -v/www/nginx/log:/var/log/nginx --name web05 nginx

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用\[1\]:Docker镜像命令思维导图是一篇文章,主要用来记录Docker命令的思维导图,方便回顾和复习使用。文章中提供了多个思维导图源文件,包括docker服务、docker整体、docker镜像、docker容器和补充的redis-cli命令。这些思维导图可以帮助用户回顾和学习Docker命令的使用。\[1\] 引用\[2\]:Docker使用思维导图及各种命令是一篇文章,介绍了Docker的架构和常用命令。文章中提供了Docker的架构图和常用命令的思维导图,包括搜索命令、下载镜像、列出镜像、删除本地镜像、保存镜像、加载镜像、构建镜像以及容器相关的命令。这些思维导图可以帮助用户更好地理解和使用Docker。\[2\] 根据提供的引用内容,可以看出这些思维导图主要是为了帮助用户回顾和学习Docker基本管理命令。这些思维导图提供了Docker的架构图、常用命令的概览以及具体命令的使用示例。用户可以根据自己的需求选择相应的思维导图来学习和使用Docker。 #### 引用[.reference_title] - *1* [Docker命令大全(带思维导图)](https://blog.csdn.net/bzu_mei/article/details/127627898)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Docker及其使用思维导图](https://blog.csdn.net/hliq5399/article/details/106021348)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值