您现在的位置是:首页 >学无止境 >Docker(一)网站首页学无止境

Docker(一)

熬夜泡枸杞 2024-08-17 00:01:02
简介Docker(一)

1. 什么是容器

容器是隔离的环境中运行的一个进程,如果进程结束,容器就会停止,容器的隔离环境,拥有自己的ip地址,系统文件,主机名,进程管理。

程序:代码,软件,命令
进程:正在运行的程序

2. 容器和虚拟机的区别

虚拟机: 硬件cpu支持(vt虚拟化),模拟计算硬件,走正常的开机启动
bios开机自检–根据bios启动项–读取硬盘第一个扇区grub,uefi,centos7,加载内核,启动系统第一个进程/sbin/init systemd

容器:不需要硬件cpu的支持,共用宿主机内核,启动容器的第一个进程
容器优势:启动快,性能高,损耗少,轻量级

100虚拟机 100个服务 10宿主机
100容器 100个服务 6宿主机

在这里插入图片描述

3. docker-ce的安装

#安装docker-ce
wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo
sed -i 's+download.docker.com+mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo
yum install docker-ce -y

systemctl enable docker
systemctl start docker

#验证
[root@docker01 ~]# docker version
Client: Docker Engine - Community
 Version:           24.0.2
 API version:       1.43
 Go version:        go1.20.4
 Git commit:        cb74dfc
 Built:             Thu May 25 21:55:21 2023
 OS/Arch:           linux/amd64
 Context:           default
# 这是因为docker服务没有启动
Cannot connect to the Docker daemon at 
unix:///var/run/docker.sock. Is the docker daemon running?

[root@docker01 ~]# systemctl start docker
[root@docker01 ~]# systemctl enable docker
[root@docker01 ~]# docker version
Client: Docker Engine - Community
 Version:           24.0.2
 API version:       1.43
 Go version:        go1.20.4
 Git commit:        cb74dfc
 Built:             Thu May 25 21:55:21 2023
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          24.0.2
  API version:      1.43 (minimum version 1.12)
  Go version:       go1.20.4
  Git commit:       659604f
  Built:            Thu May 25 21:54:24 2023
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.21
  GitCommit:        3dce8eb055cbb6872793272b4f20ed16117344f8
 runc:
  Version:          1.1.7
  GitCommit:        v1.1.7-0-g860f061
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

小技巧:

# 用yum命令安装软件,收集安装包,在没有网络的情况下软件
vim /etc/yum.conf
# 用yum下载rpm包,下载安装完之后就删了。如果keepcache=1,rpm包就不删了
keepcache=0

# 缓存目录: /var/cache/yum
# 收集rpm包: 
find /var/cache/yum -type f -name "*.rpm"
mkdir docker1903_rpm
find /var/cache/yum -type f -name "*.rpm" | xargs mv -t docker1903_rpm
tar zcf docker1903_rpm.tar.gz docker1903_rpm

# 进行安装软件
cd  docker1903_rpm
yum localinstall -y "*.rpm"

4. docker主要内容

docker是一个cs架构, docker主要:镜像 容器 仓库 网络 存储 监控
docker是一个软件的打包技术.

docker run -d -p 80 :80 nginx:latest
run 创建并启动一个容器
-d 放后台启动
-p 端口映射
nginx:latest docker镜像名称

5. docker镜像常用命令

docker search 搜索镜像, 优先选官方,stars数量多
docker pull 拉取镜像(下载镜像)
docker push 推送镜像(上传镜像)
docker load 导入镜像
例子: docker load -i docker_nginx.tar.gz
docker save 导出镜像
例子:docker save centos:7 -o
docker_centos7.tar.gz
docker images 查看镜像列表
docker rmi 删除镜像
docker tag 给镜像打标签

6. docker容器常用命令

docker run 创建并启动容器
例子:docker run -d -it -p 80:80 nginx:latest
docker create 创建容器 --name
docker start 启动容器
docker stop 停止容器
docker restart 重启容器
docker kill 强制停止容器
docker ps 查看容器列表 -a 查看所有容器
docker rm 删除容器
批量删除所有容器 docker rm -f `docker ps -
a -q`
docker exec 进入正在运行的容器(分配一个新终
端)
例子: docker exec -it 容器id/容器名字
/bin/bash(/bin/sh)
docker attach 进入正在运行的容器(使用相同的终
端),偷偷离开的快捷键ctrl +p,ctrl +q

容器想要放在后台一直运行的话,那么容器的初始命令,必须夯住(前台运行),否则容器就会退出。

前台运行

nginx -g 'daemon off;'
/usr/sbin/php-fpm --nodaemonize

7. docker端口映射

docker run
-p 宿主机端口:容器端口
-p 宿主机ip1:宿主机端口:容器端口 (多个容器同时
使用 80 端口)
-p 宿主机ip1::容器端口 随机端口映射
-p 宿主机ip1::容器端口/udp 使用udp协议做随机
端口映射
-p 80 :80 -p 3306 :
-p 1111 -1119:1111-1119 端口范围映射

-P 自动随机端口映射

8. docker数据卷

docker run
-v 宿主机绝对目录:容器目录
-v 容器目录 #创建一个随机卷,来持久化容器
的目录下的数据
-v 卷名:容器目录 #创建一个固定名字的卷,来持
久化容器的目录下的数据
--volumes-from 跟某一个容器挂载所有相同的卷

小练习: 只启动一个nginx容器,要求访问 80 端口,出现nginx默认欢迎首页,访问 81 端口,出现小鸟飞飞。

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。