Docker安装及基本命令

本文深入介绍了Docker的背景、容器的六种名称空间,以及Docker的核心概念和优势。通过实操演示了Docker的安装、配置、镜像管理和容器操作,包括镜像搜索、下载、启动、删除等基本命令。此外,还对比了Docker与虚拟化的区别,强调了Docker在简化部署、环境一致性方面的价值。
摘要由CSDN通过智能技术生成

Docker产生的背景

派生出不同的进程来控制不同的服务,——产生了容器技术
虚拟化层的抽象层剥离,使用docker engine

容器的6个名称空间(namespace)

mount文件系统、挂载点
user操作进程的用户和用户组
pid进程编号
uts主机名和主机域
ipc信号量、消息队列,共享内存
net网络设备、网络协议栈、端口等

该pid命名空间:进程隔离(PID:进程ID)
该net命名空间:管理网络接口(net:网络)
该ipc命名空间:管理访问IPC资源
该mnt命名空间:管理文件系统挂载点
该uts命名空间:隔离内核和版本标识符

Docker

Docker是一个用于开发,交付和运行应用程序的开放平台。Docker使您能够将应用程序与基础架构分开,从而可以快速交付软件
是一个开源的应用容器引擎,让开发者可以打包方式封装应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或者Windows机器上,也可以实现虚拟化。容器是完全使用沙箱机制(隔离机制),相互之间不会有任何接口

沙箱(Sandbox):在计算机安全领域,沙箱是一种程序的隔离运行机制

Docker在2013年一炮而红,直到现在,已经成为容器技术的代名词。

