1.前言
趁着刚开学作业不多,实验室也还没开始干活,打算入门docker,打个基础先。
![](https://ywhao.bitworkshop.cn/wp-content/uploads/2022/03/bg2018020901-e1647356132871.png)
2.Docker简介
Docker是一种新兴的虚拟化方式,属于Linux容器的一种封装,镜像是Docker运行容器的前提,仓库是存放镜像的场所.
这里有三个概念需要了解一下
①Image(镜像) 敲重点!
相当于安装包,包含该镜像运行的所需环境和配置文件,非常轻量
比如下图是一个centos系统镜像(安装包,轻量)
![](https://ywhao.bitworkshop.cn/wp-content/uploads/2022/03/image-25.png)
②Container(容器) 敲重点!
有了安装包(镜像)就可以安装这个软件并使用,nginx是一个软件,mysql是一个软件,操作系统也是一个软件.
用nginx镜像创建的容器就专门用来进行web服务;
用mysql镜像创建的容器就专门用来进行数据库管理;
用centos镜像创建的容器就是一个虚拟机,你可以在这个虚拟机中进行和服务器一样操作;
比如: 我的服务器自带一个宝塔应用镜像,我可以用宝塔面板下载docker,然后用docker创建一个centos镜像,然后用这个镜像创建一个容器, 这个容器就是一个centos的虚拟机, 后面再进入虚拟机安装宝塔面板, 进入虚拟机的宝塔面板然后再安装docker,
咦? 这个操作好像...,哒咩,禁止套娃。
tips: 小朋友们后续操作请勿模仿。
总结: 容器技术是对进程进行隔离,即在正常进程的外面套了一个保护层。程序在这个虚拟容器里运行, 解决了环境配置的难题
(和python的虚拟环境有点类似)
③Repository(仓库) 敲重点!
仓库是存放镜像文件的场所, 这个仓库可玩性就大多了, 它类似Git, 又很像宝塔.。
什么意思呢?
上面说了nginx是一个软件, mysql是一个软件, 操作系统也是一个软件, 你可以通过这个仓库直接获取你想要的镜像, centos也好, nginx也好, mysql也好, 就和Git一样获取别人的代码什么的, 甚至是别人开源的网站也可以直接获取, 和宝塔一样实现一键部署一键建站, 十分奈斯.。
难道和宝塔刚见面就要说分手了吗?
公司上班适合用docker, 平时自己玩宝塔算新手版, docker就是进阶版, 作为专业程序袁我全都要。
![](https://ywhao.bitworkshop.cn/wp-content/uploads/2022/03/image-26.png)
这是公有仓库(public), 一般由互联网巨头提供或者某些大佬。
还有就是私有仓库private, 当用户创建了自己的镜像之后就可以使用push(上传)命令将它上传到公有或者私有仓库,这样下次在另外一台机器上使用这个镜像时候,只需要从仓库上pull(拉取)下来就可以了。
结语
好了以上就是docker的介绍, 用宝塔虽然给程序员省去很多敲命令的时间, 但是作为具有专业素质的程序袁, 就必须会敲控制台命令下面就记录一些docker常用命令。
2022.3.15 22:45
3.docker常用命令
安装docker
$ sudo yum install docker
查看docker版本
docker -v
卸载docker
查看安装的docker列表
yum list installed | grep docker
卸载已安装的docker
yum -y remove docker-ce.x86_64
启动docker
sudo systemctl start docker
停止docker
sudo systemctl stop docker
重启docker
sudo systemctl restart docker
镜像
查看镜像列表
sudo docker images
配置镜像加速
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://registry.docker-cn.com"]}
EOF
拉取镜像pull
sudo docker pull image-name[:version]
查找镜像search
sudo docker search image-name
删除镜像rmi
sudo docker rmi image_name/image_id
容器
查看容器ps
#查看正在运行的容器
sudo docker ps
#查看所有的容器
sudo docker ps -a
启动容器start
sudo docker start container_name/container_id
停止容器stop
sudo docker stop container_name/container_id
重启容器restart
sudo docker restart container_name/container_id
删除容器rm
docker rm container_name/container_id
进去容器attach
docker attach container_name/container_id
创建容器
# -i: 交互式容器
# -t: tty终端,操作容器
# -d: 在后台运行容器,并且打印容器id
# 可以写成-it -itd
#一般
docker run -itd --name 我是容器自定义的名字 container_name/container_id /bin/bash
#前台交互式容器
docker run -t -i --name 我是容器自定义的名字 \
#后台守护式容器
docker run -d --name 我是容器自定义的名字 \
#自启--restart
--restart unless-stopped \
#cpu权重
-c 2048 \ 或 --cpu-shares=512 \
#端口映射-p
-p 800:80 \
#目录映射-v
-v /www/wwwroot/我是映射的目录名/:/data/ \
#设置环境变量-e
-e WEBSOCKET_ENABLED=true \ #表示开启websocket
#镜像名
container_name/container_id
Comments NOTHING