Docker新一代容器技术

本文详细介绍了Docker容器技术的核心概念,包括镜像、容器、仓库等,并提供了Docker的安装步骤及常用命令。此外,还讲解了如何使用DockerFile构建自定义镜像,并演示了如何安装MySQL、Redis、Tomcat等常用软件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Docker的定位是一个应用容器平台。

Docker和传统虚拟机的区别
在这里插入图片描述

Docker的核心架构

在这里插入图片描述


镜像:一个镜像代表一个应用环境,他是个只读的文件 ,如mysq|镜像 tomcat镜像,nginx镜像等
容器: 镜像每次运行之后就是产生一个容器,就是正在运行的镜像,特点就是可读可写
仓库: 用来存放镜像的位置,类似于maven仓库,也是镜像下载和上传的位置
dockerFile: docker生成镜像配置文件用来书写自定义镜像的一些配置
tar: 一个对镜像打包的文件,日后可以还原成镜像

安装 Docker

卸载系统上原有Docker

yum remove docker \
                   docker-client \
                   docker-client-latest \
                   docker-common \
                   docker-latest \
                   docker-latest-logrotate \
                   docker-logrotate \
                   docker-engine

安装需要的安装包yum-utils

yum install -y yum-utils

设置镜像仓库地址

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

更新yum软件包索引

 yum makecache fase 

安装Docker

yum install docker-ce docker-ce-cli containerd.io -y

启动Docker

systemctl  start  docker

查看Docker版本

docker version

Dcoker 配置阿里云镜像加速

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://2a15cnn5.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

Docker常用命令

docker version
docker info
docker --help
Docker镜像
查看镜像
	docker images
	docker images -q // 只查看镜像ID

搜索镜像
	docker search tomcat // 从docker仓库搜索 tomcat 镜像

拉取镜像
	docker pull nginx:1.12 // 拉取1.12版本的nginx镜像

删除镜像
	docker rmi -f hello-world  // 强制删除容器和镜像
Docker 容器
创建容器
	docker run
		-d 后台运行
		-p 本机端口:镜像容器端口
		--name 为容器起一个别名
	$ docker run -d -p 80:80 --name vi-nginx nginx:1.12

删除容器
	docker rm -f 容器id或容器别名
	docker rm -f $(docker ps -aq) // 删除所有容器

查看容器进程
	docker ps
	docker ps -a // 查看所有运行过的容器进程
	
停止容器
	docker stop 容器id或容器别名

开启创建过的容器
	docker start 容器id或容器别名

重启容器
	docker restart 容器id或容器别名

立即停止容器运行
	docker kill 容器id或容器别名

查看容器内进程
	docker top 容器id或容器别名

查看容器内部细节
	docker inspect 容器id

查看容器运行日志
	docker logs -t -f  容器id或容器别名
容器内数据交互
进入容器内部
docker exec -it 容器id或容器别名 /bin/bash

容器内部安装软件
	apt-gat update
	apt-get install vim

退出容器
	exit

将容器打包为镜像
	docker commit -a="作者" -m="描述信息" 容器id 目标镜像名称:TAG

从容器中复制文件到宿主机目录中
	docker cp 容器id:/user/share/nginx/html ./  // 拷贝容器中指定目录到宿主机指定目录

设置容器和宿主机共享目录
	docker run -d -p 80:80 -v ~/html:/usr/share/nginx/html nginx:1.12
	// 将nginx镜像中的html目录映射到~/html目录

打包镜像为 tar 文件
	docker save 镜像名(不推荐用镜像id) -o 镜像名.tar

加载tar文件镜像
	docker load -i XXX.tar

Docker 镜像原理
镜像是什么?
	镇像是一种轻量级的,可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,
	它包含运行某个软件所需的所有内容,包括代码、运行时所需的库、环境安量和配置文件。

为什么一个镜像会那么大?
在这里插入图片描述
联合文件系统

Union文件系统是一种分层,轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来
一层层的叠加, 同时可以将不同目录挂载到同一个虚拟文件系统下。Union文件系统是Docker镜像的基础。
这种文件系统特性:就是一次同时加载多个文件系统,但从外面看起来,只能看到一个文件系统,联合加载会把
各层文件系统叠加起来,这样最终的文件系统会包含所有底层的文件和目录.

Docker的镜像实际是由一层一层的文件系统组成。

比如:有多个镜像都是从相同的base镜像构建而来的,那么宿主机只需在磁盘中保存一份base镜像。 
同时内存中也只需要加载一份base镜像, 就可以为所有容器服务了。而且镜像的每一层都可以被共享。
Docker镜像都是只读的。当容器启动时,一个新的可写层被加载到镜像的顶部。
这一层通常被称为容器层,容器层之下都叫镜像层。

Docker安装常用软件

MySQL

docker pull mysql:5.7
docker run -d -p 3306:3306 --name vi-mysql -e MYSQL_ROOT_PASSWORD=123 mysql:5.7

将容器数据位置与宿主机位置挂载保证数据安全
docker run -v /root/mysql/data:var/lib/mysql -v /root/mysql/conf.d:/etc/mysql/conf.d

Redis

docker pull redis:5.0
默认情况下redis官方没有提供redis.conf配置文件,需要去官网下载指定版本的配置文件
wget http://download.redis.io/releases/redis-5.0.8.tar.gz

docker run -d -p 6379:6379 -v ~/redis:/usr/local/etc/redis 
	--name vi-redis redis:5.0 redis-server /usr/local/etc/redis/redis.conf

修改redis.conf 中的 bind 0.0.0.0

tomcat

docker pull tomcat:jdk8-adoptopenjdk-hotspot
docker run -d -p 8080:8080  --name vi-tomcat tomcat:jdk8-adoptopenjdk-hotspot
-v ~/webapps:/usr/local/temcat/webapps

DockerFile

Dockerfile可以认为是Docker镜像的描述文件,是由一系列命令和参数构成的脚本。
主要作用是用来构建docker镜像的构建文件。

在这里插入图片描述

DockerFile的保留命令
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值