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 versionClient: Docker Engine - CommunityVersion: 20.10.22API version: 1.41Go version: go1.18.9Git commit: 3a2c30bBuilt: Thu Dec 15 22:30:24 2022OS/Arch: linux/amd64Context: defaultExperimental: trueServer: Docker Engine - CommunityEngine:Version: 20.10.22API version: 1.41 (minimum version 1.12)Go version: go1.18.9Git commit: 42c8b31Built: Thu Dec 15 22:28:33 2022OS/Arch: linux/amd64Experimental: falsecontainerd:Version: 1.6.14GitCommit: 9ba4b250366a5ddde94bb7c9d1def331423aa323runc:Version: 1.1.4GitCommit: v1.1.4-0-g5fd4c4ddocker-init:Version: 0.19.0GitCommit: de40ad0
若输入docker version 指令后出现以上信息,则安装成功!
测试运行:
#7、运行hello world
sudo docker run hello-world
#输出
Hello from Docker!#8、查看一下hello world这个镜像是否存在
docker imagesREPOSITORY 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/dockersudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://yqtk4mcd.mirror.aliyuncs.com"]
}
EOFsudo systemctl daemon-reloadsudo systemctl restart docker
六、Docker镜像命令
#查看本机上所有的镜像
docker imagesREPOSITORY 仓库源
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应用)