目录
1 什么是docker
docker是一个开源项目,诞生于2013年初,最初是dotCloud公司内部的一个业余项目。它基于Google推出的Go语言实现并遵从 Apache2.0 协议开源。
2 Docker相关组件
2.1 Docker镜像与容器
镜像是构建Docker的基石。用户基于镜像来运行自己的容器。镜像也是Docker声明周期中的构建部分。镜像是基于联合文件系统中的一种层式架构,由一系列指令一步步构建出来。
Docker可以帮助你构建和部署容器,你只需要把你自己的应用程序或者服务打包放进容器即可。容器是基于镜像的,容器中可以运行一个或多个进程,我们可以认为镜像是Docker声明周期中的构建或者打包阶段,而容器则是启动或者执行阶段。容器基于镜像启动,一旦容器启动完成之后,我们就可以登录到容器中安装自己需要的软件或者服务。(简单理解为:镜像是容器的一种模板,对于一种镜像而言,它可以有多个容器。就像java中的类一样,一个类可以有多个对象,类就就相当于我们的镜像,对象就相当于容器)
3 Docker安装
3.1 安装docker
Docker官方建议在Ubuntu中安装,因为Docker是属于Ubuntu发布的,而且一般Docker出现问题是最先更新或者打补丁的。在很多版本的Centos中是不支持更新最新的一些补丁包的。
但由于我自己的环境是Centos的,所以在这里我是在Centos中安装的,建议安装在Centos7.x以上版本。
1 查看当前内核版本(Docker 要求 CentOS 系统的内核版本高于 3.10 ,首先验证你的服务器是否支持Docker!)
uname -r
我的是4.18.0-305.10.2.el8_4.x86_64符合条件
2 检查并清除系统残余项
sudo yum remove docker \
> > docker-client \
> > docker-client-latest \
> > docker-common \
> > docker-latest \
> > docker-latest-logrotate \
> > docker-logrotate \
> > docker-selinux \
> > docker-engine-selinux \
> > docker-engine
我是新租的服务器,因此没有需要移除的
3安装下载docker的依赖工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
4 添加阿里云的软件源
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
5 更新yum缓存(为了保证能更新和下载需要的服务)
sudo yum makecache
6 安装并启动Docker
sudo yum -y install docker-ce
只截取最后部分
7 查看是否安装成功(显示其版本号)
docker -v
8 设置开机自启
systemctl enable docker
3.2 设置ustc 镜像
ustc是老牌的镜像服务提供者。ustc的docker镜像加速器速度很快
mkdir -p /etc/docker
vim /etc/docker/daemon.json
在文件中输入如下内容
{
“registry-mirrors”:["https://docker.mirrors.ustc.edu.cn"]
}
3.3 docker 启动与停止
1 启动docker
systemctl start docker
2 查看docker状态
systemctl status docker
3 查看docker信息
docker info
4 停止docker
systemctl stop docker
4 docker镜像与容器相关命令
4.1 docker镜像相关命令
1 查看镜像
docker images
- REPOSITORY:镜像名称
- TAG:镜像标签
- IMAGE ID :镜像id
- CREATED:镜像的创建时间(不是获取该镜像的日期)
- SIZE: 镜像大小
2 搜索镜像
docker search 镜像名称
- NAME:仓库名称
- DESCRIPTION:镜像描述
- STARS:用户评价,反应一个镜像的受欢迎程度
- OFFICIAL:是否官方
- AUTOMATED:自动构建,表示该镜像由Docker Hub自动构建流程创建的
3 拉取镜像
docker pull 镜像名称
例如:下载centos7镜像(如果后面不加版本号则是默认下载最新的版本)
docker pull centos:7
再次查看我们的镜像
4 删除镜像
- 按照镜像id删除镜像
docker rmi 镜像ID
- 删除所有镜像
为了测试我又重新拉取了两个镜像
查看所有的镜像:docker images -q
5d0da3dc9764
05d3c1e2d0c1
删除所有的镜像:docker rmi '5d0da3dc9764 05d3c1e2d0c1'
4.2 docker 容器相关命令
4.2.1 查看容器
1 查看正在进行的容器
docker ps
2 查看所有的容器
docker ps -a
3 查看最后一次运行的容器
docker ps -l
4 查看停止的容器
docker ps -f status=exited
4.2.2 创建与启动容器
创建容器命令:
docker run
-i :表示运行容器
-t:表示容器启动后会进入其命令行。加入这两个参数之后,容器创建就能登录进去。即分配一个伪终端
--name:为创建的容器命名(容器名称不能重复)
-v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好是做目录映射,在宿主机上做修改,然后共享到容器上
-p:表示端口映射时 ,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做端口映射
1 交互式方式创建容器(-i-t可以缩写成-it)
docker run -it --name=容器名称 镜像名称:标签/bin/bash
如果是拉取的最新的镜像,不用加标签
docker run -it --name=容器mycentos1 centos /bin/bash
发现交互式方式创建容器之后查看容器报错:
原因是:这种方式相当于在宿主机的centos上运行了一个centos的容器,而在这个容器中没有docker,所有不能运行相关的命令了。
2 守护式方式创建容器
docker run -di --name=mycentos2 centos
进入容器:
docker exec -it mycentos2 /bin/bash
注意:
1)用交互方式去创建容器的时,创建完成之后就相当于直接进入到容器中进行操作,就不能对宿主机进行操作了
2)用守护式方式创建容器时,创建完成之后并不会直接进入容器中,此时依然可以对宿主机进行操作,如果想进入容器,可执行上述命令。并且这种方式创建之后再退出,在后台依然是运行的状态
4.2.3 其他先关操作命令
1 关闭容器
docker stop 容器ID
2 开启容器
docker start 容器ID
3 将文件从宿主机目录拷贝到容器目录
docker cp 需要拷贝的文件名称 容器id:需要拷贝到的容器目录
例如:docker cp docker-client 85fa3cef90e1:/usr/local
4 将容器中文件拷贝到宿主机中
docker cp 容器名称:容器目录/文件名称 将要拷贝到宿主机去的文件名称
例如: docker cp mycentos2:/usr/local/docker-client docker-client2
5 目录挂载
可以在创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样就可以通过修改宿主机的某个目录的文件从而去影响容器
docker run -di -v 宿主机目录:容器目录 --name=容器名称 镜像名称
docker run -di -v /usr/local/mydata/:/usr/local/data --name=mycentos3 centos
6 删除容器
注意:不能删除正在运行的容器
docker rm 容器名称/容器id
7 查看容器IP地址
查看容器内各种数据:
docker inspect 容器名称(容器id)
查看IP地址:
docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称
5 安装rabbitMq
1 拉取镜像
docker pull rabbitmq
2 守护方式创建容器并且映射端口
docker run -di --name=rabbitmq -p 5671:5671 -p 5672:5672 -p 4369:4369 -p 25672:25672 -p 15671:15671 -p 15672:15672 rabbitmq
3 进入容器
docker exec -it rabbitmq /bin/bash
4 安装rabbitmq的UI插件
rabbitmq-plugins enable rabbitmq_management
最后成功访问(浏览器上输入:linuxip:15672):
想要了解更多编程小知识,快来关注公众号:爪哇开发吧!每周会不定时的进行更新。