01 Docker概念和部署

目录

[1.1 Docker 概述](#1.1 Docker 概述)

[1.1.1 Docker 的优势](#1.1.1 Docker 的优势)

[1.1.2 镜像](#1.1.2 镜像)

[1.1.3 容器](#1.1.3 容器)

[1.1.4 仓库](#1.1.4 仓库)

[1.2 安装 Docker](#1.2 安装 Docker)

[1.2.1 配置和安装依赖环境](#1.2.1 配置和安装依赖环境)

1.3镜像操作

[1.3.1 搜索镜像](#1.3.1 搜索镜像)

[1.3.2 获取镜像](#1.3.2 获取镜像)

[1.3.3 查看镜像](#1.3.3 查看镜像)

[1.3.4 给镜像重命名](#1.3.4 给镜像重命名)

[1.3.5 存储,载入镜像和删除镜像](#1.3.5 存储,载入镜像和删除镜像)

[1.4 Doecker容器操作](#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 配置和安装依赖环境

bash 复制代码
[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

bash 复制代码
[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 镜像名称

bash 复制代码
[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

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

也可以去浏览器搜索

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

bash 复制代码
[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 容器名称:[标签] 新容器名称:[标签]

bash 复制代码
[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 < 存储的文件名

bash 复制代码
//存储
[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分配一个伪终端
bash 复制代码
[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' locally

latest: 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/名称

bash 复制代码
[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/名称 > 文件名

bash 复制代码
[root@bogon ~]# docker export 74a4a4169407 >  nginx

[root@bogon ~]# ls
anaconda-ks.cfg  nginx  nginx01

1.4.4删除docker

语法:docker rm 容器ID/名称

bash 复制代码
[root@bogon ~]# docker rm 74a4a4169407
74a4a4169407
[root@bogon ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
相关推荐
灼烧的疯狂13 分钟前
K8S + Jenkins 做CICD
容器·kubernetes·jenkins
wenyue11211 小时前
Revolutionize Your Kubernetes Experience with Easegress: Kubernetes Gateway API
容器·kubernetes·gateway
yunfanleo1 小时前
docker run m3e 配置网络,自动重启,GPU等 配置渠道要点
linux·运维·docker
一元咖啡2 小时前
SpringCloud Gateway转发请求到同一个服务的不同端口
spring·spring cloud·gateway
梅见十柒3 小时前
wsl2中kali linux下的docker使用教程(教程总结)
linux·经验分享·docker·云原生
天天扭码3 小时前
五天SpringCloud计划——DAY2之单体架构和微服务架构的选择和转换原则
java·spring cloud·微服务·架构
跳跳的向阳花4 小时前
03-03、SpringCloud第三章,负载均衡Ribbon和Feign
spring cloud·ribbon·负载均衡
O&REO5 小时前
单机部署kubernetes环境下Overleaf-基于MicroK8s的Overleaf应用部署指南
云原生·容器·kubernetes
运维小文6 小时前
K8S资源限制之LimitRange
云原生·容器·kubernetes·k8s资源限制