Docker概述
真实项目部署环境可能非常复杂,传统发布项目一个只需要一个jar包,运行环境需要单独部署。而通过Docker可将jar包和相关环境(如jdk,redis,Hadoop...)等打包到docker镜像里,将镜像发布到Docker仓库,部署时下载发布的镜像,直接运行发布的镜像即可。Docker容器使用沙箱机制,通过隔离机制,使每个发布的应用之间互相隔离,相互之间不会有任何接口。
优点:隔离,镜像轻巧,秒级启动。
文档地址:https://docs.docker.com/
仓库地址:https://hub.docker.com/
- Docker基本组成:
1.镜像(image):类似于一个模板,通过这个模板来创建容器服务,如tomcat镜像=》run命令运行镜像=》创建tomcat容器
2.容器(container):Docker利用容器技术,可独立运行一个或一组应用,是通过镜像来创建的。可以执行启动,停止,删除等命令。暂时可将容器理解为一个简易的linux系统。
3.仓库(repository):存放镜像的地方,分为共有仓库(如Docker hub)和私有仓库。
Docker安装
根据帮助文档:
#1.卸载旧版本
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
#2.安装包
sudo yum install -y yum-utils
#3.设置镜像仓库
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo #默认国外的,非常慢
sudo yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo #推荐阿里云
#4.更新软件包索引
yum makecache fast
#4.安装Docker引擎 (docker-ce:社区版)
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
#5.启动Docker
sudo systemctl start docker
#docker version查看是否安装成功
#6.测试helloword
sudo docker run hello-world
#7.查看下载的hello-world镜像
docker images
#8.卸载docker
#移除Docker引擎
sudo yum remove docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
#移除镜像
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
阿里云镜像加速
-
进入阿里云官网的容器镜像服务,找到镜像加速地址
-
配置使用
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://1kc9p0un.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
Docker run的流程
Docker如何工作的?
Docker是一个CS结构的系统,Docker的守护进程运行在主机上,DockerServer接收到DockerClient的指令执行。
Docker命令
官方文档:https://docs.docker.com/engine/reference/commandline/build/
docker version #显示版本信息
docker info #docker更加详细的信息
docker 命令 --help #帮助命令
- 镜像命令
docker images #查看所有镜像
解释
- Repostory #镜像仓库源
- TAG #镜像标签
- IMAGE_ID #镜像id
可选项(可通过docker images --help查看)
-a, --all Show all images (default hides intermediate images)
-q, --quiet Only show image IDs
docker search搜索镜像
可选项
- 通过收藏数过滤
docker pull下载镜像 镜像名[:tag]
[root@cchuang cchuang]# 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 #真实地址
#指定版本下载
[root@cchuang cchuang]# docker pull mysql:5.7
5.7: Pulling from library/mysql
72a69066d2fe: Already exists
93619dbc5b36: Already exists
99da31dd6142: Already exists
626033c43d70: Already exists
37d5d7efb64e: Already exists
ac563158d721: Already exists
d2ba16033dad: Already exists
0ceb82207cd7: Pull