docker

docker基础

docker 根目录迁移参考链接
https://www.cnblogs.com/jhno1/p/14741741.html

docker通过内核虚拟化技术(namespace及cgroups等)来提供容器的资源隔离与安全保障等,由于docker通过操作系统层的虚拟化实现隔离,所以docker容器在运行时,不需要类似虚拟机额外的操作系统开销,提供资源利用率。

NameSpace 资源隔离【以下】

PID -进程编号 内核版本:2.6.24

NET-网络设备,网络协议栈,端口等 内核版本:2.6.29

IPC-信号量,消息队列,共享内存 内核版本:2.6.29

Mount -文件系统,挂载点 内核版本:2.4.19

UTS-主机名和主机域 内核版本:2.6.19

USER- 操作进程的用户和用户组 内核版本:3.8.x

docker容器技术,centos6已经不适用了。ubuntu,和centos7可以。ubuntu 18版本的,内核已经达到了4,x

简介

docker 是基于容器技术的轻量级虚拟化解决方案

Docker 是容器引擎,把linux的cgroup,namespace 等容器底层技术进行封装抽象为用户提供了创建和管理容器的便捷界面(包括命令行和api)

容器和虚拟机的不同点:

特性 容器 虚拟机
启动速度 秒级 分钟级
性能 接近原生 较好
内存 MB级 GB级
硬盘适应 MB级 GB级
运行密度 单台主机支持上千个 单台主机支持几个
隔离性 安全隔离 完全隔离
迁移 优秀 一般

docker 安装

1.基础检查
1.检查内核版本 (大于3.8)
uname -a  
Linux docker 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

2.关闭防火墙
systemctl stop   firewalld

3.关闭selinux
 sed -i s#SELINUX=enforcing#SELINUX=disabled#g /etc/selinux/config 
 临时关闭
 setenforce 0
2.配置环境

yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.rep

卸载之前安装旧版本docker 
yum remove doceker docker-common docker-selinux docker-engine

安装指定版本
yum install docker-ce-20.10.8 docker-ce-cli-20.10.8 containerd.io

初始化系統环境
yum install -y yum-utils device-mapper-persistent-data lvm2	

3.優化

打开阿里云官网  产品  --> 容器与中间件  -->  容器与镜像服务ACR --> 管理控制台 --> 镜像加速器 --> CentOS

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://8mh75mhz.mirror.aliyuncs.com"]
}
EOF

4.安装docer

展示docker有哪些版本
yum list docker-ce   --show-duplicates


安裝docker
yum -y install docker-ce


4.启动并设置开机自启
systemctl enable   --now  docker.service
5.docker info

查看基础信息

docker 第二篇 鏡像操作

1.镜像
2.容器
3.仓库

容器由镜像实例化出来;容器转存成镜像;镜像提交或拉取到仓库;

镜像

特性

Docker 镜像位于bootfs之上

每一层镜像的下面称为其父镜像

第一层镜像为Base Image

容器在最顶层

其下的所有层都为readonly

Docker 将readonly的FS层称为"image"

构成

\({registry_name}/\){respository_name}/\({image_name}:\){tag_name}

例子

docker.io/library/alpine:3.10.1

搜索镜像

docker search  [镜像名称]
-f  :过滤输出内容
--limit 限制展示个数

eg: docker search nginx

NAME        DESCRIPTION 【描述】       STARS【星星推荐数】    OFFICIAL【官方】     AUTOMATED
nginx     Official build of Nginx.          15844                [OK] 

一般推荐使用官方

拉取镜像

docker pull [镜像名称]
eg: 拉取nginx 1.18.0版本

[root@docker lzl]#   docker pull nginx:1.18.0

1.18.0: Pulling from library/nginx
f7ec5a41d630: Pull complete 
0b20d28b5eb3: Pull complete 
1576642c9776: Pull complete 
c12a848bad84: Pull complete 
03f221d9cf00: Pull complete 
Digest: sha256:e90ac5331fe095cea01b121a3627174b2e33e06e83720e9a934c7b8ccc9c55a0
Status: Downloaded newer image for nginx:1.18.0
docker.io/library/nginx:1.18.0

显示镜像

docker images 
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
hello-world   latest    feb5d9fea6a5   2 months ago   13.3kB
nginx         1.18.0    c2c45d506085   7 months ago   133MB

