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容器的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 Rider 调试使用 docker 容器和 docker-compose 构建的 .net 核心应用程序。容器退出代码 139
vscode 远程连接 docker 容器进行 C++ 代码调试实践