Docker的概述与部署管理基础操作

一、什么是docker

  • Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。它是目前最流行的 Linux 容器解决方案。
  • 而 Linux 容器是 Linux 发展出了另一种虚拟化技术,简单来讲, Linux
    容器不是模拟一个完整的操作系统,而是对进程进行隔离,相当于是在正常进程的外面套了一个保护层。对于容器里面的进程来说,它接触到的各种资源都是虚拟的,从而实现与底层系统的隔离。
  • Docker
    将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了
    Docker ,就不用担心环境问题。
  • 总体来说, Docker
    的接口相当简单,用户可以方便地创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样。

在这里插入图片描述

  • 很明显,这是一只鲸鱼,它托着许多集装箱。我们可以把宿主机可当做这只鲸鱼,把相互隔离的容器可看成集装箱,每个集装箱中都包含自己的应用程序。

二、容器 vs 虚拟机

  • VM是一个运行在宿主机之上的完整的操作系统,VM运行自身操作系统会占用较多的CPU、内存、硬盘资源。
    Docker不同于VM,只包含应用程序以及依赖库,基于libcontainer运行在宿主机上,并处于一个隔离的环境中,这使得Docker更加轻量高效,启动容器只需几秒钟之内完成。

  • 由于Docker轻量、资源占用少,使得Docker可以轻易的应用到构建标准化的应用中。

    但Docker目前还不够完善,比如隔离效果不如VM,共享宿主机操作系统的一些基础库等;网络配置功能相对简单,主要以桥接方式为主;查看日志也不够方便灵活。

在这里插入图片描述
在这里插入图片描述

2.1 docker三大核心

另外,docker主要包括三大核心概念,理解了这三个核心概念,就能理解docker的整个生命周期:

1、镜像:类似于虚拟机镜像,可以将它理解为一个面向Docker引擎的只读模板,包含了文件系统,镜像是创建Docker容器的基础。
2、容器:类似于一个轻量级的沙箱,Docker利用容器来运行和隔离应用。容器是从镜像的应用运行实例,可以将其启动,开始,停止,删除,而这些容器都是相互隔离,互不可见的。镜像自身是只读的,容器从镜像启动的时候,Docker会在镜像的最上层创建一个可写层,镜像本身保持不变。
3、仓库:类似于代码仓库,是docker集中存放镜像文件的场所。

三、环境准备

3.1docker的镜像操作

3.11安装依赖包

[root@localhost yum.repos.d]# yum -y install yum-utils device-mapper-persistent-data lvm2

3.12设置阿里云镜像源

[root@bogon yum.repos.d]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
已加载插件:fastestmirror, langpacks
adding repo from: https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
grabbing file https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo

3.13安装dockers-ce

[root@bogon yum.repos.d]# yum -y install docker-ce

3.14安装dockers-ce 报错

在这里插入图片描述
解决方式:

[root@bogon yum.repos.d]# mv backup/* /etc/yum.repos.d/
[root@bogon yum.repos.d]# yum clean all

3.15开启docker:

systemctl start docker

ifconfig查看
在这里插入图片描述

3.16镜像加速

在这里插入图片描述

[root@bogon yum.repos.d]# tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://xqctvpjh.mirror.aliyucs.com"]
}
EOF

在这里插入图片描述

查看

[root@bogon docker]# ls
daemon.json  key.json
[root@bogon docker]# vi daemon.json 
[root@bogon docker]# 

在这里插入图片描述

[root@bogon docker]# systemctl daemon-reload 
[root@bogon docker]# systemctl enable docker.service 

3.17网络优化

[root@bogon docker]# vim /etc/sysctl.conf

在这里插入图片描述

[root@bogon docker]# sysctl -p
net.ipv4.ip_forward = 1
[root@bogon docker]# service network restart 
Restarting network (via systemctl):                        [  确定  ]
[root@bogon docker]# systemctl restart docker
[root@bogon docker]# 


查看版本

[root@bogon docker]# docker version 


在这里插入图片描述

3.18获取镜像

[root@bogon docker]# docker search nginx

在这里插入图片描述
列出镜像,此时没有镜像

[root@bogon docker]# docker images 
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

3.19获取下载安装镜像

[root@bogon docker]# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
852e50cd189d: Pull complete 
571d7e852307: Pull complete 
addb10abd9cb: Pull complete 
d20aa7ccdb77: Pull complete 
8b03f1e11359: Pull complete 
Digest: sha256:6b1daa9462046581ac15be20277a7c75476283f969cb3a61c8725ec38d3b01c3
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest

