认识docker
Docker是一个开源的应用容器引擎,基于go语言开发
Docker可以让开发者打包应用以及依赖包到一个轻量的,可移植的容器中,可以发布到任何linux容器中,也可以实现虚拟化。
容器是完全沙箱机制,也就是盲盒,相互之间无法有任何接口,并且容器的开销很低。
应用场景
在开发一个应用的时候,为了克服每台电脑运行环境不同,导致程序水土不服,,docker可以将应用程序,运行环境等等全部打包成一个容器,这个容器可以放到任何机器上面,使得里面的应用程序可以正常运行。
优点:1.安全2.开销低3.部署简单.
基本概念和架构
Docker就是一个可以容器化管理和部署我们应用程序的很强大的引擎。学习之前我们需要了解三个基本的概念
1.镜像(image) :Docker镜像,就相当于是一个root文件系统
2 .容器(Container) :镜像和容器的关系。就像是类和实例,镜像是静态的定义,容器是镜像运行的实体,容器可以被创建,启动,停止,暂停,删除
3.仓库(Repository) :仓库是一个代码控制中心,用来保存镜像,也就是DOCKER HUB
Docker官方架构如下
上述:
-
Client表示操作者,例如我们通过远程SSH连接自己的服务器 -
DOCKER_HOST我们运行Docker容器的服务器
Docker daemondocker引擎守护进程,在后台运行,起着运行和管理所有容器的作用Containers和Images即为上述所说的容器和镜像,镜像和容器就类似与类和对象的关系,或者是模板和实体的关系
-
Registry镜像仓库,服务器上的镜像哪里来的呢?大多数是从官方的仓库拉下来的,仓库就是专门存放镜像的地方,当然你也可以自己制作镜像并上传至仓库
Doker的安装
Docker分为两个版本,社区版和企业版,我们学习用社区版就行
Docker有很多产品,比如Docker Desktop,Docker Engine,前者是可视化的管理docker容器的程序,后者是核心,学习的话建议是用Docker Engine,也是命令行来操作
1.安装步骤
1.如果你之前弄过docker,先删掉残余软件包
sudo apt remove docker docker-engine docker.io containerd runc
sudo apt install ca-certificates curl gnupg lsb-release
3.添加密钥并加入官方仓库
如果你的服务器在国内
sudo mkdir -p /etc/apt/keyrings
sudo curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.ustc.edu.cn/docker-ce/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
4.执行安装
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
安装完成
docker -v
没报错说明成功
配置仓库镜像源
由于我们镜像都是从官方拉去的,但是官方仓库在国外,因此我们需要在国内服务器配置一下自己的地址
由于我用的腾讯云
是跟着官方文档配置的,几行命令,很简单,全部cv即可
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://1nj0zren.mirror.aliyuncs.com",
"https://docker.mirrors.ustc.edu.cn",
"http://f1361db2.m.daocloud.io",
"https://registry.docker-cn.com"
]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
检查加速器是否生效
docker info
看到这个就说明配置成功
阿里云也一样,搜一下百度都有,直接cv就可,不必太过纠结
Docker引擎服务常用命令
安装完docker后,默认docker守护进程就已经运行起来了
日常如果想操作这个守护进程可以通过下面的一些命令来完成
1)启动,停止,重启
# 启动Docker守护进程
sudo systemctl start docker
# 停止docker守护进程
sudo systemctl stop docker
# 重启Docker 守护进程
sudo systemctl restart docker
2) 开机自启动
# 设定Docker守护进程开机自启
sudo systemctl enable docker
# 禁用Docker 守护进程开机自启
sudo systemctl disable docker
官方文档
后面我们就要来正式学习Docker的使用了!当然和其它框架、工具、语言一样,有困难大家还是应当多参考官方文档:
镜像基本操作
通过之前的学习,我们知道,在使用容器之前,我们需要镜像,有了镜像才能创建容器
1)查看镜像
docker images
现在没有安装 镜像,所以是空的
REPOSITORY表示镜像的仓库源TAG镜像的版本IMAGE ID镜像IDCREATED镜像创建时间SIZE镜像大小
软件的镜像事实上也是系统镜像中配置好其环境和软件制作而成的。
2)搜索和获取镜像
如何去找镜像呢?
去官网:hub.docker.com/
注册完以后,比如搜索一个mysql镜像,左上角就可以进行搜索了
之后点进去
右边有个docker pull mysql,就是拉取mysql镜像
# 拉取最新版
docker pull 镜像名
# 拉取指定版本
docker pull 镜像名:指定版本
一般用mysql 5.7
docker pull mysql:5.7
3)删除镜像
先查看 docker images
如果要删除镜像
docker rmi c20987f18b13 //镜像id
同样使用敬香茗也可以
2.容器的基本操作
1)容器的创建和运行
现在有了镜像,我们如何去创建一个容器呢?
去 docker hub上找命令
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=你的密码 -d mysql:5.7
返回这个说明成功了
之后docker ps
确实是有容器再跑
上述字段意义:
CONTAINER ID容器的ID,可以用于操作这个容器IMAGE容器所属镜像COMMAND容器中正在执行的命令CREATED容器创建时间STATUS容器状态,Up表示正在运行,Exited表示容器已停止PORTS容器端口,目前没设定网络端口NAMES容器名
可见容器,通过STATUS可以观察容器的状态
4) 已存在的容器的启动和停止
先docker ps -a
找到所有正在运行的和已经停止的容器
然后重启已经停止的容器
docker start 161f3c1fd195
除此之外,还有停止和重启容器命令:
# 停止一个容器
docker stop ID/容器名
# 重启一个容器
docker restart ID/容器名
删除容器
docker rm ID/容器名
查看容器信息
docker inspect ID/容器名
docker inspect 0 是查看所有
容器的导入导出
docker export 容器id > /root/mysql-1.tar
看第一个,就是容器导出的tar文件
如果我们想把这个保存的状态导入,那么执行
docker import /root/mysql-1.tar mymysql2,0
第一个就是我们导入的
再docker run就可以启动这个镜像啦
\