揭开docker的神秘面纱?Docker基础管理、Docker的常见命令以及如何搭建私有仓库?

一、Docker概述

在这里插入图片描述

1、Docker是什么?

●是一种轻量级的“虚拟机"
●在Linux容器里运行应用的开源工具

2、Docker与虚拟机的区别

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

3、Docker的使用场景

●打包应用程序简化部署
●可脱离底层硬件任意迁移
例:服务器从腾讯云迁移到阿里云

4、Docker引擎(Docker Engine)

  • Docker Engine是具有以下主要组件的客户端-服务器应用程序:
  • 服务器是一种长期运行的程序,称为守护程序进程( dockerd命令)。
  • REST API,它指定程序可以用来与守护程序进行通信并指示其操作的接口。
  • 命令行界面(CLI)客户端(docker命令)。

在这里插入图片描述

5、Docker的架构(Docker architecture)

  • Docker使用客户端-服务器架构。Docker 客户端与Docker 守护进程进行对话,该守护进程完成了构建,运行和分发Docker容器的繁重工作。

  • Docker区别于传统的虚拟化,不需要虚拟硬件资源,直接使用容器引擎,所以速度快

  • Docker Client:客户端

    • Docker客户端(docker)是许多Docker用户与Docker交互的主要方式。当您使用诸如之类的命令时docker run,客户端会将这些命令发送到dockerd,以执行这些命令。该docker命令使用Docker API。Docker客户端可以与多个守护程序通信。
  • Docker daemon:守护进程

    • Docker守护程序(dockerd)侦听Docker API请求并管理Docker对象,例如图像,容器,网络和卷。守护程序还可以与其他守护程序通信以管理Docker服务。
  • Docker images:镜像
    容器可以被打包成镜像

  • Docker container:容器

  • Docker registry:镜像仓库

    • 存储镜像的地方,默认在公共的Docker Hub上查找,可以搞个人仓库。
      在这里插入图片描述

二、Docker的核心概念及安装方式

在这里插入图片描述

1、Docker核心概念

镜像

  • 一个面向Docker容器引擎的只读模板
    容器
  • 从镜像创建的运行实例
    仓库
  • 集中保存镜像的地方

2、CentoS安装Docker的两种方式

使用CURL获得Docker的安装脚本进行安装
使用YUM仓库来安装Docker

三、安装Docker(社区版)

1、安装依赖包

yum install -y yum-utils device-mapper-persistent-data lvm2
#yum-utils 提供了yum-config-manager
#device mapper存储驱动程序需要device-mapper-persistent-data和lvm2
#Device Mapper是 Linux2.6内核中支持逻辑卷管理的通用设备映射机制,
它为实现用于存储资源管理的块设备驱动提供了一个高度模块化的内核架构。

2、设置阿里云镜像源

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

3、安装 Docker-CE

yum install -y docker-ce

systemctl stop firewalld.service

setenforce o
vim /etc/selinux/config
SELINUX=disabled

systemctl start docker.service
systemctl enable docker.service

在这里插入图片描述

4、镜像加速

