docker

1.安装

使用mobaxterm

docker更换镜像源

# 网易的镜像地址(创建daemon.json文件)
vim /etc/docker/daemon.json

{
 "registry-mirrors": ["https://http://hub-mirror.c.163.com"]
}

# 重启docker
systemctl enable docker

2.docker常用命令

docker基本命令

docker version          #查看docker的版本信息
docker -v

docker info             #查看docker的系统信息,包括镜像和容器的数量

docker 命令 --help       #帮助命令(可查看可选的参数)
docker COMMAND --help

2-1.docker的启停

启动docker: systemctl statr docker
停止docker: systemctl stop docker
重启docker: systemctl restatr docker
查看docker状态: systemctl status docker

开机启动docker: systemctl enable docker

查看docker信息: docker info
查看docker帮助文档: docker --help
查看docker指定命令帮助文档: docker cp --help

2-2.镜像命令

1.查看本地镜像:docker images
	-a 列出本地所有镜像(含历史映像层)
	-q 只列出镜像ID
        REPOSITORY:镜像的仓库源
        TAG:镜像的标签(同一个仓库源可以有多个tag[版本号])
        IMAGE ID:镜像ID
        CREATED:镜像创建时间
        SIZE:镜像大小

2.查找某个镜像:docker search [img_name]
  -f, --filter filter   Filter output based on conditions provided
      --format string   Pretty-print search using a Go template
      --limit int       Max number of search results (default 25)
      --no-trunc        Don't truncate output
    如:docker search mysql
    
    # no-trunc 描述
	如:docker search --no-trunc mysql 显示完整的镜像描述
	# limit 显示条数
	如:docker search --limit 3 mysql 只列出前3个mysql镜像(默认现实25个)
	# filter 过滤条件
	如:docker search --filter stars=3000 mysql 筛选出点赞数大于3000的mysql
		--filter stars=3000 收藏星数
		--filter is-official=true 是否官方镜像
		--filter is-automated=true 是否自动构建 
	# format 格式化
	docker search --prmat "{{.Name}}: {{.StarCount}}" mysql
	
	NAME:镜像名字
	DESCRIPTION:镜像的描述
	STARS:镜像的点赞数
	OFFICIAL:官方认证
	AUTOMA:自动构建

3.拉去镜像:docker pull
	docker pull mysql	拉取最新mysql镜像
		docker pull mysql:latest
	docker pull mysql[:TAG] 拉取指定版本mysql镜像
		docker pull mysql:5.6

4.查看docker镜像/容器/数据卷所占用空间
	docker system df
	
5.移除某个镜像
	docker rmi 镜像名字/镜像ID
	如:docker rmi hello-world  (名字)
	如:docker rmi feb5d9fea6a5 (ID)
	
	如:docker rmi -f 镜像名字/镜像ID (强制删除)
	删除多个 docker rmi -f hello-world mysql
		删除多个(带版本) docker rmi -f hello-world:1.0.1 mysql:5.6
	删除全部(注意!!!) docker rmi -f $(docker images -aq)

谈谈docker虚悬镜像是什么?

仓库名 标签名 都是<none>的镜像,俗称虚悬镜像
	构建docker镜像可能会出现

2-3.容器命令

1.运行容器
	docker run
	--name="容器新名字" 为容器指定一个名称
	-d 后台运行容器,并返回容器ID,既启动守护式容器(后台运行)
	-i 以交互式模式运行容器,通常与-t结合使用(-it)
	-t 为容器重新分配一个[伪输入终端],通常与-i结合使用(-it)
	-P [随机]端口映射
	-p [指定]端口映射
	    -p ip:主机端口:容器端口  配置主机端口映射到容器端口
		-p 主机端口:docker端口
		-p 8080:80

# /bin/bash: 指shell交互命令的接口
docker run -it ubuntu /bin/bash

2.退出容器
	1. exit 停止并退出容器(后台方式运行则仅退出)
	2. Ctrl+P+Q  不停止容器退出
	