Docker从一开始就以提供标准化的运行时环境为目标,真正做到"build once, run anywhere",可以将同一个构建版本用于开发、测试、预发布、生产等任何环境,并且做到了与底层操作系统的解耦(不吃操作系统)。在此基础上还进一步发展出了caas(容器即服务〉技术。

小结:Docker 是基于容器技术的轻量级虚拟化的解决方案
docker是 容器引擎,把Linux的cgroup、namespace等容器底层技术进行完美的封装、并抽象为用户提供创建和管理容器的便捷页面

docker技术的意义

docker 引擎统一了基础设施环境——docker环境
docker 引擎统一了程序打包(装箱)方式——docker镜像
docker 引擎统一了程序部署(运行)方式——docker容器

docker使用环境

打包应用程序简化部署
可脱离底层硬件任意迁移

例:服务器从腾讯云迁移到阿里云

docker核心概念

镜像
一组资源集合,包含了应用程序软件包、应用程序相关的依赖包、运行应用程序所需要的基础依赖包


容器
基于镜像的一种运行时状态


仓库
存放image镜像,
仓库大类:1、公共仓库——docker hub
2、私有仓库 registry harbor

docker和虚拟化的区别

不同点containervM
启动速度秒级分钟级
运行性能接近原生(直接在内核中运行)50%左右损失
磁盘占用MBGB(操作系统镜像2G)
数量成百上千(进程)一股几十台(操作系统级别)
隔离性进程级别系统级别(更彻底)
操作系统主要支持Linux几乎所有
封装程度只打包项目代码和依赖关系,共享宿主机内核克整的操作系统,与宿主机嗝离

docker解决了vm的一个环境孤岛的问题

安装20版Docker

环境配置

systemctl stop firewalld.service
setenforce 0
vim /etc/selinux/config

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

安装依赖包

yum install -y yum-utils device-mapper-persistent-data lvm2

在这里插入图片描述

设置阿里云镜像源

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

在这里插入图片描述
安装docker-ce社区版

yum install -y docker-ce

在这里插入图片描述
启动docker

systemctl start docker
systemctl enable docker

在这里插入图片描述

配置镜像加速

加速器介绍地址
在这里插入图片描述
配置加速地址

tee /etc/docker/daemon.json <<-'EOF'
> {
>   "registry-mirrors": ["https://i657xnlq.mirror.aliyuncs.com"]
> }
> EOF

systemctl daemon-reload
systemctl restart docker

在这里插入图片描述

网络优化

vim /etc/sysctl.conf
net.ipv4.ip_forward=1
sysctl -p
systemctl restart network
systemctl restart docker

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

docker配置文件

"graph": " /data/docker", 
数据目录
"storage-driver": "overlay2",
存储引擎LXc -》overlay —》overlay2
"insecure-registries": ["registry.access.redhat.com","quary.io"]
私有仓库
"registry-mirrors": ["https://q"]
镜像加速
"bip" : "172.7.5.1/24",
docker网络
"exec-opts":[ "native.cgroupdriver=systemd" ],
启动时候的额外参数(驱动)
"live-restore" : true
当docker容器引擎挂掉的时候,使用docker跑起来的容器还能运行(分离)

Docker基本操作命令

镜像操作的基本命令

查看docker 版本信息
格式:docker version

[root@localhost ~]# docker version 
Client: Docker Engine - Community
 Version:           20.10.6
 API version:       1.41
 Go version:        go1.13.15
 Git commit:        370c289
 Built:             Fri Apr  9 22:45:33 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.6
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.13.15
  Git commit:       8728dd2
  Built:            Fri Apr  9 22:43:57 2021
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.4.6
  GitCommit:        d71fcd7d8303cbf684402823e425e9dd2e99285d
 runc:
  Version:          1.0.0-rc95
  GitCommit:        b9ee9c6314599f1b4a7f497e1f1f856fe433d3b7
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

镜像搜索
格式:docker search 关键字

[root@localhost ~]# docker search nginx
NAME                               DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
nginx                              Official build of Nginx.                        14946     [OK]       
jwilder/nginx-proxy                Automated Nginx reverse proxy for docker con…   2032                 [OK]
richarvey/nginx-php-fpm            Container running Nginx + PHP-FPM capable of…   813                  [OK]
jc21/nginx-proxy-manager           Docker container for managing Nginx proxy ho…   192                  
linuxserver/nginx                  An Nginx container, brought to you by LinuxS…   147                  

在这里插入图片描述
下载nginx镜像
格式:docker pull 关键字

[root@localhost ~]# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
69692152171a: Pull complete 
30afc0b18f67: Pull complete 
596b1d696923: Pull complete 
febe5bd23e98: Pull complete 
8283eee92e2f: Pull complete 
351ad75a6cfa: Pull complete 
Digest: sha256:6d75c99af15565a301e48297fa2d121e15d80ad526f8369c526324f0f7ccb750
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest

下载后存放的路径:/var/lib/docker/image/overlay2/repositories.json

在这里插入图片描述
查看镜像
格式:docker images

[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED      SIZE
nginx        latest    d1a364dc548d   4 days ago   133MB

查看镜像信息
格式:docker inspect 镜像ID

[root@localhost ~]# docker inspect d1a364dc548d
[
    {
        "Id": "sha256:d1a364dc548d5357f0da3268c888e1971bbdb957ee3f028fe7194f1d61c6fdee",
        "RepoTags": [
            "nginx:latest"
        ],
        "RepoDigests": [
            "nginx@sha256:6d75c99af15565a301e48297fa2d121e15d80ad526f8369c526324f0f7ccb750"
        ],
        "Parent": "",
        "Comment": "",
        "Created": "2021-05-25T15:43:43.382480482Z",
        "Container": "7b06b818c018bb8563a3d786d6b16971c6f470c3d4c5288d908a3851b8261086",
        "ContainerConfig": {

在这里插入图片描述
添加镜像标签
格式:docker tag 镜像标签 新标签

[root@localhost ~]# docker tag nginx:latest nginx:web
[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED      SIZE
nginx        latest    d1a364dc548d   4 days ago   133MB
nginx        web       d1a364dc548d   4 days ago   133MB

删除镜像
格式: docker rmi 镜像标签

[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED      SIZE
nginx        latest    d1a364dc548d   4 days ago   133MB
nginx        web       d1a364dc548d   4 days ago   133MB
[root@localhost ~]# docker rmi nginx:web 
Untagged: nginx:web
[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED      SIZE
nginx        latest    d1a364dc548d   4 days ago   133MB

在这里插入图片描述
镜像输出
格式:docker save -o 导出文件名 镜像标签

[root@localhost ~]# cd /opt/
[root@localhost /opt]# docker save -o nginx nginx:latest 
ls
[root@localhost /opt]# ls
containerd  nginx  rh

在这里插入图片描述
镜像导入
格式: docker load < 镜像文件

在这里插入图片描述

容器操作的命令

容器列表查询
格式:docker ps -a (-a 列出最近一次启动的容器)

[root@localhost /opt]# docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

创建容器
格式:docker create -it 选项 /bin/bash

  • -i让容器的标准输入保持打开
  • -t 让docker分配一个伪终端

在这里插入图片描述
#/bin/bash 指定终端
#statys :created 创建状态,暂时还未开启
#container id 容器ID

启动容器
格式:docker start 容器ID

[root@localhost /opt]# docker start 3d19df778e44
3d19df778e44
[root@localhost /opt]# docker ps -a 
CONTAINER ID   IMAGE          COMMAND                  CREATED              STATUS                       PORTS     NAMES
3d19df778e44   nginx:latest   "/docker-entrypoint.…"   About a minute ago   Exited (127) 8 seconds ago             nostalgic_pare

一次性执行容器操作
格式: docker run 镜像名称 操作指令

[root@localhost /opt]# docker run centos:7 /usr/bin/bash -c ls /
Unable to find image 'centos:7' locally
7: Pulling from library/centos
2d473b07cdd5: Pull complete 
Digest: sha256:0f4ec88e21daf75124b8a9e5ca03c37a5e937e0e108a255d890492430789b60e
Status: Downloaded newer image for centos:7
anaconda-post.log
bin
dev
etc
home
lib
lib64
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var

如果不希望执行命令后结束进程,可以给一条循环语句命令

docker run -d centos:7 /bin/bash -c "while true;do echo hello;done"

进入容器
格式:
docker run -it 容器名 容器环境
在容器运行状态下:docker e’x’ec -it 容器ID 容器环境

[root@localhost /opt]# docker run -it nginx:latest /bin/bash
root@1a02ab298caf:/# 
root@1a02ab298caf:/# 
root@1a02ab298caf:/# exit
exit

容器导出
格式:docker export 容器ID > 导出的容器名

在这里插入图片描述

容器删除
格式: docker rm 容器ID (必须先停止)
在这里插入图片描述

总结

镜像命令

###镜像基本命令

#镜像搜索
docker search 关键字(nginx)

#镜像下载
docker pull 关键字(nginx)

#镜像查询
docker images

#查看镜像详细信息
docker inspect 镜像ID

#添加镜像标签
docker tag 镜像标签 新标签
docker tag nginx:latest nginx:web

#删除镜像
docker rmi 镜像标签(nginx:latest)

#镜像输出
docker save -o nginx_img nginx:latest

#镜像导入
docker load <镜像文件(nginx_img)

容器命令

##容器基本操作命令

#容器列表查询
docker ps -a

#创建容器
docker create -it nginx:latest /bin/bash

#启动容器
docker start 容器ID

#一次性容器操作
docker run 镜像名称 操作指令
docker run centos:7 /usr/bin/bash -c ls /

#进入容器
docker run -it 容器名 环境
docker run -it nginx:latest /bin/bash

#容器导入
cat 容器ID | docker import -镜像名 (会生成镜像,不会生成容器)

#容器导出
docker export 容器ID > 导出的容器名

#容器删除
docker rm 容器ID (必须先停止再删除)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值