docker 基本管理

docker基本管理和概念:

docker是什么:开源的应用容器引擎。基于go语言开发的运行在linux当中的开源的,轻量级的“虚拟机”

docker的容器技术可以在一台主机上轻松的为如何应用创建一个轻量级的,可移植的,自给自足的容器。

docker的宿主机是linux系统。集装箱可以理解为相互隔离的容器(组件,应用程序APP),每一个容器都是一个独立的应用程序。

docker的设计宗旨:build,ship and run any app,anywhere

build:封装好的程序,只要不是即可使用。一次封装

ship and run any app:一次封装之后的程序,可以在任何环境运行。

anywhere:任意宿主机

一次封装,到处运行。

封装,发布,部署,运行,维护,运行,销毁。

可以一整套的方式管理应用程序的生命周期。

docker为什么受欢迎:

1,灵活,在复杂的应用也可以实现容器化

2,轻量级,小型的,不完整的,最小化封装的程序,与宿主机共享内核。

3,可互换:可以随时的升级,更新。

4,便携式:本地可以构建,在云平台上也可以实现部署。在任何地方运行

5,可扩展:自动分发容器副本。

6,可堆叠:在一个宿主机上可以创建不同版本的同一容器,也可以是多个版本的同一容器。

linux的命名空间 namespace。是一种内核特性。允许将一组系统资源隔离,在一个命名空间中的进程在系统当中可以拥有独立的资源。

面试题:namespace的六项隔离措施:

1,UTS(命名空间),系统调用参数:CLONE_NEWUTS,隔离内容:主机和域名,在UTS这个命名空间当中创建进程,进程可以看到自己的主机名和域名,与其他进程分割开。

2,IPC 系统调用的参数:CLONE_NEWIPC,隔离内容:信号量,消息队列,共享内存。在ipc这个命名空间之中,进行可以拥有独立的进程通信资源。

3,PID 系统调用参数:CLONE_NEWPID,隔离内容:每个进程都有独立的进程好空间。

4,network 系统调用参数:CLONE_NEWNT 隔离内容:网络设备,网络栈,以及端口。每一个进程都有一个自己独立的网络资源。端口号。

5,mount 系统调用的参数:CLONE_NEWNS,隔离内容:挂载点,在mount这个进程或者设备都有自己的文件系统挂载点,相互之间互不干扰。

6,user 系统调用的参数:CLONE_NEWUSER,隔离不同用户和用户组。

基于这六个隔离项,实现了容器和容器之间,以及容器和宿主机之间资源隔离。

docker的核心组件:

镜像:是docker的基础,最小单位。类似于虚拟机的ISO文件,一个镜像就是一个可执行的包,包里面包含了运行这个程序的所有内容(代码,配置文件,环境变量。)

docker镜像也是一个压缩包,不是一个解压文件,是一个环境部署脚本,甚至包含了完整的操作系统。nginx

容器:docker的容器就是基于镜像运行起来的实例,可以启动,停止,删除。每一个容器都是相互隔离的互不可见。

仓库:保存镜像,所有的镜像都是从仓库当中拉去的。可以有公有仓库

还可以是私有仓库。镜像都是从仓库中拉去,镜像也保存在仓库之中。

下载到了本地: 镜像 容器 日志/var/lib/docker 宿主机。

docker于虚拟机之间的区别 面试题:

特性 docker 虚拟机

启动速度 秒级 分钟级

计算能力损耗 几乎无 损耗50%

性能 接近于原生系统 弱于原生系统

系统支持量 上千个 硬件系统看来(几十个)

隔离性 资源隔离 完全隔离

安全性 安全性差 安全性高

安装docker

systemctl stop firewalld.service

setenforce 0

#安装依赖包

yum install -y yum-utils device-mapper-persistent-data lvm2

yum-utils

yum-config-manager具,可以远程自定义获取yum源

device-mapper-persistent-data lvm2

device-mapper: 1.进行逻辑卷管理的通用设备的映射机制。

                        2、Ivm2

#设置阿里云镜像源

yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

#安装 Docker-CE并设置为开机自动启动

yum install -y docker-ce docker-ce-cli containerd.io

docker-ce

ddocker的社区版,面向开发者,消息团队和个人使用。免费

docker-ce-cli

提供docker的命令行工具。

contarnerd.io

负载管理容器的生命周期,创建,运行,停止,继续销毁。

docker只能支持64位系统。

systemctl start docker.service

systemctl enable docker.service

镜像加速下载

浏览器访问 阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台 获取镜像加速器配置

mkdir -p /etc/docker

tee /etc/docker/daemon.json

{

"registry-mirrors": ["https://6ijb8ubo.mirror.aliyuncs.com"]

}

EOF

systemctl daemon-reload

systemctl restart docker

查看 docker 版本信息

docker version

docker version 24版本

docker info:docker的信息

docker安装完成之后,客户端和服务端都在一起,都运行在一台机器上。

overlay2: docker使用的文件系统驱动。

overlayFS:overlsy file system:联合文件系统,用于适配宿主机的文件系统,可以自动适配。

lowerDir:底层目录

UpperDir:可写层

MergeDir:合并目录

workDir:工作目录

1,docker的镜像进行操作:

docker search 镜像名称

name:镜像的名称

DESCRIPTION:描述信息。

stars:点赞数量

OFFICIAL:官方镜像

AUTOMATED:自动化构建

docker pull nginx:1.22.0

指定拉取镜像版本

不指定版本就会下载最新版

