Docker 容器 基础 镜像下载加速 基础操作

Docker 概述

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows 机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。
一个完整的Docker有以下几个部分组成:
DockerClient客户端
Docker Daemon守护进程
Docker Image镜像
DockerContainer容器

在这里插入图片描述

  1. Docker是一个用于开发,交付和运行应用程序的开放平台。Docker使您能够将应用程序与基础架构分开,从而可以快速交付软件。
  2. 是一个开源的应用容器引擎,让开发者可以打包大门的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或者Windows机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口
  3. 沙箱(Sandbox):在计算机安全领域,沙箱是一种程序的隔离运行机制
  4. Docker在2013年一炮而红,直到现在,已经成为容器技术的代名词。
  5. Docker从一开始就以提供标准化的运行时环境为目标,真正做到“build once, run anywhere”,可以将同一个构建版本用于开发、测试、预发布、生产等任何环境,并且做到了与底层操作系统的解耦。在此基础上还进一步发展出了CaaS(容器即服务)技术

Docker常见使用场景

打包应用程序简单部署
可脱离底层硬件任意迁移(实现了应用的隔离,将应用拆分并进行解耦),例如:服务器从腾讯云迁移到阿里云
持续集成和持续交付(CI/CD):开发到测试发布
部署微服务
提供PAAS产品(平台即服务)OpenStack的云主机类似于阿里云的ECS,属于IAAS、Docker(K8S) 属于PAAS

Docker引擎

Docker Engine
Docker Engine是具有以下主要组件的客户端-服务器应用程序:
服务器是一种长期运行的程序,称为守护程序进程( dockerd命令)。
REST API,它指定程序可以用来与守护程序进行通信并指示其操作的接口。
命令行界面(CLI)客户端(docker命令)。
在这里插入图片描述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上查找,可以搞个人仓库

容器与虚拟机的区别

在这里插入图片描述

名称空间(Namespaces)

Docker使用一种称为namespaces提供容器的隔离工作区的技术。运行容器时,Docker会为该容器创建一组 名称空间。
这些名称空间提供了一层隔离。容器的每个方面都在单独的名称空间中运行,并且其访问仅限于该名称空间。
Docker Engine在Linux上使用以下名称空间:
该pid命名空间:进程隔离(PID:进程ID)。
该net命名空间:管理网络接口(NET:网络)。
该ipc命名空间:管理访问IPC资源(IPC:进程间通信)。
该mnt命名空间:管理文件系统挂载点(MNT:mount)。
该uts命名空间:隔离内核和版本标识符。(UTS:Unix时间共享系统)。

控制组(Control groups)

Linux上的Docker引擎还依赖于另一种称为控制组 (cgroups)的技术。cgroup将应用程序限制为一组特定的资源。控制组允许Docker Engine将可用的硬件资源共享给容器,并有选择地实施限制和约束。例如,您可以限制特定容器可用的内存。

来吧!展示!!

Docker安装

网络优化

[root@5centos ~]# setenforce 0
[root@5centos ~]# iptables -F
[root@5centos ~]# vim /etc/sysctl.conf 	##末行插入
net.ipv4.ip_forward=1
[root@5centos ~]# sysctl -p
net.ipv4.ip_forward = 1

安装工具

[root@5centos ~]# yum -y install yum-utils device-mapper-persistent-data lvm2

设置阿里云镜像

[root@5centos ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@5centos ~]# cd /etc/yum.repos.d/
[root@5centos yum.repos.d]# ls
CentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-Media.repo    CentOS-Vault.repo
CentOS-CR.repo    CentOS-fasttrack.repo  CentOS-Sources.repo  docker-ce.repo

安装Docker社区版(主要是免费)

[root@5centos yum.repos.d]# yum -y install docker-ce
[root@5centos yum.repos.d]# systemctl start docker
[root@5centos yum.repos.d]# docker version 	##查看信息

Docker加速

阿里云官网搜索镜像加速,第一个就是
然后选这个
在这里插入图片描述这个
在这里插入图片描述在这里插入图片描述
然后就有官方教程可以参考了

docker基础操作

镜像搜索
docker search 镜像名称

[root@5centos /]# docker search nginx

镜像下载
docker pull 镜像名称

[root@5centos /]# docker pull wodby/nginx

查看已有镜像及详细信息
docker images
docker inspect 镜像ID

[root@5centos /]# docker images		##查看已有镜像
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
wodby/nginx         latest              971aceb353d9        4 weeks ago         75.4MB
[root@5centos /]# docker inspect 971aceb353d9		##详细信息

