1. Docker 基础(概念、镜像命令、容器命令、...)

本文详细介绍了Docker的基础知识,包括Docker的概念、版本、安装和配置,以及如何使用镜像命令和容器命令。讨论了挂载卷、Docker数据卷和容器数据卷的重要性,还探讨了Docker网络、DockerFile构建镜像的过程,并提到了Docker Compose在部署应用中的作用。此外,还提供了多个视频和参考链接以便深入学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

环境部署的三个时代:

  1. 同一个服务器,部署多个网站 ── 如果一个被入侵,全部挂掉
  2. 同一个服务器,安装多个虚拟机,虚拟里部署网站 ── 重复虚拟计算机模块,浪费资源、性能
  3. 同一个服务器,多个容器(默认隔离)

docker为后者。

环境

# 概念

docker主机( Host ):安装了Docker程序的机器(Docker直接安装在操作系统之上);

docker客户端( Client ):连接docker主机进行操作;

docker仓库( Registry ):用来保存各种打包好的软件镜像;

docker镜像( Images ):软件打包好的镜像;放在docker仓库中;

docker容器( Container ):镜像启动后的实例称为一个容器;容器是独立运行的一个或一组应用

在这里插入图片描述

# 版本

Docker版本变化说明:

Docker从1.13.x版本开始,版本分为企业版EE和社区版CE,版本号也改为按照时间线来发布,比如17.03就是2017年3月。

Docker的linux发行版的软件仓库从以前的https://apt.dockerproject.org和https://yum.dockerproject.org变更为目前的https://download.docker.com, 软件包名字改为docker-ce和docker-ee。

# 安装、卸载

