docker容器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker容器相关的知识,希望对你有一定的参考价值。

容器的发展史:

1)chroot技术
chroot,即change root directory(更改 root 目录),在 linux 系统中,系统默认的目录结构都是以`/`,即是以根 (root) 开始的,而在使用chroot之后,系统的目录结构将以指定的位置作为`/`位置

2)lxc容器
全称:linux container,通过namespaces 命名空间实现的隔离环境,通过cgroups实现的资源限制,提供类似虚拟机一样的体验。

3)docker容器
早期的docker容器底层就是调用的lxc,后期才换成了自己的libcontainer

docker容器是什么?

Docker是通过内核虚拟化技术(namespaces及cgroups)来提供容器的资源隔离与资源限制。由于Docker通过操作系统层的虚拟化实现隔离(对操作系统的内核有要求),所以Docker容器在运行时,不需要类似虚拟机(VM)额外的操作系统开销,从而比kvm虚拟机更轻量。

docker是一种软件的打包技术。

docker的安装

yum源配置:

rm -fr  /etc/yum.repos.d/local.repo
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/docker-ce.repo https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
sed -i ‘s#download.docker.com#mirrors.tuna.tsinghua.edu.cn/docker-ce#g‘ /etc/yum.repos.d/docker-ce.repo

安装docker-ce:
yum install docker-ce -y

启动docker
systemctl start docker
systemctl enable docker

docker是一个cs架构:
通过docker version来查看

docker最重要的三大组件:
镜像,容器,仓库

docker容器
docker run -d -p 80:80 nginx

docker run -d -p 80:80 nginx
解释:
run (创建并运行一个容器)
-d 放在后台
-p 端口映射
nginx docker镜像的名字

配置docker镜像加速
vi /etc/docker/daemon.json
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}

systemctl restart docker

搜索镜像:
docker search

获取镜像:
docker pull(push)

镜像加速器:阿里云加速器,daocloud加速器,中科大加速器,Docker 中国官方镜像加速:https://registry.docker-cn.com

docker pull centos:6.8(没有指定版本,默认会下载最新版)
docker pull daocloud.io/huangzhichong/alpine-cn:latest 

扩展:查询docker镜像所有版本https://hub.docker.com/r/library/

查看镜像
docker images
删除镜像
docker rmi 例子:docker image rm centos:latest
导出镜像
docker save 例子:docker image save centos > docker-centos7.4.tar.gz
导入镜像
docker load 例子:docker image load -i docker-centos7.4.tar.gz

docker run -d -p 80:80 nginx:latest

run (创建并运行一个容器)
-d 放在后台
-p 端口映射
nginx:latest docker镜像的名字和版本
还有很多其他的参数

docker run == docker create + docker start

停止容器
docker stop CONTAINER_ID
杀死容器
docker kill container_name
查看容器列表
docker ps
docker ps –a
删除容器
docker rm
批量删除容器
docker rm -f docker ps -a -q

    docker run -it --name centos6 centos:6.8 /bin/bash

-it 分配交互式的终端
--name 指定容器的名字
/bin/sh 覆盖容器的初始命令

--cpus 指定cpu的数量
--memory 限定内存的大小
-h 指定容器的主机名

进入容器的目的:排错,调试

进入容器的方法:
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
例子:
docker exec -it 容器id或容器名字 /bin/bash

docker attach [OPTIONS] CONTAINER
例子:
docker attach  容器id或容器名字

nsenter(安装yum install -y util-linux 弃用)

docker的本质是:在隔离的环境运行的一个进程

所以:docker容器内的第一个进程必须一直处于前台运行的状态(必须夯住),否则这个容器,就会处于退出状态!

以上是关于docker容器的主要内容,如果未能解决你的问题,请参考以下文章

linux_docker入门

无法使用 Rider 调试使用 docker 容器和 docker-compose 构建的 .net 核心应用程序。容器退出代码 139

vscode 远程连接 docker 容器进行 C++ 代码调试实践

使用 Spring Boot 代码运行 docker 容器

Springboot 容器使用 docker-compose 连接到 mongo 容器的 503 错误代码

如何使用 VS Code 在 Docker 容器中远程调试 python 代码