镜像下载完存放在:/var/lib/docker,下载的文件信息:/var/lib/docker/image/overlay2/repositories.json

为镜像添加标签
docker tag 仓库名:原标签 仓库名:新标签
标签添加完新旧标签是同时存在的

[root@5centos /]# docker tag wodby/nginx:latest wodby/nginx:web
[root@5centos /]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
wodby/nginx         latest              971aceb353d9        4 weeks ago         75.4MB
wodby/nginx         web                 971aceb353d9        4 weeks ago         75.4MB

镜像删除
docker rmi 镜像id
docker rmi 镜像名
若有相同标签的,删除标id报错,仅留下一个标签时,可以删除标签

[root@5centos /]# docker rmi wodby/nginx:latest 
Untagged: wodby/nginx:latest
[root@5centos /]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
wodby/nginx         web                 971aceb353d9        4 weeks ago         75.4MB

导出镜像到指定目录
docker save -o 相应目录 仓库名:标签

[root@5centos /]# docker save -o /opt/nginxweb wodby/nginx:web 
[root@5centos /]# ls /opt/nginxweb 
/opt/nginxweb

导入镜像
docker load < 镜像 或者 docker load --input 镜像

[root@5centos opt]# docker load < nginxweb 
Loaded image: wodby/nginx:web

镜像上传

[root@docker ~]# docker login --username=juejue registry.cn-hangzhou.aliyuncs.com	'//先登录'
Password: 
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded
[root@docker ~]# docker tag ed21b7a8aee9 registry.cn-hangzhou.aliyuncs.com/tang_docker001/tang_docker001:latest
[root@docker ~]# docker push registry.cn-hangzhou.aliyuncs.com/tang_docker001/tang_docker001:latest	'//开始上传'
The push refers to repository [registry.cn-hangzhou.aliyuncs.com/tang_docker001/tang_docker001]
d37eecb5b769: Pushed 
99134ec7f247: Pushed 
c3a984abe8a8: Pushed 
latest: digest: sha256:7ac7819e1523911399b798309025935a9968b277d86d50e5255465d6592c0266 size: 948

容器常规操作

创建容器
docker create -it 仓库名:标签 登录环境

[root@5centos opt]# docker create -it wodby/nginx:web /bin/bash
603f7eb7f17de60b185f4285fac2c6cd1d4dd8d4bf97ee04fe39e7b7f885ef1a

查看容器状态
docker ps -a

[root@5centos opt]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
603f7eb7f17d        wodby/nginx:web     "/docker-entrypoint.…"   2 minutes ago       Created                                 keen_zhukovsky

启动容器
docker start 容器id

[root@5centos opt]# docker start 603f7eb7f17d
603f7eb7f17d
[root@5centos opt]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
603f7eb7f17d        wodby/nginx:web     "/docker-entrypoint.…"   4 minutes ago       Up 3 seconds        80/tcp              keen_zhukovsky

使用正在运行的容器
docker exec -it 容器id 环境 或者 docker run -it 容器名:标签 环境(执行完自动退出)

[root@5centos opt]# docker exec -it 603f7eb7f17d /bin/bash
/var/www/html$

停止容器
docker stop 容器id

[root@5centos opt]# docker stop 603f7eb7f17d
603f7eb7f17d

启动容器并在后台运行

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

容器导出

[root@5centos opt]# docker export 603f7eb7f17d > /opt/nginx
[root@5centos opt]# ls /opt/
containerd  nginx  nginxweb  rh

容器导入
会生成镜像,但不会创建容器

[root@5centos opt]# cat /opt/nginx | docker import - nginx01
sha256:3383211c95ee1c0f09306cf893852c0aa8a4e9366f826502a8a76e54c1c0fa6b
[root@5centos opt]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx01             latest              3383211c95ee        10 seconds ago      75.2MB
wodby/nginx         nginx               971aceb353d9        4 weeks ago         75.4MB
wodby/nginx         web                 971aceb353d9        4 weeks ago

删除容器
容器状态不能是启动
docker rm 容器id

[root@5centos opt]# docker rm 603f7eb7f17d
603f7eb7f17d

批量删除容器
docker ps -a |awk ‘{print "docker rm "$1}’|bash

[root@5centos opt]# docker ps -a |awk '{print "docker rm "$1}'|bash
Error: No such container: CONTAINER
88429fd11d13
d5a4fe53ebb1
[root@5centos opt]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

猜你喜欢

转载自blog.csdn.net/Ora_G/article/details/108684763
今日推荐