[root@bogon docker]# docker pull tomcat
Using default tag: latest
latest: Pulling from library/tomcat
756975cb9c7e: Pulling fs layer 
d77915b4e630: Pulling fs layer 
5f37a0a41b6b: Pull complete 
96b2c1e36db5: Pull complete 
27a2d52b526e: Pull complete 
a867dba77389: Pull complete 
0939c055fb79: Pull complete 
0b0694ce0ae2: Pull complete 
81a5f8099e05: Pull complete 
c3d7917d545e: Pull complete 
Digest: sha256:a319b10d8729817c7ce0bcc2343a6f97711c7870395019340d96b6aafd6ccbea
Status: Downloaded newer image for tomcat:latest
docker.io/library/tomcat:latest

在这里插入图片描述

3.20删除镜像

[root@bogon docker]# docker rmi e0bd8b34b4ea 

在这里插入图片描述
获取镜像信息

[root@bogon docker]# docker inspect bc9a0695f571 

在这里插入图片描述

3.21添加新标签

[root@bogon docker]# docker tag nginx:latest nginx:web

在这里插入图片描述

3.22导出镜像

存储镜像名为nginx存在/opt/目录下

[root@bogon docker]# docker save -o /opt/nginx nginx:web     //-o输出到指定文件 

删除重新载入镜像在这里插入图片描述
载入:

[root@bogon docker]# docker load < /opt/nginx 
f5600c6330da: Loading layer  72.52MB/72.52MB
7ccabd267c9f: Loading layer  64.54MB/64.54MB
850c2400ea4d: Loading layer  3.072kB/3.072kB
f790aed835ee: Loading layer  4.096kB/4.096kB
7e914612e366: Loading layer  3.584kB/3.584kB
Loaded image: nginx:web
[root@bogon docker]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED                  SIZE
nginx               web                 bc9a0695f571        Less than a second ago   133MB

3.2容器操作

3.21创建容器

-i 让容器的标准输入保持打开
-t 让Docker分配一个伪终端
-d 后台运行容器,并返回容器ID
docker ps -a 列出所有容器

[root@bogon docker]# docker create -it nginx:web /bin/bash	//-i让容器的标准输入保持打开
83ac64bded360895d638ce4f85851f7f05dd64af578aa6fd08d1fdbd43a9843f//-t让Docker分配一个伪终端
[root@bogon docker]# docker ps -a	//docker ps  -a 列出所有容器
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
83ac64bded36        nginx:web           "/docker-entrypoint.…"   13 seconds ago      Created                                 condescending_engelbart

3.22开启关闭容器

格式:docker start 容器ID号
[root@localhost abc]# docker start af255575064f

格式:docker stop 容器ID号
[root@localhost abc]# docker stop af255575064f

在这里插入图片描述

3.23docker run命令

docker run命令会执行从创建容器,开启容器,执行命令,关闭容器等一系列过程。如果没有创建容器和镜像,就会从下载镜像开始执行,一直到关闭容器。执行完成后直接关闭,状态为exited

在这里插入图片描述

在这里插入图片描述

3.24进入容器与退出容器

格式:docker exec -it 容器ID /bin/bash

[root@bogon docker]# docker exec -it 3ba2782b62e1 /bin/bash
[root@3ba2782b62e1 /]# ls
anaconda-post.log  dev  home  lib64  mnt  proc  run   srv  tmp  var
bin                etc  lib   media  opt  root  sbin  sys  usr
[root@3ba2782b62e1 /]# exit	退出
exit



3.25导出、导入容器

导出容器格式为:docker export 容器ID > 定义容器名
[root@bogon docker]# docker export 83ac64bded36 > /opt/nginx_c
[root@bogon docker]# ls /opt/
containerd  nginx  nginx_c  rh


注意:导入容器只会生成镜像

[root@bogon opt]# cat nginx_c | docker import - nginx:web
sha256:890b85aa93f941184f58e17ea918b809fc535d3ceafe44139c7c3bb23b993b65

容器必须是exited 关闭状态,才能删除

[root@bogon docker]# docker stop 3ba2782b62e1
3ba2782b62e1
[root@bogon docker]# docker rm 3ba2782b62e1
3ba2782b62e1

3.26批量删除容器

第一种:
[root@localhost ~]# docker rm `docker ps -aq` 

第二种:
[root@localhost ~]# docker ps -a | awk '{print "docker rm"$1}' | bash    不能删除up状态的容器

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值