Docker概述
Docker安装
Docker命令
容器的数据卷
容器数据库
DockerFile
网络
IDEA整合Docker
集群Docker compose
Docker swarm=简化版的k8s
CICD
Docker为什么会出现?
- 应用在我的环境运行有问题,到你的环境怎么就运行不了了?项目能不能跟着环境一块打包?
- 版本更新导致服务不可用?
- es hadoop mysql jdk配置太麻烦了 不能跨环境
Docker解决哪些问题
- 开发人员把jar包+环境打包成一个镜像->把镜像放到仓库,运维人员只需要下载我们发布的镜像,直接运行即可(docker镜像:jdk+mysql+最核心的环境)
- 打包装箱 每个箱子都是隔离的 通过隔离机制可以将服务器利用到极致
Docker的好处
- 秒级启动
- 比虚拟机更轻量级
Docker的名词
- 镜像(image):好比是一个模板,可以通过这个镜像来创建容器服务,通过镜像可以创建多个容器,最终运行是在容器里的;
- 容器(container):容器是通过镜像来创建的,容器可以启动、删除、停止等;
- 仓库(repository):仓库就是用来存放镜像的地方;仓库分为共有仓库和私有仓库。
安装Docker
1. 卸载旧的版本
$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
2. 下载安装包
$ yum install -y yum-utils
3. 设置镜像仓库(这里采用阿里云的,国外的太慢了。。。)
$ yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4. 更新yum索引
$ yum makecache fast
5. 安装docker
$ yum install docker-ce docker-ce-cli containerd.io
6. 确定是否安装成功
$ docker version
7. 启动docker
$ systemctl start docker
8. 测试hello-world
$ docker run hello-world
到这一步,docker就安装完成了!!!
9. 查看下载的镜像
$ docker images
10. 卸载docker
#1. 卸载依赖
$ yum remove docker-ce docker-ce-cli containerd.io
#2. 删除docker资源(docker的默认工作路径:/var/lib/docker)
$ rm -rf /var/lib/docker
11. 配置镜像加速器(通过修改daemon配置文件/etc/docker/daemon.json来使用加速器)---具体步骤可查看阿里云官网-容器镜像服务-镜像加速器;
输入docker run xxx后回车都经历了哪些
Docker常见命令
docker version
docker info
docker 命令 --help
docker --help #显示docker的所有命令
镜像命令:
docker images #展示所有镜像
docker search mysql #搜索镜像
docker search mysql --filter=STARS=2000 #搜索mysql镜像并过滤出STARS数在2000及2000以上的
docker pull mysql #下载mysql镜像(不加tag默认下载最新的)
docker pull mysql:5.7 #下载mysql 5.7版本
docker rmi 镜像ID #根据镜像ID删除镜像
docker rmi -f $(docker images -aq) #删除所有镜像
容器命令:
新建容器并启动
docker run [可选参数] image
#可选参数说明
-name #容器名字
-d #后台方式运行
-it #使用交互方式运行,进入容器查看内容
-p #指定容器的端口
-P #随机指定端口
#示例
[root@iZ2ze2aj5v2nx1t6jk26cfZ etc]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 5d0da3dc9764 4 weeks ago 231MB
hello-world latest d1165f221234 7 months ago 13.3kB
[root@iZ2ze2aj5v2nx1t6jk26cfZ etc]# docker run -it centos /bin/bash
[root@ba5363b26857 /]# ll
bash: ll: command not found
[root@ba5363b26857 /]# ls
bin etc lib lost+found mnt proc run srv tmp var
dev home lib64 media opt root sbin sys usr
[root@ba5363b26857 /]# exit
exit
[root@iZ2ze2aj5v2nx1t6jk26cfZ etc]#
列出所有正在运行的容器
docker ps #列出当前正在运行的容器
-a #列出当前正在运行+历史运行过的容器
-n=? #列出当前正在运行+历史运行过的容器的?个
-q #显示正在运行的容器的编号
[root@iZ2ze2aj5v2nx1t6jk26cfZ etc]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@iZ2ze2aj5v2nx1t6jk26cfZ etc]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ba5363b26857 centos "/bin/bash" 8 minutes ago Exited (0) About a minute ago sleepy_heyrovsky
7c57c6f4c1b0 hello-world "/hello" 41 minutes ago Exited (0) 41 minutes ago great_dhawan
05d12b4589eb hello-world "/hello" 17 hours ago Exited (0) 17 hours ago zealous_merkle
cfa3684607f2 hello-world "/hello" 18 hours ago Exited (0) 18 hours ago mystifying_bardeen
2b7d012d1685 hello-world "/hello" 7 days ago Exited (0) 7 days ago relaxed_carson
efadbddc578b hello-world "/hello" 2 months ago Exited (0) 2 months ago hopeful_shamir
[root@iZ2ze2aj5v2nx1t6jk26cfZ etc]#
[root@iZ2ze2aj5v2nx1t6jk26cgZ etc]# docker ps -n=1
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ba5363b26857 centos "/bin/bash" 12 minutes ago Exited (0) 6 minutes ago sleepy_heyrovsky
[root@iZ2ze2aj5v2nx1t6jk26cgZ etc]# docker ps -q
[root@iZ2ze2aj5v2nx1t6jk26cgZ etc]# docker ps -aq
ba5363b26857
7c57c6f4c1b0
05d12b4589eb
cfa3684607f2
2b7d012d1685
efadbddc578b
[root@iZ2ze2aj5v2nx1t6jk26cgZ etc]#
退出容器
exit #正常退出并关闭容器
Ctrl + P + Q #正常退出但不关闭容器
[root@iZ2ze2aj5v2nx1t6jk26cfZ etc]# docker run -it centos /bin/bash
[root@10f9de353a54 /]#
[root@10f9de353a54 /]# [root@iZ2ze2aj5v2nx1t6jk26cfZ etc]# ps
PID TTY TIME CMD
26940 pts/5 00:00:00 sudo
26941 pts/5 00:00:00 bash
31733 pts/5 00:00:00 ps
[root@iZ2ze2aj5v2nx1t6jk26cfZ etc]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
10f9de353a54 centos "/bin/bash" 2 minutes ago Up 2 minutes nostalgic_chandrasekhar
[root@iZ2ze2aj5v2nx1t6jk26cfZ etc]#
删除容器
docker rm 容器ID #删除指定的容器,该命令不能删除正在运行的容器,如果必须要删除正在运行的,用rm -f
docker rm -f $(docker ps -aq) #删除所有的容器
docker ps -a -q|xargs docker rm #删除所有的容器
启动、停止容器
docker start 容器ID
docker restart 容器ID
docker stop 容器ID #停止当前正在运行的容器
docker kill 容器ID #强制停止当前容器
练习部署Nginx
[root@iZ2ze2aj5v2nx1t6jk26cfZ ~]# docker run -d --name nginx01 -p 3344:80 nginx
3682a81831158ac6ef0237150d411bf0ada34780825d9fceea45d7e5cdbf119c
[root@iZ2ze2aj5v2nx1t6jk26cfZ ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3682a8183115 nginx "/docker-entrypoint.…" 4 seconds ago Up 4 seconds 0.0.0.0:3344->80/tcp nginx01
[root@iZ2ze2aj5v2nx1t6jk26cfZ ~]# curl localhost:3344
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
[root@iZ2ze2aj5v2nx1t6jk26cfZ ~]#
[root@iZ2ze2aj5v2nx1t6jk26cfZ ~]# docker exec -it nginx01 /bin/bash
root@3682a8183115:/# whereis nginx
nginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginx
root@3682a8183115:/# cd /etc/nginx/
root@3682a8183115:/etc/nginx# ll
bash: ll: command not found
root@3682a8183115:/etc/nginx# ls
conf.d fastcgi_params mime.types modules nginx.conf scgi_params uwsgi_params
root@3682a8183115:/etc/nginx#
1)部署成功之后,在阿里云上设置防火墙规则
2)访问 公网IP:3344,即可访问成功
练习部署ES+kibana
(ES下载运行容器后发现特别卡或者启动之后运行一会自动停止---原因:ES很消耗内存)
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.14.2 #启动es
docker stats #查看cpu的状态
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:7.14.2 #固定参数启动
下载运行可视化面板portainer
[root@iZ2ze2aj5v2nx1t6jk26cfZ ~]# docker search portainer |head -n 3
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
portainer/portainer This Repo is now deprecated, use portainer/p… 2133
portainer/portainer-ce Portainer CE - Making Docker and Kubernetes … 804
[root@iZ2ze2aj5v2nx1t6jk26cfZ ~]# docker volume create portainer_data
portainer_data
[root@iZ2ze2aj5v2nx1t6jk26cfZ ~]# docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer
学习笔记(二) ---Docker镜像
备注:文章来源于视频: 遇见狂神说(Ps:狂神的课真的特别好~)