REPOSITORY  名称
TAG         版本
IMAGE ID    全球唯一
CREATED     镜像生成的时间
SIZE        镜像大小 
​```

删除镜像

docker rmi [镜像名称或者镜像id]
-f 强制删除

#docker rmi nginx
docker image rm nginx

清空镜像

docker image  prune 

-a: 删除所有镜像

保存鏡像

# save 2个都可以
docker save -o   nginx1.tar.gz  nginx:latest
docker save  nginx:latest  >  nginx1.tar.gz


# load
docker load -i nginx1.tar.gz
- 保存镜像三种方式的区别
  1、export保存的镜像体积要小于save(save保存更完全,export保存会丢掉一些不必要的数据)
  
  2、export可以重命名镜像名称而save则不行
  3、save可以同时保存多个镜像而export则不行

docker 第三篇

1.容器

2.镜像

3.仓库

容器由镜像实例化出来;容器转存成镜像;镜像提交或拉取到仓库;

docker 容器

特性

启动速度快

运行密度高

隔离性高

迁移性强

命令
创建容器
docker run  [參數] [鏡像名稱][运行容器的启动命令]
運行1.16.1版本的nginx
eg:
[root@docker lzl]# docker run  -d  nginx:1.16.1
Unable to find image 'nginx:1.16.1' locally
1.16.1: Pulling from library/nginx
54fec2fa59d0: Pull complete 
5546cfc92772: Pull complete 
50f62e3cdaf7: Pull complete 
Digest: sha256:d20aa6d1cae56fd17cd458f4807e0de462caf2336f0b70b5eeb69fcaaf30dd9c
Status: Downloaded newer image for nginx:1.16.1
61b255d000fb220243be6e7a5df54818cd8cf33916a11c1bcc195bcc9645f101

#本地鏡像不存在的情況下,會从网络拉取一个1.16.1
#參數
-d : 以守护进程的方式运行一个容器
		docker run -d [镜像名称] [cmd]
	
	--name : 指定容器的名称
		docker run -d --name [容器名称] [镜像的名称] [cmd]
	
	-p : 指定端口映射
		docker run -d -p 宿主主机端口:容器内端口 [镜像名称] [cmd]
	
	-P :随机端口映射
		docker run -d -P [镜像名称] [cmd]
	
	-i : 打开标准输出
	
	-t : 创建一个伪终端
		docker run -it [镜像名称] [cmd]
	
	-v : 挂载目录到容器中
		docker run -v 宿主主机目录:容器内目录  [镜像名称] [cmd]
	
	--rm : 容器生命周期结束时立即删除
		docker run --rm [镜像名称] [cmd]
	
	-e : 在容器中创建一个环境变量
		docker run -e NAME=Centos -d [镜像名称] [cmd]
	
	--link : 连接上一个容器,实现网络互通
		docker run --link 被连接的容器的名称:连接别名 [镜像名称] [cmd]
	
	-h : 设置容器主机名
		docker run -h "主机名"  [镜像名称] [cmd]
  • docker run 运行流程
    1、检查本地是否用指定镜像,如果没有则去对应的仓库下载镜像
    2、启动容器,如果指定了命令则使用指定的命令,如果没有则使用默认的命令
    3、返回容器ID
查看容器
docker ps [參數]
docker ps #查看當前系統中正在運行的容器列表
#參數
	-a : 查看系统中所有的容器。
	-q : 仅显示容器的ID
eg
[root@docker lzl]# docker ps  -q
61b255d000fb

停止容器

docker stop [容器的ID|名称]

啓動容器

docker start [容器的ID|名称]

#(该容器必须是系统已经存在的容器)
刪除容器
docker rm [容器名称|ID]
# 参数
	-f : 强制删除
	docker rm -f [容器名称|ID]

# 清空容器
docker rm $(docker ps -a -q)
查看容器
docker inspect [容器名称|ID]
[root@docker lzl]# docker inspect  nginx:1.16.1 
複製
#复制到容器内
docker cp [宿主主机文件路径]  容器ID:容器内路径
#复制到容器外
docker cp 容器ID:容器内路径 [宿主主机文件路径]
进入容器
# 进入容器一般有四种

1、exec : 在容器外向容器内执行一个命令(官方推荐)
	docker exec [参数] [容器的名称|ID] [cmd]

2、attach : 在早期docker提供的进入容器的命令(缺点:当其结束时,容器也跟着结束了)
	docker attach [容器ID|名称]

3、nsenter : 建立一个管道连接上容器主ID
	nsenter --target $( docker inspect -f {{.State.Pid}} 30d369d70bcd) --mount --uts --ipc --net --pid

4、ssh : 通过ssh连接
eg:
[root@docker lzl]# docker exec -it musing_meninsky  bash 
查看日志
docker logs [鏡像名稱]
#參數
     -f   实时打印docker log
进阶操作

映射端口

docker run -p 容器外端口:容器内端口             #容器外端口可以理解爲宿主机
eg 
[root@docker lzl]# docker run  -d  -p 80:80 nginx:1.16.1 
fd97fa3802742d4d78d7e1ccfecaffaf5f787190305dc98c4d7677537cee6a9c


docker ps 查看進程狀態
curl localhost:80 返回了welcome to nginx

挂載數據卷

docker run -v 容器外目錄:容器内目錄             #容器外目录可以理解爲宿主机

传递环境变量

docker run -e 環境变量key:環境变量value
eg:

docker run --rm -e OPTS=abcld nginx:1.16.1 printenv
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=59f26035c4a0
OPTS=abcld
NGINX_VERSION=1.16.1
NJS_VERSION=0.3.8
PKG_RELEASE=1~buster
HOME=/root


添加多个环境变量
-e  -e -e -e 
领悟下、

容器内安装软件(工具)

yum|apt-get|apt等
posted @ 2021-11-24 16:45  名字长的像一只老山羊  阅读(50)  评论(0编辑  收藏  举报