Docker基本管理

一.Docker概述

因为Docker轻便,快速的特性,可以使应用达到快速迭代的目的。每次小的变更,马上就可以看到效果,而不用将若干个小变更积攒到一定程度在变更。

二.什么是Docker

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

1.Docker与传统虚拟机的区别

|-----------|--------|---------|
| 特性 | Docker | 虚拟机 |
| 启动速度 | 秒级 | 分钟级 |
| 计算能力损耗 | 几乎没有 | 损耗50%左右 |
| 性能 | 接近原生 | 弱于 |
| 系统支持量(单击) | 上千个 | 几十个 |
| 隔离性 | 资源限制 | 完全隔离 |

2.Docker与传统虚拟机架构

三.Docker的三大核心概念

1.镜像:是Docker创建容器的基础,类似虚拟机的快照,可以理解为一个面向Docker容器引擎的只读模版。

例如:一个镜像可以是一个完整的CentOS操作系统,称为一个CentOS镜像;也可以是一个安装MySQl的应用程序,称之为一个MySQL镜像。

2.容器:从镜像创建的运行实例,它可以被启动,停止和删除。所创建的每一个容器都是相互隔离,互不可见,以保证安全性的平台。可以将容器看作是一个简易版的linux环境,Docker利用容器来运行和隔离应用。

3.仓库:集中保存镜像的地方,当创建了自己的镜像之后,可以使用push命令将它们上传到公有长裤(public)或者私有仓库(private)。当下次在另外一台机器上使用这个镜像时,只需从仓库中获取。

四.CentOS系统下Docker的安装

首先加载阿里的yum仓库

yum -y install wget
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all

1.docker安装,阿里镜像站中有详细操作,直接复制即可,链接为:docker-ce镜像_docker-ce下载地址_docker-ce安装教程-阿里巴巴开源镜像站 (aliyun.com)

添加国内的镜像站

vim /etc/docker/deamon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors": ["https://cf-workers-docker-io-8jv.pages.dev"],
"insecure-registries": ["192.168.10.106"]

}

修改内核参数配置文件sysctl.conf

vim /etc/sysctl.conf

net.ipv4.ip_forward=1
net.bridge.bridge-nf-call-ip6tables=1
net.bridge.bridge-nf-call-iptables=1

systemcal restart docker

到这里docker容器就真正意义的安装完成。

五.Docker镜像操作

1.查看docker版本和服务 docker version

搜索镜像docker search 镜像名

其中返回的信息包括名称(name),描述(DESCRIPTION),星级(STARS),是否官方创建(OFFICIA),是否主动创建(AUTOMATED)。默认输出结果会按照星级评价进行排序,

拉取镜像docker pull 镜像名:【标签】(如果下载时不指定标签,默认下载最新版本的镜像,即标签为latest标签,可以通过指定标签的形式下载指定版本镜像。)

2.查看镜像信息

  • REPOSITORY:镜像属于的仓库;
  • TAG:镜像的标签信息,标记同一个仓库中的不同镜像
  • IMAGE ID:镜像的唯一ID号,唯一表示一个镜像
  • CREATED:镜像创建时间
  • VIRTUAL SIZE:镜像大小

3.用户可以根据镜像的唯一ID号获取镜像的详细信息

docker inspect 镜像ID号
  1. 为本地镜像添加新的标签

    docker tag 名称 新名称:[新标签]

5.删除镜像

docker rmi 仓库名:tag标签
或
docker rmi 镜像编号

当一个镜像有多个标签时,docker rmi命令只是删除该镜像多个标签中的指定标签,不会影响整个镜像。

6.存出镜像

将一台机器的镜像迁移到另外一台机器上,需要将镜像保存成为本地文件,这个过程叫做存出镜像,可以使用docker save命令进行存出操作,之后就可以拷贝该文件到其他机器。

docker save -o 存储文件名 存储的镜像

7.载入镜像,将存出的镜像文件重机器A拷贝到机器B,就可以使用docker load或者docker --input进行载入操作。