tee /etc/docker/daemon.json <<-'EOF'
{
    
    
  "registry-mirrors": ["https://ygiebwn1.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker

在这里插入图片描述

5、网络优化

vim /etc/sysctl.conf
net.ipv4.ip_forward=1

sysctl -p
service network restart
systemctl restart docker

四、镜像的操作

1、查看docker版本信息

docker version

在这里插入图片描述

2、搜索镜像

docker search 关键字

在这里插入图片描述

3、获取镜像

docker pull 仓库名称[:标签]

EAUFS (联合文件系统)若干层下载

下载后存放在/var/lib/docker

/var/lib/docker/image/overlay/repositories.json //下载文件信息

在这里插入图片描述

4、查看镜像

dockers images 仓库名称【:标签】
docker inspect 镜像ID号

REPOSITORY                TAG                IMAGE ID               CREATED                 SIZE
nginx                          latest            231d40e811cd          4 weeks ago           126MB

在这里插入图片描述

5、上传镜像

//改标签
docker tag nginx:latest abner/nginx:web//用户名/仓库名:镜像名
//登陆
docker login
Username: docker
password:
Email: xxx@xxx.com
//上传
docker push abner/nginx:web

在这里插入图片描述

五、容器的操作

1、容器创建

docker create -it nginx:latest /bin/bash

2、查看容器

docker ps -a

CONTAINER ID               IMAGE                 COMMAND             CREATED                  STATUs                PORTS               NAMES
6c9aabe7b1e5              nginx:latest             "/bin/bash"         About a minute ago      Created                                     adoring_dijkstra
docker ps -a 查看所有的容器信息
docker ps 只能查看正在运行的容器信息

在这里插入图片描述

3、启动容器

docker start 6c9aabe7b1e5

在这里插入图片描述

4、查看状态为up

docker ps -a

CONTAINER ID              IMAGEC             OMMAND            CREATED                 STATUS              PORTS               NAMES
6c9aabe7b1e5             nginxlatest            "/bin/bash”      2 minutes ago        Up 36 seconds        80/tcp          adoring_dijkstra

在这里插入图片描述

5、启动执行命令查看系统根目录

docker pull paigeeworld/centos7
docker create -it paigeeworld/centos7 /bin/bashdocker start 31c5e232b074

docker run paigeeworld/centos7 /usr/bin/bash -c ls 

6、执行完成直接关闭状态

Exited

7、持续在后台执行

docker run -d paigeeworld/centos7 /bin/bash -c "while true;do echo hello;done"

docker ps -a
CONTAINER ID             IMAGE                      COMMAND                    CREATED                 STATUs                PORTS               NAMES
a029cbf81e0c    paigeeworld/centos7      "/bin/bash -c 'while..     19 seconds ago        up 18 seconds                               boring_blackb

在这里插入图片描述

8、终止运行

docker stop a029cbf81e0c

9、容器进入

docker ps -a
/显示nginx容器状态
6c9aabe7b1e------5nginx:latest              "/bin/bash”             18 minutes ago                Exited (0) 5 seconds ago                adoring_dijkstra

docker start 6c9aabe7b1e5(一定要是运行状态)
docker exec -it 6c9aabe7b1e5 /bin/bash
//退出容器 exit

10、容器导出

docker export 6c9aabe7b1e5 > nginx_c

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

cat nginx_c | docker import - nginx:web

在这里插入图片描述

12、删除容器

docker rm 4d8dcf51a4ef

13、批量删除容器

docker ps -a | awk {
    
    print “docker rm ”$1} | bash

在这里插入图片描述

六、私有仓库

1、下载仓库

docker pull registry

-------------------------以下是显示下载完成信息-----------------------------
Using default tag: latest
latest Pulling from library/registry
4064ffdc82fe: Pull complete
c12c92d1c5a2:Pull complete
4fbc9b6835cc: Pull complete
765973b0f65f: Pull complete
3968771a7c3a: Pull complete
Digest: sha256:51bb55f23ef7e25ac9b8313b139a8dd45baa832943c8ad8f7da2ddad6355b3c8
Status:Downloaded newer image for registry.latest

在这里插入图片描述

2、修改配置文件

vim /etc/docker/daemon.json
{
    
    
"insecure-registries": ["192.168.221.10:5000"]//添加
"registry-mirrors": ["https://05vz3np5.mirror.aliyuncs.com]
}
systemctl restart docker.service
docker create -it registry /bin/bash
docker ps -a

CONTAINER ID             IMAGE           COMMAND                  CREATED                       STATuS                      PORTS            NAMES
6f7497fcc8c2                registry       "/entrypoint.sh /b..     59 seconds ago      Created 20 seconds ago                       musing_turing


docker start 6f7497fcc8c2

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

3、宿主机的/data/registry自动创建挂载容器中的/tmp/registry

docker run -d -p 5000:5000 -v /data/registry:/tmp/registry registry

4、更改标记为192.168.221.10:5000/nginx

docker tag nginx:latest 192.168.221.10:5000/nginx

5、上传

docker push 192.168.221.10:5000/nginx

The push refers to repository [192.168.195.128:5000/nginx]
4fc1aa8003a3:Pushed
5fb987d2e54d:Pushed
831c5620387f:Pushed
latest: digest: sha256:189cce606b29fb2a33ebc2fcecfa8e33b0b99740da4737133cdbcee92f3aba0a size: 948

6、获取私有仓库列表

curl-XGET http://192.168.221.10:5000/v2/_catalog

7、显示上传成功

(""repositories":[""nginx"")

8、测试私有仓库下载

docker pull 192.168.221.10:5000/nginx

Using default tag: latest
latest: Pulling from nginx
000eee12ec04:Pull complete
eb22865337de:Pull complete
bee5d581ef8b: Pull complete
Digest: sha256:189cce606b29fb2a33ebc2fcecfa8e33b0b99740da4737133cdbcee92f3aba0aStatus: Downloaded newer image for 192.168.221.10:5000/nginx:latest
192.168.221.10:5000/nginx:latest

在这里插入图片描述

七、Docker 数据卷

docker pull centos

//宿主机目录/var/www挂载容器中的/data1
docker run -v /var/www:/data1 --name web1 -it centos /bin/bash

[root@202dd484fd62 /# cd /data1/

[root@202dd484fd62 data1]# touch test123

返回宿主机进行查看
[root@localhost ~]# ls /var/www/

八、数据卷容器

//数据卷容器
docker run --name web100 -v /data1 -v /data2 -it centos:7/bin/bash
//新容器挂载数据卷容器web100
docker run -it --volumes-from web100 --name db1 centos:7 /bin/bash

九、端口映射

docker run -d -P httpd:centos

docker run -d -p 49280:80 httpd:centos

docker ps -a
6d461287c25d         httpdcentos           "/run.sh”         7 seconds ago            Up7 seconds           0.0.0.0:49280->80/tcp           zen swanson

十、容器互联(使用centos镜像)

docker run -itd -P --name web11 centos:7 /bin/bash//创建并运行容器取名web1,端口号自动映射

docker run -itd -P --name web22 --link web11:web11 centos:7 /bin/bash

//创建并运行容器取名web2,链接到web1和其通信进web22容器 ping web1

//--link name:alias                  --link容器名:别名

小结

1、镜像     上传(push)/下载(pull)/打标签(tag)/删除(rmi)/导出(save)/导入(load)
2、容器     创建(create)/进入(exec)/运行(run)/删除(rm)/导出(export)/导入(import)
            数据卷-v数据卷容器--volumes-from链接容器--link暴露端口随机-Р指定-p
3、仓库    下载registry镜像--->运行容器暴露端口5000---->修改daemon.json文件---->重启docker
           打标签(IP:端口/名称)--->上传/下载

猜你喜欢

转载自blog.csdn.net/weixin_51431591/article/details/115080711