3.列出运行过的容器
    docker ps # 列出当前正在运行的容器
        -a   # 列出所有容器的运行记录
        -n=? # 显示最近创建的n个容器
        -q   # 只显示容器的ID
        
4.进入当前正在运行的容器
	# docker exec 进入容器后开启一个新的终端,可以在里面操作
	# docker attach 进入容器正在执行的终端,不会启动新的进程
    docker exec -it 容器id/容器名称 /bin/bash
    docker attach 容器id/容器名称
     
5.删除容器
    docker rm 容器id/容器名称				#删除指定的容器,不能删除正在运行的容器,强制删除使用 rm -f
    docker rm -f $(docker ps -aq)		#删除所有的容器(小心!!!)
    docker ps -a -q|xargs docker rm		#删除所有的容器(小心!!!)
6.启动和停止容器
    docker start 容器id/容器名称          #启动容器
    docker restart 容器id/容器名称        #重启容器
    docker stop 容器id/容器名称           #停止当前运行的容器
    docker kill 容器id/容器名称           #强制停止当前容器

日志的查看

docker logs 容器id/容器名称

docker logs [OPTIONS] CONTAINER

Fetch the logs of a container

Options:
  --details        Show extra details provided to logs
  -f : 跟踪日志输出
  --since :显示某个开始时间的所有日志
  --tail [number]:仅列出最新N条容器日志
  -t : 显示时间戳

常用:
docker logs -tf 容器id/容器名称
docker logs --tail number 容器id/容器名称 #num为要显示的日志条数

查看容器中进程信息

docker top 容器id/容器名称

➜  ~ docker top nginx
UID    PID    PPID    C    STIME    TTY   TIME      CMD
root   2858   2839    0    May02    ?     00:00:00    nginx: master process nginx -g daemon off;
101    2905   2858    0    May02    ?     00:00:00    nginx: worker process

查看容器的元数据

docker inspect 容器id/容器名称	# json格式

拷贝操作

#拷贝容器的文件到主机中
docker cp 容器id:容器内路径  目的主机路径

#拷贝宿主机的文件到容器中
docker cp 目的主机路径 容器id:容器内路径

数据卷

docker run -it -v /宿主机目录:/容器目录 镜像名 /bin/bash

镜像分层的概念

是什么

镜像是什么?
	镜像是一种轻量级、可执行的独立软件包,它包含运行某个软件所需要的所有内容,我们捌应用程序和配置依赖打包好形成一个可交付的运行环境,这个打包好的运行环境就是image镜像文件
只有通过这个镜像文件才能生成docker容器实例

分层的镜像?

UnionFS(联合文件系统)
	联合文件系统是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统霞,Union文件系统是docker镜像的基础。
	镜像可以通过分层来进行继承,基于基础镜像,可以制作各种具体的应用镜像。
	
docker镜像加载的原理
	
为什么docker镜像要采用这种分层结构呢?
	资源共享,方便复制迁移,就是为了复用

重点理解

docker镜像层是只读的,容器层是可写的
	当容器启动石,一个新的可写层被加载到镜像层的顶部,这一层通常被称作‘容器层’,‘容器层’下面的都叫‘镜像层’。
	无论添加、删除、还是修改文件都只会发生在容器层,只有容器层是可写的,容器层下面的镜像层都是只读的。

docker镜像commit操作案例

# 解决centos不能使用yum问题
1.https://blog.csdn.net/weixin_45836543/article/details/124460876
2.yum update -y 来更新yum

docker commit -a "作者名字" -m "内容简介"  容器ID 镜像名称:镜像版本
docker commit -a "lxd670" -m "add vim"  9d0907761233 centos8:0.1
	-a :提交的镜像作者;
    -c :使用Dockerfile指令来创建镜像;
    -m :提交时的说明文字;
    -p :在commit时,将容器暂停。 
posted @ 2022-05-04 19:08  lxd670  阅读(19)  评论(0编辑  收藏  举报