安装(官网: https://docs.docker.com/engine/install/ubuntu/

💡Docker的社区版(Docker Community Edition)叫做docker-ce。老版本的Docker包叫做docker或者docker-engine,如果安装了老版本的docker得先卸载然后再安装新版本的docker。

💡docker的发展非常迅速,apt源的更新往往比较滞后。所以docker官网推荐的安装方式都是下载docker安装脚本安装。 (⚠️所以下述的安装脚本只能作为参考了,具体以官网介绍为准!)

# 💡以官网介绍为准

# docker-ce 社区版
# docker-ee 企业版
yum install docker-ce docker-cli containerd.io
systemctl start docker 
docker version 

配置

# 开机启动
systemctl enable docker.service

# docker用户组
sudo groupadd docker
sudo usermod -aG docker ${
   
   USER}
sudo systemctl restart docker

卸载

# 卸载依赖
yum remove docker-ce docker-cli containerd.io
# 删除资源,路径为docker默认工作路径
rm -rf /var/lib/docker
docker version # docker版本信息
docker info    # docker系统信息,包括镜像和容器的数量
docker 命令 --help 

docker是CS结构的。Docker的守护进程运行在宿主机上,通过Socket从客户端访问。
DockerServer接收到Docker-Client的指令就会执行

在这里插入图片描述

# 设置国内镜像

  1. Docker中国区官方镜像
    https://registry.docker-cn.com
  2. 网易
    http://hub-mirror.c.163.com
  3. ustc
    https://docker.mirrors.ustc.edu.cn
  4. 中国科技大学
    https://docker.mirrors.ustc.edu.cn
  5. 阿里云容器 生成自己的加速地址
    登录:cr.console.aliyun.com
第一步:新建或编辑daemon.json
vi /etc/docker/daemon.json
 
第二步:daemon.json中编辑如下
{
   
   
    "registry-mirrors": ["http://hub-mirror.c.163.com"]
}
 
第三步:重启docker
systemctl restart docker.service
 
第四步:执行docker info查看是否修改成功
docker info

# 免sudo

调用docker命令行需要root权限,但是如果使用sudo命令,环境变量会变化。

sudo docker ...

下面设置免去sudo:

sudo groupadd docker          # 创建docker用户组
sudo usermod -aG docker $USER # 当前用户加入docker用户组
newgrp docker                 # 刷新用户权限

docker ...

命令

从docker1.13开始,把繁多的命令划入几个子命令中(把命令进行分组)

  1. 镜像
  2. 网络
  3. 文件存储(卷技术)
  4. 容器

在这里插入图片描述

# 镜像命令 ── images

命令

# ====================== ⭐️历史命令
# 查看
docker images 
# 搜索
docker search mysql
# 下载
docker pull mysql 
# 更换阿里国内源 https://www.cnblogs.com/cao-lei/p/14448052.html
# 删除
docker rmi -f mysql
# 查看镜像的构建构成
docker history  镜像id

# ...

# ======================== ⭐️归类命令
docker image <opt>
	build    构建镜像
	history  查看镜像的构建历史
	inspect  查看镜像的信息
	load     导入
	ls       列出
	prune    移除未使用的镜像
	pull     从仓库拉取镜像
	push     把镜像推送到仓库
	rm       删除镜像
	save     导出镜像

demo 新

docker image pull hello-world          # 从仓库拉取镜像
docker image ls                        # 列出所有的镜像
docker inage inspect api:v2            # 查看镜像的详细信息
docker image save hello-world -o hello.img  # 导出镜像为文件
docker image rm hello-world:latest     # 删除镜像
docker image load -i hello.img         # 导入镜像

demo 旧

# 下载镜像 docker pull 镜像名[:tag]
root@lawsssscat-virtual-machine:/etc/docker# docker pull mysql
Using default tag: latest # 如果不写 tag 默认是 latest
latest: Pulling from library/mysql 
72a69066d2fe: Pull complete # 分层下载,docker image的核心 联合文件系统
93619dbc5b36: Pull complete
99da31dd6142: Pull complete
626033c43d70: Pull complete
37d5d7efb64e: Pull complete
ac563158d721: Pull complete
d2ba16033dad: Pull complete
688ba7d5c01a: Pull complete
00e060b6d11d: Pull complete
1c04857f594f: Pull complete
4d7cfa90e6ea: Pull complete
e0431212d27d: Pull complete
Digest: sha256:e9027fe4d91c0153429607251656806cc784e914937271037f7738bd5b8e7709
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest # 真实地址

root@lawsssscat-virtual-machine:/etc/docker# docker pull mysql:5.7
5.7: Pulling from library/mysql
72a69066d2fe: Already exists # 分层下载,已存在的就不下载了
93619dbc5b36: Already exists
99da31dd6142: Already exists
626033c43d70: Already exists
37d5d7efb64e: Already exists
ac563158d721: Already exists
d2ba16033dad: Already exists
0ceb82207cd7: Pull complete  # 分层下载,下载未存在的
37f2405cae96: Pull complete
e2482e017e53: Pull complete
70deed891d42: Pull complete
Digest: sha256:f2ad209efe9c67104167fc609cca6973c8422939491c9345270175a300419f94
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7

root@lawsssscat-virtual-machine:/etc/docker# docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
mysql        5.7       c20987f18b13   3 months ago   448MB
mysql        latest    3218b38490ce   3 months ago   516MB

root@lawsssscat-virtual-machine:/etc/docker# docker rmi -f mysql
Untagged: mysql:latest
Untagged: mysql@sha256:e9027fe4d91c0153429607251656806cc784e914937271037f7738bd5b8e7709
Deleted: sha256:3218b38490cec8d31976a40b92e09d61377359eab878db49f025e5d464367f3b
Deleted: sha256:aa81ca46575069829fe1b3c654d9e8feb43b4373932159fe2cad1ac13524a2f5
Deleted: sha256:0558823b9fbe967ea6d7174999be3cc9250b3423036370dc1a6888168cbd224d
Deleted: sha256:a46013db1d31231a0e1bac7eeda5ad4786dea0b1773927b45f92ea352a6d7ff9
Deleted: sha256:af161a47bb22852e9e3caf39f1dcd590b64bb8fae54315f9c2e7dc35b025e4e3
Deleted: sha256:feff1495e6982a7e91edc59b96ea74fd80e03674d92c7ec8a502b417268822ff

root@lawsssscat-virtual-machine:/etc/docker# docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
mysql        5.7       c20987f18b13   3 months ago   448MB

# 删除所有
root@lawsssscat-virtual-machine:/etc/docker# docker rmi -f $(docker images -aq)
Untagged: mysql:5.7
Untagged: mysql@sha256:f2ad209efe9c67104167fc609cca6973c8422939491c9345270175a300419f94
Deleted: sha256:c20987f18b130f9d144c9828df630417e2a9523148930dc3963e9d0dab302a76
Deleted: sha256:6567396b065ee734fb2dbb80c8923324a778426dfd01969f091f1ab2d52c7989
Deleted: sha256:0910f12649d514b471f1583a16f672ab67e3d29d9833a15dc2df50dd5536e40f
Deleted: sha256:6682af2fb40555c448b84711c7302d0f86fc716bbe9c7dc7dbd739ef9d757150
Deleted: sha256:5c062c3ac20f576d24454e74781511a5f96739f289edaadf2de934d06e910b92
Deleted: sha256:8805862fcb6ef9deb32d4218e9e6377f35fb351a8be7abafdf1da358b2b287ba
Deleted: sha256:872d2f24c4c64a6795e86958fde075a273c35c82815f0a5025cce41edfef50c7
Deleted: sha256:6fdb3143b79e1be7181d32748dd9d4a845056dfe16ee4c827410e0edef5ad3da
Deleted: sha256:b0527c827c82a8f8f37f706fcb86c420819bb7d707a8de7b664b9ca491c96838
Deleted: sha256:75147f61f29796d6528486d8b1f9fb5d122709ea35620f8ffcea0e0ad2ab0cd0
Deleted: sha256:2938c71ddf01643685879bf182b626f0a53b1356138ef73c40496182e84548aa
Deleted: sha256:ad6b69b549193f81b039a1d478bc896f6e460c77c1849a4374ab95f9a3d2cea2

root@lawsssscat-virtual-machine:/etc/docker# docker images
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE

# 容器命令 ── container、container run

命令 旧

docker  run [可选参数(一堆)] image

# 参数说明
--name="name"     容器名字
-d  --detach      后台模式运行
-i  --interactive 表示交互式的,即正在访问的宿主机终端的输入会传入容器内,容器内的终端打印会显示在正在访问的宿主机终端上
-t  --tty         指定容器内的一个终端应用,比如/bin/bash和python
-it               通常是i和t组合使用,
-p                指定端口 -p 宿主:容器内
-P(大写)         随机指定端口  
-w                指定默认工作目录
--rm              容器退出后,自动自动删除
--restart=always  容器关闭后,自动重启
--privileged=true 容器root拥有真正的root权限:允许使用docker、mount等操作

# 列出所有容器
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

骆言

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值