docker初探

什么是docker

虚拟化技术

2013年基于GO语言开发

为什么火起来了(必要性)

代码从开发到正式投入生产需要经过三个环境,开发环境,测试环境,生产环境

测试、运维人员操作成本过大

docker支持迁移整个容器的应用以及环境到Linux机器上

相互隔离

开销低

image-20230223172139603

docker与vmware的区别

vmware:完整的硬件与操作系统环境,占资源,速度慢

docker:不是完整的环境,内核复用,相互隔离,安全

安装docker

支持linux,windows,mac等操作系统

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#卸载旧版本
yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
#阿里云
yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#安装
yum install docker-ce docker-ce-cli containerd.io

镜像加速

https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

docker名词概念

镜像(Image)

模板,本身无法参与工作,无法使用,可以通过镜像创建容器,Tomcat–>run–>tomcat1

容器(container)

真正运行服务的地方,可以被命令字控制,每一个容器就是每一个最小化安装的操作系统

仓库(repository)

存放镜像的地方,分为公有仓库和私有仓库

dockerhub

建议使用阿里云

基本命令

镜像命令

1
2
3
4
5
6
7
8
9
10
docker images      #列出本地主机上正在运行的镜像
-a #列出曾经运行的镜像
-q #只显示id
docker search [参数]#查找镜像
--filter=stars=5000
docker pull #下载镜像
#分层下载,公用相同文件
docker rmi #删除镜像
-f #强制删除
$(docker images -aq)#删除所有镜像

容器命令

存在镜像才可以创建容器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
docker run [参数] image #启动容器
#参数说明
-C #指定运行的命令
--name="" #容器名称,区分容器
-d #后台运行,直接启动会被守护进程杀掉
-it #交互运行,进入容器
-p #指定容器 8080:80
#主机端口:容器端口
-P #随机指定端口
docker ps #查看正在运行的容器
-a #查看运行过的容器
-q #只显示容器编号
exit #容器停止并退出容器
ctrl+p+q #容器不退出运行并退出容器
docker rm [容器id] #删除容器
-f 强制
$(docker ps -aq) #删除所有容器
docker ps -aq|xargs docker rm#删除所有容器
docker start/stop/restart/kill [id] #启动/停止/重启/杀死 容器