REPOSITORY TAG IMAGE ID CREATED SIZE

centos latest 5d0da3dc9764 2 years ago 231MB

REPOSITORY:镜像属于的仓库;

TAG:镜像的标签信息,标记同一个仓库中的不同镜像;

IMAGE ID:镜像的唯一ID 号,唯一标识一个镜像;

CREATED:镜像创建时间;

VIRTUAL SIZE:镜像大小;

docker images 查看镜像

docker inspect 名称或id 查看镜像的详细信息。

lowerDir:底层目录 docker的底层文件系统,是一个或者多个镜像文件的根文件系统。

UpperDir:可写层 可以在容器内运行时,在容器内进行写操作。实现容器的可写性

MergeDir:合并目录 lowerdir和upperDir合并七七零,就是容器的文件系统,用户看到的就是这个合并的视图。

workDir:工作目录 处理文件系统的变更,当在容器内进行写操作时,overlayfs使用workdir来最终文件系统的变更。

docker tag centos:latest centos:new

可以给镜像打上标签,相当于硬链接

删除镜像

格式:

docker rmi 仓库名称:标签 #当一个镜像有多个标签时,只是删除其中指定的标签

或者

docker rmi 镜像ID号 #会彻底删除该镜像

删除标签只是删除标签名

删除id就是直接删除镜像

但只有一个的时候就会删除镜像

一个镜像有多个标签,删除时只是删除标签,只剩最后一个,删除的就是镜像本身。

如果镜像已经被镜像使用,先停容器,再生产容器,最后再删除镜像。

把镜像保存为本地文件

docker save -o /opt/centos.tar centos:7

还可以导出

docker load -i centos.tar

把镜像上传到仓库

docker tag nginx:latest soscscs/nginx:cc #添加新的标签时必须在前面加上自己的dockerhub的username

docker login #登录公共仓库

Username:soscscs

password:abc123456

docker push soscscs/nginx:cc

基于镜像来创建容器

格式:docker create [选项] 镜像

docker create -it nginx:latest /bin/bash

-i:让容器开启标准输入,接受用户的输入命令

-t:给这个容器分配一个终端,这是一个虚拟的伪终端

-it:线程一个宿主机和容器之间形成一个可以

查看容器的运行状态

docker ps -a #-a 选项可以显示所有的容器

开启容器:

docker start 容器的ID/名称

进入容器:

docker exec -it competent_swanson bash

创建并启动容器

可以直接执行 docker run 命令, 等同于先执行 docker create 命令,再执行 docker start 命令。

docker run -itd --name test1 nginx:1.22.0 /bin/bash

-d:可以让创建的容器已守护进程再后台运行,容器所运行的程序不会结束。

docker run -itd --name test1 nginx:1.22.0 /bin/bash

1、没有镜像能不能直接run?

2、运行的程序是什么?

1、没有镜像可以自动拉去

2、-d 结合一块,给容器持续运行的命令,后台没有指令,容器没有可运行的程序,将会直接退出。

docker run -itd --name test1 nginx:1.22.0 /bin/bash

#创建容器并持续运行容器

-it形成交互式会话

d后台运行/bin/bash

--name给容器命名

nginx:1.22.0:镜像名称和标签,如果本地没有。可以自动下载

进入容器:

docker exec -it competent_swanson bash

从容器当中复制出来改了再放进去

docker cp test1:/etc/nginx/nginx.conf /opt/

nginx.conf

docker cp /opt/nginx.conf 08a1cbf9c69e/etc/nginx

导入的容器要做标签区分否则就成none

导出的容器还是一个镜像,必须要run create才能成为容器。

已经配置号的导出的容器镜像,可以直接使用,(我们都是用已经开发已经设置,配置号的容器镜像。)

docker的特性:计算再创建过程中报错,容器还是会被创建,但是这个容器不可用

导入镜像,或者导入容器镜像,如果和已有标签重复,导入的镜像或者容器镜像,tag这一项就会变成none

如何来批量删除后台停止的

批量删除none镜像

总结:

docker:就是一个轻量级的虚拟机,宿主机是linux

docker 镜像 容器 仓库

docker search 搜索

docker pull nginx:1.22.0 获取镜像

docker rmi -f 强制生产镜像 (删除了在运行的镜像,对容器会有影响吗?)

docker tag nginx:1.22.0(在镜像中已有的标签) nginx:guoqi(给他的新标签,硬链接复制了源镜像)

docker save -o /opt/nginx.tar(一般用xxx.tar) nginx:1.22.0(这个镜像要以存在)

docker load -i xxx.tar

docker push pplok1230/nginx:guoqi

pplok1230:dockerhup的用户名 镜像名称和标签

docker容器:

-i

-t

-d

-itd:表示后台运行指定程序,而且创建一个交互式的shell.用户输入操作命令

docker run -itd nginx:1.22.0 --name test /bin/bash

如果容器中没有可执行命令,容器创建完成之后会立刻退出

docker exec -it 容器名/容器ID

docker ps 只显示正在运行的容器

docker ps -a 显示所有容器,包括没有运行的容器

导出:

docker export -o guoqi.tar 容器名/容器id

导入:

docker import guoqi.tar - nginx:guoqi (尽量不要重复标签名)

docker cp 容器名/容器ip:/etc/nginx/nginx.conf /opt

docker cp /opt/123.txt 器名/容器ip:/etc/nginx/nginx.conf

docker rm 删除容器

正在运行的容器

docker rm -f

docker srop

docker rm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值