1.前言

趁着刚开学作业不多,实验室也还没开始干活,打算入门docker,打个基础先。

2.Docker简介

Docker是一种新兴的虚拟化方式,属于Linux容器的一种封装,镜像是Docker运行容器的前提,仓库是存放镜像的场所.
这里有三个概念需要了解一下

①Image(镜像) 敲重点!

相当于安装包,包含该镜像运行的所需环境和配置文件,非常轻量
比如下图是一个centos系统镜像(安装包,轻量)

②Container(容器) 敲重点!

有了安装包(镜像)就可以安装这个软件并使用,nginx是一个软件,mysql是一个软件,操作系统也是一个软件.
nginx镜像创建的容器就专门用来进行web服务;
mysql镜像创建的容器就专门用来进行数据库管理;
centos镜像创建的容器就是一个虚拟机,你可以在这个虚拟机中进行和服务器一样操作;
比如: 我的服务器自带一个宝塔应用镜像,我可以用宝塔面板下载docker,然后用docker创建一个centos镜像,然后用这个镜像创建一个容器, 这个容器就是一个centos的虚拟机, 后面再进入虚拟机安装宝塔面板, 进入虚拟机的宝塔面板然后再安装docker,
咦? 这个操作好像...,哒咩,禁止套娃。
tips: 小朋友们后续操作请勿模仿。
总结: 容器技术是对进程进行隔离,即在正常进程的外面套了一个保护层。程序在这个虚拟容器里运行, 解决了环境配置的难题
(和python的虚拟环境有点类似)

③Repository(仓库) 敲重点!

仓库是存放镜像文件的场所, 这个仓库可玩性就大多了, 它类似Git, 又很像宝塔.。
什么意思呢?
上面说了nginx是一个软件, mysql是一个软件, 操作系统也是一个软件, 你可以通过这个仓库直接获取你想要的镜像, centos也好, nginx也好, mysql也好, 就和Git一样获取别人的代码什么的, 甚至是别人开源的网站也可以直接获取, 和宝塔一样实现一键部署一键建站, 十分奈斯.。
难道和宝塔刚见面就要说分手了吗?
公司上班适合用docker, 平时自己玩宝塔算新手版, docker就是进阶版, 作为专业程序袁我全都要。

这是公有仓库(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