Docker(一)

文章目录

    • 1. 什么是容器
    • 2. 容器和虚拟机的区别
    • 3. docker-ce的安装
    • 4. docker主要内容
    • 5. docker镜像常用命令
    • 6. docker容器常用命令
    • 7. docker端口映射
    • 8. docker数据卷

1. 什么是容器

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

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

2. 容器和虚拟机的区别

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

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

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

Docker(一)_第1张图片

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 start docker
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
# 这是因为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:alpine
run 创建并启动一个容器
-d 放后台启动
-p 端口映射
nginx:latest docker镜像名称

5. docker镜像常用命令

# docker镜像命令都被分成了组,镜像有关的命令
[root@docker01 ~]# docker image 
build    history  import   inspect  load     ls       prune    pull     push     rm       save     tag
docker search 搜索镜像, 优先选官方,stars数量多
docker pull 拉取镜像(下载镜像)
docker push 推送镜像(上传镜像)

docker save 导出镜像
例子:docker save centos:7 -o docker_centos7.tar.gz

docker load 导入镜像(import导入镜像没有导入名称)
例子: docker load -i docker_nginx.tar.gz 

docker images 查看镜像列表(或者 docker image ls)

docker rmi 删除镜像(docker image rm )
例子:docker rmi 1d12345ds

docker  tag 镜像id  给镜像打标签
例子:doker image tag 1d12345ds nginx:v1

docker image inpect   看镜像的属性
例子: docker image inpect nginx:v1

docker image prune 清理没有名称或无效的镜像(清理黑户)
例子: docker image import  nginx.tar.gz
 	  docker image prune # 因为import导入的镜像不带名称所以会被清理掉

小提示:

官方镜像   docker.io/library/nginx:1.18-alpine
用户镜像	  docker.io/dong/alpine:3.9
第三方镜像 index.tenxcloud.com/system_containers/metrics-server-amd64:v0.3.1

docker自动补全命令
# 安装自动补全命令
yum install bash-completion
# 启用自动补全
source /usr/share/bash-completion/bash_completion

6. docker容器常用命令

# docker镜像命令都被分成了组,容器相关的命令
[root@docker01 ~]# docker container 
attach   create   export   logs     port     restart  start    top      wait     
commit   diff     inspect  ls       prune    rm       stats    unpause  
cp       exec     kill     pause    rename   run      stop     update
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 端口,出现小鸟飞飞。

你可能感兴趣的:(Docker&K8s,docker,容器,运维)