01 Docker概念和部署

2024-09-08 13:36
文章标签 部署 docker 概念 01

本文主要是介绍01 Docker概念和部署,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

1.1 Docker 概述

1.1.1 Docker 的优势

1.1.2 镜像

1.1.3 容器

1.1.4 仓库

1.2 安装 Docker

1.2.1 配置和安装依赖环境

1.3镜像操作

1.3.1 搜索镜像

1.3.2 获取镜像

1.3.3 查看镜像

1.3.4 给镜像重命名

1.3.5 存储,载入镜像和删除镜像

1.4 Doecker容器操作

1.4.1创建和运行docker

1.4.2终止docker

1.4.3导出和导入docker

1.4.4删除docker


1.1 Docker 概述

        因为 Docker 轻便、快速的特性,可以使应用达到快速迭代的目的。每次小的变更,马上就可以看到效果,而不用将若干个小变更积攒到一定程度再变更。每次变更一小部分其实是一种非常安全的方式,在开发环境中能够快速提高工作效率。

        Docker 容器能够帮助开发人员、系统管理员、质量管理和版本控制工程师在一个生产环节中一起协同工作。制定一套容器标准能够使系统管理员更改容器的时候,程序员不需要关心容器的变化,而更专注自己的应用程序代码。从而隔离开了开发和管理,简化了开发和部署的成本。

1.1.1 Docker 的优势

Docker 容器运行速度很快,启动和停止可以在秒级实现,比传统虚拟机要快很多:Docker 核心解决的问题是利用容器来实现类似虚拟机的功能,从而利用更加节省的硬件资源提供给用户更多的计算资源。因此,Docker容器除了运行其中的应用之外,基本不消耗额外的系统资源,在保证应用性能的同时,又减小了系统开销,使得一台主机上同时运行数千个 Docker 容器成为可能。Docker 操作方便,可以通过 Dockerile 配置文件支持灵活的自动化创建和部兴。表 1-1将 Docker容器技术与传统虚拟机的特性进行了比较。

Docker之所以拥有众多优势,与操作系统虚拟化自身的特点是分不开的。传统虚拟机需要有额外的虚拟机管理程序和虚拟机操作系统层,而Docker 容器则是直接在操作系统层面之上实现的虚拟化。图 1.2 是 Docker 与传统虚拟机架构。

1.1.2 镜像

        镜像、容器、仓库是 Docker 的三大核心概念。其中 Docker 的镜像是创建容器的基础,类似虚拟机的快照,可以理解为一个面向 Docker 容器引擎的只读模板。例如:一个镜像可以是一个完整的 Cent OS 操作系统环境,称为一个 CentOS 镜像:也可以是一个安装了 MySQL 的应用程序,称之为一个 MySQL 镜像等等。

        Docker 提供了简单的机制来创建和更新现有的镜像,用户也可以从网上下载已经创建好的镜像直接使用。

1.1.3 容器

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

1.1.4 仓库

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

        仓库注册服务器(Registry)是存放仓库的地方,其中包含了多个仓库。每个仓库集中存放某一类镜像,并且使用不同的标签(tag)来区分它们。目前最大的公共仓库是docker Hub,存放了数量庞大的镜像供用户下载使用。

1.2 安装 Docker

        Docker 支持在主流的操作系统平台上进行使用,包括Windows 系统、Linux 系统、以及 MacOS 系统等。目前最新的 RHEL、Cent OS 以及 Ubuntu 系统官方软件源中都已经默认自带了Docker 包,可直接安装使用,也可以用 Docker 自己的YUM 源进行配置。

        Cent OS 系统下安装 Docker 可以有两种方式:一种是使用 CURL 获得 Docker 的安装脚本进行安装,另一种是使用YUM 仓库来安装 Docker。

        注意:目前 Docker 只能支持 64 位系统。

1.2.1 配置和安装依赖环境