docker load < 存出的文件
或
docker load -i 存出的文件

8.上传镜像

将本地镜像上传到一个专门存放这些镜像的地方------仓库,目前比较方便的的公共仓库,默认为docker Hub官方仓库,需要注册公共仓库的账号。可以使用docker login命令来输入用户用名,密码和邮箱来完成注册和登录,再上传之前还需要先对本地镜像添加新的标签,然后在使用docker命令进行上传。

docker push 仓库名称:标签

六.容器操作

1.Docker容器创建

docker create 【选项】镜像

选项:

-i:让容器的输入保持打开

-t:让Docker分配一个伪终端

-d:以守护进程的方式运行该容器

2.Docker 容器启动

docker start 容器ID/名称

此命令只是把容器创建了出来,并没有运行

3.查看容器信息

[root@localhost ~]# docker ps -a

4.容器的运行

[root@localhost ~]# docker start 5a

启动容器后,可以看到容器状态一栏已经变为UP,表示容器已经处于启动状态。如果用户想创建并启动容器,可以直接执行docker run命令,等同于先执行docker create命令,再执行docker start命令。

注意:容器是一个与其中运行的shell命令共存亡的终端,命令运行容器运行,命令结束容器退出。

5.在创建容器时直接启动容器

当利用dockerrun来创建容器时,Docker在后台的标准运行过程是:

(1)检查本地是否存在指定的镜像。当镜像不存在时,会从公有仓库下载

(2)利用镜像创建并启动一个容器:

(3)分配一个文件系统给容器,在只读的镜像层外面挂载一层可读写层

(4)从宿主主机配置的网桥接口中桥接一个虚拟机接口到容器中:

(5)分配一个地址池中的IP地址给容器:

(6)执行用户指定的应用程序,执行完毕后容器被终止运行。

[root@localhost ~]# docker run centos:7 /usr/bin/bash -c "ls /root"

注意:此命令只是用该容器执行了一下ls命令,随后此容器就关闭了

6.在启动容器时持续在后台运行

[root@localhost ~]# docker run -d centos:7 /usr/bin/bash -c "while true;do echo hello;done"

或

[root@localhost ~]# docker run -dit centos:7 /bin/bash

7.容器的终止

[root@localhost ~]# docker stop b18(容器名或容器ID)

8.进入容器

[root@localhost ~]# docker exec -it 03f(容器名或容器ID) /bin/bash

退出

[root@03f062851c52 /]# exit

9.容器导出

[root@localhost ~]# docker export 03f(容器名或容器ID) >centos7(文件名)

10.容器导入生成镜像

[root@localhost ~]# docker import centos7(被导出的容器名) centos7:test(生成的镜像名称:标签)

[root@localhost ~]# docker images

11.容器删除

[root@localhost ~]# docker rm 7f

删除所有容器

docker rm -f $(docker ps -a | awk '{print $1}')
相关推荐
叶落无痕526 分钟前
关于安卓App自动化的一些想法
android·运维·自动化·android studio
打败40416 分钟前
nginx_shell脚本扩展配置虚拟主机三种方式
运维·nginx·docker·flask
3分云计算19 分钟前
一.Oracle每日运维操作
运维
大鹅同志2 小时前
在服务器上开Juypter Lab教程(远程访问)
运维·服务器·pytorch·jupyter·cuda·云服务器
白手小弟2 小时前
docker部署Stirling-PDF
docker·容器·pdf
文牧之2 小时前
PostgreSQL的walsender和walreceiver进程介绍
运维·数据库·postgresql
炸裂狸花猫3 小时前
Linux技术04-IPVS
linux·运维·服务器
快快小毛毛3 小时前
CC攻击防御策略要怎么调整?使用游戏盾有效解决
运维·服务器·网络·tcp/ip·游戏·udp
HoweWWW3 小时前
k8s 微服务 ingress-nginx 金丝雀发布
微服务·容器·kubernetes
ʚɞ4963 小时前
k8s环境下的相关操作
运维·excel