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
相关推荐
年薪丰厚38 分钟前
如何在K8S集群中查看和操作Pod内的文件?
docker·云原生·容器·kubernetes·k8s·container
zhangj112539 分钟前
K8S Ingress 服务配置步骤说明
云原生·容器·kubernetes
岁月变迁呀41 分钟前
kubeadm搭建k8s集群
云原生·容器·kubernetes
墨水\\41 分钟前
二进制部署k8s
云原生·容器·kubernetes
Source、42 分钟前
k8s-metrics-server
云原生·容器·kubernetes
颜淡慕潇1 小时前
【K8S问题系列 |19 】如何解决 Pod 无法挂载 PVC问题
后端·云原生·容器·kubernetes
大熊程序猿3 小时前
K8s证书过期
云原生·容器·kubernetes
摸鱼也很难6 小时前
Docker 镜像加速和配置的分享 && 云服务器搭建beef-xss
运维·docker·容器
鸠摩智首席音效师9 小时前
Docker 中如何限制CPU和内存的使用 ?
docker·容器
Michaelwubo9 小时前
Docker dockerfile镜像编码 centos7
运维·docker·容器