Docker的入门及使用
这篇文章将不全面介绍理论,Docker对于我们后端开发来说会用就行,能使用Docker去安装一些镜像运行,为简化配置节省时间和错误率,所以这篇文章实用性很高,可以直接上手!
一、什么是Docker?
Docker官网:https://www.docker.com/
首先一句话:Docker解决了软件环境部署复杂的问题
其实在我们开发中遇到的最多一个情况就是:我在我的电脑能运行,为什么你电脑上不能运行?所以就需要运维人员去不断调试,而有了Docker,只需要简单的几行命令,就可以做到所有运行环境都一致。
Dcoker的专业介绍:
docker是一个开源的应用容器引擎,基于go语言开发并遵循了apache2.0协议开源。 docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的linux服务器,也可以实现虚拟化。 容器是完全使用沙箱机制,相互之间不会有任何接口(类iphone的app),并且容器开销极其低。
为什么docker越来越受欢迎?
灵活、轻量级、可互换、便携式、可扩展、可堆叠
二、docker改变了什么
面向产品:产品交付
面向开发:简化环境配置(相当于一键安装)
面向测试:多版本测试
面向运维:环境一致性
面向架构:自动化扩容(微服务)
三、Centos下Docker的安装
因为Docker是运行在Linux上,所以需要准备一台Linux虚拟机,推荐购买阿里云或腾讯云的服务器,因为这样以后不管在哪都可以通过地址访问,若使用电脑本地的虚拟机,只能在本地电脑上使用。
官方帮助文档:https://docs.docker.com/get-docker/
Linux环境查看:
uname -r
3.10.0-1160.71.1.el7.x86_64
#需要3.10以上
#查看当前系统信息:
cat /etc/os-release
安装Docker:
若之前安装过Docker,则先得卸载(全部复制直接执行):
#1、卸载旧版本
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
开始安装:
#3、设置镜像仓库(默认是国外的)
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
#修改成国内的
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#更新软件包索引
yum makecache fast
#4、安装Docker相关内容(ce:社区版 ee:企业版)
yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
#5、启动Docker
sudo systemctl start docker
查看是否安装成功:
docker version
Client: Docker Engine - Community
Version: 20.10.22
API version: 1.41
Go version: go1.18.9
Git commit: 3a2c30b
Built: Thu Dec 15 22:30:24 2022
OS/Arch: linux/amd64
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 20.10.22
API version: 1.41 (minimum version 1.12)
Go version: go1.18.9
Git commit: 42c8b31
Built: Thu Dec 15 22:28:33 2022
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.14
GitCommit: 9ba4b250366a5ddde94bb7c9d1def331423aa323
runc:
Version: 1.1.4
GitCommit: v1.1.4-0-g5fd4c4d
docker-init:
Version: 0.19.0
GitCommit: de40ad0
若输入docker version 指令后出现以上信息,则安装成功!
测试运行:
#7、运行hello world
sudo docker run hello-world
#输出
Hello from Docker!
#8、查看一下hello world这个镜像是否存在
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest feb5d9fea6a5 15 months ago 13.3kB
#上述存在hello world这个镜像
#查看启动情况
docker ps -l
到这里Docker已经安装完毕!
四、Docker的卸载
Docker的卸载也是比较简单的,直接执行以下命令即可:
#1、卸载依赖
sudo yum remove docker-ce docker-ce-cli containerd.io docker-compose-plugin
#2、删除资源
sudo rm -rf /var/lib/docker (docker默认资源路径)
sudo rm -rf /var/lib/containerd
五、配置阿里云镜像加速
Docker默认的下载源在国外,所以很慢,一般我们都会配置一下国内的镜像,比如配置阿里云的:
#一下步骤分步执行即可
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://yqtk4mcd.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
六、Docker镜像命令
#查看本机上所有的镜像
docker images
REPOSITORY 仓库源
TAG 镜像标签
IMAGE ID 镜像ID
CREATED 镜像创建时间
SIZE 镜像大小
#可选项
-a, --all 显示全部
-q, --quiet 只显示ID
#搜索镜像
docker search 镜像名 (docker search mysql)
#mysql MySQL is a widely used, open-source relation… 13622 [OK]
#mariadb MariaDB Server is a high performing open sou… 5202
#加上条件搜索(mysql STARS大于等于10000的镜像)
docker search mysql --filter=STARS=10000
下载镜像:
这里就以下载mysql为例:
docker pull mysql
#以下是输出信息
Using default tag: latest #如果不写tag。默认就是最新的
latest: Pulling from library/mysql
72a69066d2fe: Pull complete #分层下载
93619dbc5b36: Pull complete
99da31dd6142: Pull complete
626033c43d70: Pull complete
37d5d7efb64e: Pull complete
ac563158d721: Pull complete
d2ba16033dad: Pull complete
688ba7d5c01a: Pull complete
00e060b6d11d: Pull complete
1c04857f594f: Pull complete
4d7cfa90e6ea: Pull complete
e0431212d27d: Pull complete
Digest: sha256:e9027fe4d91c0153429607251656806cc784e914937271037f7738bd5b8e7709 #签名信息
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest #真实地址
docker下载默认都是下载最新版的,若要指定版本下载,就需要在后面加上版本号:
#指定版本下载(版本必须在docker hub上存在)
docker pull mysql:5.7
删除镜像:
docker rmi(#remove images)
docker rmi -f d445c0adc9a5 #删除一个镜像
docker rmi -f d445c0adc9a5 d445c0adc9a5 d445c0adc9a5 #删除多个镜像
七、Docker容器的命令
#新建容器并启动(新建Centos)
docker pull centos
#启动
docker run[可选参数] 镜像名称
docker run -it centos /bin/bash #启动并进入容器
#可选参数
--name="name" #给镜像取一个名字
-d #后台运行
-i/-t #使用交互方式运行,进入容器查看内容
-p #指定容器端口 -p:8080:8080
-P(大写) # 随机指定端口
#直接停止容器并退出
exit
#容器不停止退出
ctrl+p+q
#查看所有运行的容器
docker ps
docker ps -a #查看之前运行过的
docker ps -n #显示最近创建过的容器
docker ps -q #只显示容器编号
#启动容器、停止容器
docker start 容器ID #启动容器
docker restart 容器ID #重动容器
docker stop 容器ID #停止正在运行的容器
docker kill 容器ID #强制停止容器
docker stop $(docker ps -aq) #停止全部容器
#删除容器
docker rm 容器ID (不能删除正在运行的容器)
docker rm -f $(docker ps -aq) #强制删除
八、操作防火墙命令
systemctl start firewalld.service #开启服务
systemctl enable firewalld.service #设置开机启动
systemctl stop firewalld #关闭防火墙
firewall-cmd --list-ports #查看开启了哪些端口号
sudo firewall-cmd --permanent --zone=public --add-port=5672/tcp #添加端口号
firewall-cmd --reload #操作防火墙后要重启防火墙
若大家需要更加透彻的了解和使用docker,在这里给大家推荐一篇完整性很强的文章:
docker入门(利用docker部署web应用)