[root@bogon ~]# systemctl stop firewalld[root@bogon ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@bogon ~]# setenforce 0[root@bogon ~]# sed -i 's/=enforcing/=disabled/'  /etc/selinux/config 
//更换yum源
rm -rf /etc/yum.repos.d/*
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
yum clean all
# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3
sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
# Step 4: 更新并安装Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
##Step 4:添加国内镜像站
mkdir /etc/docker/
cat>/etc/docker/daemon.json<<EOF
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
EOF
#Step 5: 开启Docker服务
systemctl restart docker
systemctl enable docker
docker version
cat>> /etc/sysctl.conf <<EOF
net.ipv4.ip_forward=1
net.bridge.bridge-nf-call-ip6tables = 1 
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl -p
service docker start

1.3镜像操作

1.3.1 搜索镜像

语法:docker search lamp

[root@bogon ~]# docker search lamp
NAME                  DESCRIPTION                       STARS     OFFICIAL
javanile/lamp         Ready to use LAMP stack           2         
dockette/devstack     My LAMP/Devstack Dockerfile       4         
machines/la_p7        Just a ubuntu based lamp server   5         
zmm1/lamp             lamp                              0         
danku2/lamp           lamp                              0         
mooseh81/lamp         lamp                              0         
rahulvramesh/lamp     Lamp                              0         
akharis76/lamp        lamp                              0         
clarkzhang/lamp       lamp                              1         
liachovskis/lamp      lamp                              0         
sree2424/lamp         LAMP                              0         
lizeqing/lamp         lamp                              0         
rogalikk960/lamp      LAMP                              0         
avatao/lamp           Lamp                              0         
themankudz/lamp       lamp                              0         
carmelg/lamp          Lamp                              0         
pvitoroliveira/lamp   LAMP                              0         
ztj1993/lamp          lamp                              0         
hanhongwen86/lamp     lamp                              0         
echo110/lamp          lamp                              0         
kgc12345626/lamp      lamp                              0         
bluelockr/lamp        lamp                              0         
yiwang666/lamp        lamp                              0         
jin7/lamp             lamp                              0         
whyte624/lamp         lamp                              0  

1.3.2 获取镜像

语法:docker pull 镜像名称

[root@bogon ~]# docker pull javanile/lamp   //搜索镜像把想获取的镜像名字复制
Using default tag: latest
latest: Pulling from javanile/lamp
177e7ef0df69: Pull complete 
9bf89f2eda24: Pull complete 
350207dcf1b7: Pull complete 
a8a33d96b4e7: Pull complete 
c0421d5b63d6: Pull complete 
f76e300fbe72: Pull complete 
af9ff1b9ce5b: Pull complete 
d9f072d61771: Pull complete 
2a25fcb23d18: Pull complete 
0e496ab19dff: Pull complete 
2a5d39fc92ab: Pull complete 
8603dc5a76e7: Pull complete 
4525497200a2: Pull complete 
df66f65de27a: Pull complete 
713450f54733: Pull complete 
671fe08b3a47: Pull complete 
137a046abb87: Pull complete 
95e5fdb4ef1e: Pull complete 
25120b64e168: Pull complete 
b98e7028aee5: Pull complete 
dc19ac08c236: Pull complete 
8d52f75adf6b: Pull complete 
5eccdeef64ae: Pull complete 
67abf7efecfb: Pull complete 
630fc12f5841: Pull complete 
ef5e50840ada: Pull complete 
a0bb707f7630: Pull complete 
7c6e8038d8ad: Pull complete 
Digest: sha256:09417dcad61160eb823c10ac1358534b34099183e07d73697dabafb691cac12a
Status: Downloaded newer image for javanile/lamp:latest
docker.io/javanile/lamp:latest

1.3.3 查看镜像

语法:docker images

[root@bogon ~]# docker images
REPOSITORY      TAG       IMAGE ID       CREATED       SIZE
javanile/lamp   latest    93e4adef599c   5 years ago   590MB

也可以去浏览器搜索

OpenAtom Foundation - 开放原子开源基金会

[root@bogon ~]# docker pull hub.atomgit.com/library/nginx:1.24-bullseye-perl
1.24-bullseye-perl: Pulling from library/nginx
1a82ea2e025a: Pull complete 
3ef6bc7c6b34: Pull complete 
b8ea68ef5510: Pull complete 
152901865926: Pull complete 
b39f33faf2b2: Pull complete 
cf865bd10e05: Pull complete 
9e86338fed04: Pull complete 
Digest: sha256:5ea912c7bb6484dc11449d6de083739bd20bb6bda5d6ab734efab5df8795f683
Status: Downloaded newer image for hub.atomgit.com/library/nginx:1.24-bullseye-perl
hub.atomgit.com/library/nginx:1.24-bullseye-perl
[root@bogon ~]# docker pull hub.atomgit.com/amd64/php:8.0.30-zts-alpine3.16
8.0.30-zts-alpine3.16: Pulling from amd64/php
7c8cfa7ced9c: Pull complete 
d7ea62a47e45: Pull complete 
e0f7352b80f9: Pull complete 
eba0b083dedc: Pull complete 
af5bc0af13d5: Pull complete 
cd059df25d90: Pull complete 
19e54be3f36c: Pull complete 
c1520122c20b: Pull complete 
44b661e0c458: Pull complete 
Digest: sha256:557389c60b0441f78932adb353549d05278bdea0e8b4318f0105731e2ce39343
Status: Downloaded newer image for hub.atomgit.com/amd64/php:8.0.30-zts-alpine3.16
hub.atomgit.com/amd64/php:8.0.30-zts-alpine3.16
[root@bogon ~]# docker images
REPOSITORY                      TAG                     IMAGE ID       CREATED        SIZE
hub.atomgit.com/amd64/php       8.0.30-zts-alpine3.16   84fecea0dbc0   9 months ago   70MB
hub.atomgit.com/library/nginx   1.24-bullseye-perl      31364c7f01e7   9 months ago   190MB
javanile/lamp                   latest                  93e4adef599c   5 years ago    590MB

1.3.4 给镜像重命名

语法 docker tag 容器名称:[标签] 新容器名称:[标签]

[root@bogon ~]# docker tag hub.atomgit.com/library/nginx:1.24-bullseye-perl  nginx:nv1.24
[root@bogon ~]# docker images
REPOSITORY                      TAG                     IMAGE ID       CREATED        SIZE
hub.atomgit.com/amd64/php       8.0.30-zts-alpine3.16   84fecea0dbc0   9 months ago   70MB
nginx                           nv1.24                  31364c7f01e7   9 months ago   190MB
hub.atomgit.com/library/nginx   1.24-bullseye-perl      31364c7f01e7   9 months ago   190MB
javanile/lamp                   latest                  93e4adef599c   5 years ago    590MB

1.3.5 存储,载入镜像和删除镜像

存储语法:docker save -o 存储文件名 仓库名:[标签]

删除语法:docker rmi 镜像号或者仓库名:[标签]

载入语法:docker load < 存储的文件名

//存储
[root@bogon ~]# docker save -o nginx01  nginx:nv1.24
[root@bogon ~]# ls
anaconda-ks.cfg  nginx01
//删除
[root@bogon ~]# docker rmi nginx:nv1.24
Untagged: nginx:nv1.24
[root@bogon ~]# docker images
REPOSITORY                      TAG                     IMAGE ID       CREATED        SIZE
hub.atomgit.com/amd64/php       8.0.30-zts-alpine3.16   84fecea0dbc0   9 months ago   70MB
hub.atomgit.com/library/nginx   1.24-bullseye-perl      31364c7f01e7   9 months ago   190MB
javanile/lamp                   latest                  93e4adef599c   5 years ago    590MB
//载入
[root@bogon ~]# docker load <nginx01 
Loaded image: nginx:nv1.24
[root@bogon ~]# docker images
REPOSITORY                      TAG                     IMAGE ID       CREATED        SIZE
hub.atomgit.com/amd64/php       8.0.30-zts-alpine3.16   84fecea0dbc0   9 months ago   70MB
nginx                           nv1.24                  31364c7f01e7   9 months ago   190MB
hub.atomgit.com/library/nginx   1.24-bullseye-perl      31364c7f01e7   9 months ago   190MB
javanile/lamp                   latest                  93e4adef599c   5 years ago    590MB

1.4 Doecker容器操作

1.4.1创建和运行docker

语法:docker create -it 容器名称 容器ID 分配一个伪终端

  • -i:容器的输入保持打开
  • -t:让docker分配一个伪终端
[root@bogon ~]# docker images
REPOSITORY                      TAG                     IMAGE ID       CREATED        SIZE
hub.atomgit.com/amd64/php       8.0.30-zts-alpine3.16   84fecea0dbc0   9 months ago   70MB
nginx                           nv1.24                  31364c7f01e7   9 months ago   190MB
hub.atomgit.com/library/nginx   1.24-bullseye-perl      31364c7f01e7   9 months ago   190MB
javanile/lamp                   latest                  93e4adef599c   5 years ago    590MB
[root@bogon ~]# docker create -it  nginx 31      //31 IMAGE ID 的开头2个数字
Unable to find image 'nginx:latest' locallylatest: Pulling from library/nginx
a2318d6c47ec: Pull complete 
095d327c79ae: Pull complete 
bbfaa25db775: Pull complete 
7bb6fb0cfb2b: Pull complete 
0723edc10c17: Pull complete 
24b3fdc4d1e3: Pull complete 
3122471704d5: Pull complete 
Digest: sha256:04ba374043ccd2fc5c593885c0eacddebabd5ca375f9323666f28dfd5a9710e3
Status: Downloaded newer image for nginx:latest
623dc9642a3f216d0de1c34f65788711338b03691b402e29999258dec30b6f85[root@bogon ~]# docker run -it nginx &
[root@bogon ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND                   CREATED              STATUS                       PORTS     NAMES
74a4a4169407   nginx     "/docker-entrypoint.…"   2 seconds ago        Up 1 second                  80/tcp    wonderful_chatelet

1.4.2终止docker

语法:docker stop 容器ID/名称

[root@bogon ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND                   CREATED         STATUS         PORTS     NAMES
74a4a4169407   nginx     "/docker-entrypoint.…"   5 minutes ago   Up 5 minutes   80/tcp    wonderful_chatelet
[root@bogon ~]# docker stop 74a4a4169407 
74a4a4169407
[root@bogon ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND                   CREATED         STATUS                     PORTS     NAMES
74a4a4169407   nginx     "/docker-entrypoint.…"   5 minutes ago   Exited (0) 2 seconds ago             wonderful_chatelet
[root@bogon ~]# 

1.4.3导出和导入docker

语法:docker export 容器ID/名称 > 文件名

[root@bogon ~]# docker export 74a4a4169407 >  nginx[root@bogon ~]# ls
anaconda-ks.cfg  nginx  nginx01

1.4.4删除docker

语法:docker rm 容器ID/名称

[root@bogon ~]# docker rm 74a4a4169407
74a4a4169407
[root@bogon ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

这篇关于01 Docker概念和部署的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1148253

相关文章

MySQL 事务的概念及ACID属性和使用详解

《MySQL事务的概念及ACID属性和使用详解》MySQL通过多线程实现存储工作,因此在并发访问场景中,事务确保了数据操作的一致性和可靠性,下面通过本文给大家介绍MySQL事务的概念及ACID属性和... 目录一、什么是事务二、事务的属性及使用2.1 事务的 ACID 属性2.2 为什么存在事务2.3 事务

Web技术与Nginx网站环境部署教程

《Web技术与Nginx网站环境部署教程》:本文主要介绍Web技术与Nginx网站环境部署教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Web基础1.域名系统DNS2.Hosts文件3.DNS4.域名注册二.网页与html1.网页概述2.HTML概述3.

Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例

《Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例》本文介绍Nginx+Keepalived实现Web集群高可用负载均衡的部署与测试,涵盖架构设计、环境配置、健康检查、... 目录前言一、架构设计二、环境准备三、案例部署配置 前端 Keepalived配置 前端 Nginx

ubuntu如何部署Dify以及安装Docker? Dify安装部署指南

《ubuntu如何部署Dify以及安装Docker?Dify安装部署指南》Dify是一个开源的大模型应用开发平台,允许用户快速构建和部署基于大语言模型的应用,ubuntu如何部署Dify呢?详细请... Dify是个不错的开源LLM应用开发平台,提供从 Agent 构建到 AI workflow 编排、RA

ubuntu16.04如何部署dify? 在Linux上安装部署Dify的技巧

《ubuntu16.04如何部署dify?在Linux上安装部署Dify的技巧》随着云计算和容器技术的快速发展,Docker已经成为现代软件开发和部署的重要工具之一,Dify作为一款优秀的云原生应用... Dify 是一个基于 docker 的工作流管理工具,旨在简化机器学习和数据科学领域的多步骤工作流。它

Nginx部署React项目时重定向循环问题的解决方案

《Nginx部署React项目时重定向循环问题的解决方案》Nginx在处理React项目请求时出现重定向循环,通常是由于`try_files`配置错误或`root`路径配置不当导致的,本文给大家详细介... 目录问题原因1. try_files 配置错误2. root 路径错误解决方法1. 检查 try_f

Docker安装MySQL镜像的详细步骤(适合新手小白)

《Docker安装MySQL镜像的详细步骤(适合新手小白)》本文详细介绍了如何在Ubuntu环境下使用Docker安装MySQL5.7版本,包括从官网拉取镜像、配置MySQL容器、设置权限及内网部署,... 目录前言安装1.访问docker镜像仓库官网2.找到对应的版本,复制右侧的命令即可3.查看镜像4.启

debian12安装docker的实现步骤

《debian12安装docker的实现步骤》本文主要介绍了debian12安装docker的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录步骤 1:更新你的系统步骤 2:安装依赖项步骤 3:添加 docker 的官方 GPG 密钥步骤

Windows Docker端口占用错误及解决方案总结

《WindowsDocker端口占用错误及解决方案总结》在Windows环境下使用Docker容器时,端口占用错误是开发和运维中常见且棘手的问题,本文将深入剖析该问题的成因,介绍如何通过查看端口分配... 目录引言Windows docker 端口占用错误及解决方案汇总端口冲突形成原因解析诊断当前端口情况解

Python 迭代器和生成器概念及场景分析

《Python迭代器和生成器概念及场景分析》yield是Python中实现惰性计算和协程的核心工具,结合send()、throw()、close()等方法,能够构建高效、灵活的数据流和控制流模型,这... 目录迭代器的介绍自定义迭代器省略的迭代器生产器的介绍yield的普通用法yield的高级用法yidle