Docker
安装
- 环境查看(系统内核)
[root@gailejiubushizhanan ~]# uname -r
4.18.0-348.7.1.el8_5.x86_64
- 系统版本
[root@gailejiubushizhanan ~]# cat /etc/os-release
NAME="CentOS Linux"
VERSION="8"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="8"
PLATFORM_ID="platform:el8"
PRETTY_NAME="CentOS Linux 8"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:8"
HOME_URL="https://centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-8"
CENTOS_MANTISBT_PROJECT_VERSION="8"
- 安装 使用yum安装过程中如果centos版本为7以上即8,可能出现报错问题,解决方法如下: yum报错解决
#1.卸载旧的Docker版本
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
#2.安装Docker需要的环境依赖(安装包)
sudo yum install -y yum-utils
#3.设置镜像仓库
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo #默认是国外的
#阿里云镜像地址(推荐:贼快):
yum-config-manager \
--add-repo \ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 更新yum软件包索引
yum makecache(centos7)
yum makecache(centos8)
# 4.安装docker相关的内容(引擎)docker-ce社区版 ee企业版
yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
#5.查看docker是否安装成功或启动成功
docker version
#6.启动docker
systemctl start docker

#7.通过跑hello world镜像判定docker引擎是否安装成功
docker run hello-world

#8.查看hello-world镜像
[root@gailejiubushizhanan yum.repos.d]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest feb5d9fea6a5 9 months ago 13.3kB
卸载
#卸载依赖
sudo yum remove docker-ce docker-ce-cli containerd.io docker-compose-plugin
#删除资源(目录)
rm -rf /var/lib/docker
rm -rf /var/lib/containerd
#/var/lib/docker docker的默认工作路径
阿里云镜像加速
-
登陆阿里云找到“容器服务”

-
找到镜像加速地址

-
配置使用
#新建目录docker
sudo mkdir -p /etc/docker
#配置demoan.json配置镜像地址
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://ys33xwjr.mirror.aliyuncs.com"]
}
EOF
#重启镜像
sudo systemctl daemon-reload
#重启docker
sudo systemctl restart docker
HelloWorld流程

底层原理
Docker是怎么工作的?
Docker是一个client-server结构的系统,Docker的守护进程运行在主机上(宿主机),通过Socket从客户端访问。
DockerServer接收到Docker-Client的指令,就会执行这个命令。
Docker为什么比VM快
- docker有着比虚拟机更少的抽象层
- docker是利用宿主机的内核,vm需要的是Guest OS.
也就是说,在新建一个应用的时候,docker不需要像VM那样重新加载一个操作系统的内核,避免引导操作,虚拟机是加载Guest OS,是分钟级别的,而docker是依赖宿主机的操作系统,即Host OS,省略了这个复杂的过程,是秒级的!
GuestOS:VM(虚拟机)里的的系统(OS);
HostOS:物理机里的系统(OS);
Docker常用命令
帮助命令
docker version # 显示docker的版本信息
docker info # 显示docker的系统信息。包括镜像和容器的数量
docker 命令 --help # 万能命令 帮助命令 例如:docker images --help或 docker tag --help
帮助文档地址: 帮助文档地址
镜像命令
docker images
[root@gailejiubushizhanan wuyi]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest feb5d9fea6a5 9 months ago 13.3kB
# 解释
REPOSITORY 镜像的仓库源
TAG 镜像的标签
IMAGE ID 镜像的ID
CREATED 镜像的创建时间
SIZE 镜像的大小
# 可选项
Options:
-a, --all Show all images (default hides intermediate images) #列出所有的镜像
--digests Show digests
-f, --filter filter Filter output based on conditions provided
--format string Pretty-print images using a Go template
--no-trunc Don't truncate output
-q, --quiet Only show image ID # 只显示镜像的ID
docker search搜索镜像
[root@gailejiubushizhanan wuyi]# docker search mysql
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 12767 [OK]
mariadb MariaDB Server is a high performing open sou… 4905 [OK]
percona Percona Server is a fork of the MySQL relati… 579 [OK]
phpmyadmin phpMyAdmin - A web interface for MySQL and M… 557 [OK]
bitnami/mysql Bitnami MySQL Docker Image 71 [OK]
linuxserver/mysql-workbench 37
linuxserver/mysql A Mysql container, brought to you by LinuxSe… 35
ubuntu/mysql MySQL open source fast, stable, multi-thread… 34
circleci/mysql MySQL is a widely used, open-source relation… 26
google/mysql MySQL server for Google Compute Engine 21 [OK]
rapidfort/mysql RapidFort optimized, hardened image for MySQL 13
bitnami/mysqld-exporter 3
ibmcom/mysql-s390x Docker image for mysql-s390x 2
nasqueron/mysql 1 [OK]
newrelic/mysql-plugin New Relic Plugin for monitoring MySQL databa… 1 [OK]
vitess/mysqlctld vitess/mysqlctld 1 [OK]
#可选项 通过收藏来过滤
--filter=STARS=3000 搜索出来的镜像就是STARS大于3000的
[root@gailejiubushizhanan wuyi]# docker search mysql -f=STARS=3000
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 12767 [OK]
mariadb MariaDB Server is a high performing open sou… 4905 [OK]
[root@gailejiubushizhanan wuyi]# docker search mysql --filter=STARS=3000
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 12767 [OK]
mariadb MariaDB Server is a high performing open sou… 4905 [OK]
docker pull下载镜像
# 下载镜像 docker pull 镜像名[:tag] 中括号代表可选
[root@gailejiubushizhanan wuyi]# docker pull mysql
Using default tag: latest # 如果不写tag,默认就是latest
latest: Pulling from library/mysql
72a69066d2fe: Pull complete # 分层下载,docker image的核心 联合文件系统
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 pull latest
docker pull docker.io/library/mysql:latest
# 指定版本下载
[root@gailejiubushizhanan wuyi]# 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 complete
37f2405cae96: Pull complete
e2482e017e53: Pull complete
70deed891d42: Pull complete
Digest: sha256:f2ad209efe9c67104167fc609cca6973c8422939491c9345270175a300419f94
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7
# PS:联合文件系统是在分层下载的时候,可能用到之前下载过的层级内容,这时候则不需要重新下载,可以复用
docker rmi删除镜像!
[root@gailejiubushizhanan wuyi]# docker rmi -f 容器ID # 删除指定的镜像
[root@gailejiubushizhanan wuyi]# docker rmi -f 容器ID 容器ID 容器ID # 删除多个镜像
[root@gailejiubushizhanan wuyi]# docker rmi -f $(docker images -aq) # 删除全部的镜像
docker save保存镜像
docker save 镜像名/镜像ID -o 镜像路径及镜像名
docker save tomcat -o /mytomcatimg.tar
docker load加载镜像
docker load -i 镜像路径
docker login登陆docker仓库(推送镜像前需要先登陆镜像仓库)
docker login --username=镜像仓库用户名 镜像仓库实例地址 #如果不填实例地址默认登陆Dockerhub
ps:windows系统命令为winpty docker login
docker logout登出
docker build构建镜像
docker build -f Dockerfile # -f指定dockerfile文件路径及文件名 若文件名为Dockerfile,并在当前目录可用.替换
docker build .
docker tag给镜像打标签
docker tag 源镜像名:[镜像版本号] 新的镜像名:[镜像版本号] #镜像名组成:镜像实例地址/空间名/仓库名(镜像名)
#通常会把docker build 和docker tag连用,如下:
docker build . -t 镜像名:[镜像版本号] #意思是根据当前目录下的Dockerfile将项目打成镜像并命名镜像,同时镜像打上tag
docker push推送镜像至镜像仓库
docker push 镜像名:[镜像版本号]
docker commit可以将指定的容器封装成一个镜像
#-m="提交信息" -a="作者信息"
docker commit -m="gitlab初始化" -a="无法长大" 容器ID/容器名 封装后的镜像名:[镜像版本号]
容器命令
有了镜像才能创建容器
docker pull centos
新建容器并启动
docker run [可选参数] image
#参数说明
--name="Name" 容器名字 tomcat01 tomcat02,用来区分容器
-d 后台方式运行
-it 使用交互方式运行,进入容器查看内容
-p 指定容器的端口 -p 8080:8080
-p ip:主机端口:容器端口
-p 主机端口:容器端口(常用)
-p 容器端口
容器端口
-P 随机指定端口
# 测试 启动并进入容器 如果是alpine制作的镜像 /bin/bash需要替换成 /bin/sh
[root@gailejiubushizhanan wuyi]# docker run -it centos /bin/bash
[root@f5419ddcba65 /]# ls # 查看容器内的centos,基础版本, 很多命令都不完善
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
# 从容器中退回主机
[root@d43530d2a88a /]# exit
exit
[root@gailejiubushizhanan /]# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
列出所有运行的容器
# docker ps 命令
-a #列出当前正在运行的容器+带出历史运行过的容器
-n=? # 显示最近创建的容器
-q # 只显示容器的编号
[root@gailejiubushizhanan /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@gailejiubushizhanan /]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d43530d2a88a centos "/bin/bash" 3 minutes ago Exited (0) 3 minutes ago adoring_kepler
f5419ddcba65 centos "/bin/bash" 13 minutes ago Exited (0) 4 minutes ago boring_goldberg
8b87da3b707e feb5d9fea6a5 "/hello" 24 hours ago Exited (0) 24 hours ago upbeat_davinci
退出容器
exit # 直接停止容器 并退出
ctrl + p + q # 容器不停止退出
删除容器
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 # 强制停止当前容器
常用其他命令
启动容器
# 命令 docker run -d 镜像名
[root@gailejiubushizhanan /]# docker run -d centos
# docker ps,发现centos 停止了
# 常见的坑,docker 容器使用后台运行,就必须要有一个前台进程,docker发现没有应用,就会自动停止
# nginx服务, 容器启动后,发现自己没有提供服务,就会立刻停止,就没有程序了
查看日志
# 用容器去跑脚本 (不停的启动)
[root@gailejiubushizhanan /]# docker run -d centos /bin/bash -c "while true;do echo dogyi;sleep 1;done"
[root@gailejiubushizhanan /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fe57e0312e29 centos "/bin/bash -c 'while…" 3 seconds ago Up 2 seconds awesome_kare
3f857075c75c centos "/bin/bash" 6 minutes ago Up 6 minutes blissful_keldysh
# 显示日志
-tf # 显示日志
--tail number # 要显示的日志条数
[root@gailejiubushizhanan /]# docker logs -tf --tail 10 fe57e0312e29
查看容器中的进程信息
# 命令 docker top 容器ID
[root@gailejiubushizhanan /]# docker top fe57e0312e29
UID PID PPID C STIME TTY TIME CMD
root 11799 11779 0 14:57 ? 00:00:00 /bin/bash -c while true;do echo dogyi;sleep 1;done
root 13078 11799 0 15:16 ? 00:00:00 /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 1
查看容器元数据
# 命令 docker inspect 容器ID
[root@gailejiubushizhanan /]# docker inspect fe57e0312e29
[
{
"Id": "fe57e0312e29f67d431da9eb40a587196495b8ace97679830430f98af11d5ed0",
"Created": "2022-06-28T06:57:03.447616977Z",
"Path": "/bin/bash",
"Args": [
"-c",
"while true;do echo dogyi;sleep 1;done"
],
"State": {
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 11799,
"ExitCode": 0,
"Error": "",
"StartedAt": "2022-06-28T06:57:03.832198668Z",
"FinishedAt": "0001-01-01T00:00:00Z"
},
"Image": "sha256:5d0da3dc976460b72c77d94c8a1ad043720b0416bfc16c52c45d4847e53fadb6",
"ResolvConfPath": "/var/lib/docker/containers/fe57e0312e29f67d431da9eb40a587196495b8ace97679830430f98af11d5ed0/resolv.conf",
"HostnamePath": "/var/lib/docker/containers/fe57e0312e29f67d431da9eb40a587196495b8ace97679830430f98af11d5ed0/hostname",
"HostsPath": "/var/lib/docker/containers/fe57e0312e29f67d431da9eb40a587196495b8ace97679830430f98af11d5ed0/hosts",
"LogPath": "/var/lib/docker/containers/fe57e0312e29f67d431da9eb40a587196495b8ace97679830430f98af11d5ed0/fe57e0312e29f67d431da9eb40a587196495b8ace97679830430f98af11d5ed0-json.log",
"Name": "/awesome_kare",
"RestartCount": 0,
"Driver": "overlay2",
"Platform": "linux",
"MountLabel": "",
"ProcessLabel": "",
"AppArmorProfile": "",
"ExecIDs": null,
"HostConfig": {
"Binds": null,
"ContainerIDFile": "",
"LogConfig": {
"Type": "json-file",
"Config": {}
},
"NetworkMode": "default",
"PortBindings": {},
"RestartPolicy": {
"Name": "no",
"MaximumRetryCount": 0
},
"AutoRemove": false,
"VolumeDriver": "",
"VolumesFrom": null,
"CapAdd": null,
"CapDrop": null,
"CgroupnsMode": "host",
"Dns": [],
"DnsOptions": [],
"DnsSearch": [],
"ExtraHosts": null,
"GroupAdd": null,
"IpcMode": "private",
"Cgroup": "",
"Links": null,
"OomScoreAdj": 0,
"PidMode": "",
"Privileged": false,
"PublishAllPorts": false,
"ReadonlyRootfs": false,
"SecurityOpt": null,
"UTSMode": "",
"UsernsMode": "",
"ShmSize": 67108864,
"Runtime": "runc",
"ConsoleSize": [
0,
0
],
"Isolation": "",
"CpuShares": 0,
"Memory": 0,
"NanoCpus": 0,
"CgroupParent": "",
"BlkioWeight": 0,
"BlkioWeightDevice": [],
"BlkioDeviceReadBps": null,
"BlkioDeviceWriteBps": null,
"BlkioDeviceReadIOps": null,
"BlkioDeviceWriteIOps": null,
"CpuPeriod": 0,
"CpuQuota": 0,
"CpuRealtimePeriod": 0,
"CpuRealtimeRuntime": 0,
"CpusetCpus": "",
"CpusetMems": "",
"Devices": [],
"DeviceCgroupRules": null,
"DeviceRequests": null,
"KernelMemory": 0,
"KernelMemoryTCP": 0,
"MemoryReservation": 0,
"MemorySwap": 0,
"MemorySwappiness": null,
"OomKillDisable": false,
"PidsLimit": null,
"Ulimits": null,
"CpuCount": 0,
"CpuPercent": 0,
"IOMaximumIOps": 0,
"IOMaximumBandwidth": 0,
"MaskedPaths": [
"/proc/asound",
"/proc/acpi",
"/proc/kcore",
"/proc/keys",
"/proc/latency_stats",
"/proc/timer_list",
"/proc/timer_stats",
"/proc/sched_debug",
"/proc/scsi",
"/sys/firmware"
],
"ReadonlyPaths": [
"/proc/bus",
"/proc/fs",
"/proc/irq",
"/proc/sys",
"/proc/sysrq-trigger"
]
},
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/ca5bbe8e46737f973b4c3caaaf54679fcefa35835052ca8989045a71849fb0e3-init/diff:/var/lib/docker/overlay2/76a198e35108e465305e42bc93d3a3a2b78605c1ff71f5fc4034b827116e83cf/diff",
"MergedDir": "/var/lib/docker/overlay2/ca5bbe8e46737f973b4c3caaaf54679fcefa35835052ca8989045a71849fb0e3/merged",
"UpperDir": "/var/lib/docker/overlay2/ca5bbe8e46737f973b4c3caaaf54679fcefa35835052ca8989045a71849fb0e3/diff",
"WorkDir": "/var/lib/docker/overlay2/ca5bbe8e46737f973b4c3caaaf54679fcefa35835052ca8989045a71849fb0e3/work"
},
"Name": "overlay2"
},
"Mounts": [],
"Config": {
"Hostname": "fe57e0312e29",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
],
"Cmd": [
"/bin/bash",
"-c",
"while true;do echo dogyi;sleep 1;done"
],
"Image": "centos",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": null,
"OnBuild": null,
"Labels": {
"org.label-schema.build-date": "20210915",
"org.label-schema.license": "GPLv2",
"org.label-schema.name": "CentOS Base Image",
"org.label-schema.schema-version": "1.0",
"org.label-schema.vendor": "CentOS"
}
},
"NetworkSettings": {
"Bridge": "",
"SandboxID": "30d4bdf7307108c9b2c69c3e3a3776b4e0d450339713314d58dfaafd4f747dbf",
"HairpinMode": false,
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"Ports": {},
"SandboxKey": "/var/run/docker/netns/30d4bdf73071",
"SecondaryIPAddresses": null,
"SecondaryIPv6Addresses": null,
"EndpointID": "886638246b686bcf0c3933aed09a680d6fb76e260a1216e1233bb86ed6b251d0",
"Gateway": "172.17.0.1",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"IPAddress": "172.17.0.3",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"MacAddress": "02:42:ac:11:00:03",
"Networks": {
"bridge": {
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"NetworkID": "e8131804e44fc90670fbe7909eb74d6663d03c2293ef4d7ec695fb2b82a23d64",
"EndpointID": "886638246b686bcf0c3933aed09a680d6fb76e260a1216e1233bb86ed6b251d0",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.3",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:11:00:03",
"DriverOpts": null
}
}
}
}
]
**进入当前正在运行的容器
# 我们通常容器都是使用后台方式运行的,需要进入容器修改一些配置
# 命令 -it表示以交互的方式执行 bashShell(/bin/bash)
docker exect -it 容器id bashShell
# 测试
[root@gailejiubushizhanan /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fe57e0312e29 centos "/bin/bash -c 'while…" 37 minutes ago Up 37 minutes awesome_kare
3f857075c75c centos "/bin/bash" 43 minutes ago Up 43 minutes blissful_keldysh
[root@gailejiubushizhanan /]# docker exec -it fe57e0312e29 /bin/bash
[root@fe57e0312e29 /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
[root@fe57e0312e29 /]# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 06:57 ? 00:00:00 /bin/bash -c while true;do echo dogyi;sleep 1;done
root 2299 0 0 07:35 pts/0 00:00:00 /bin/bash
root 2320 1 0 07:35 ? 00:00:00 /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 1
root 2321 2299 0 07:35 pts/0 00:00:00 ps -ef
# 方式二
docker attach 容器id
# 测试
[root@gailejiubushizhanan /]# docker attach fe57e0312e29
正在执行当前的脚本...
# docker exec 进入容器后开启一个新的终端,可以在里面操作(常用)
# docker attach 进入容器正在执行的终端,不会启动新的终端(进程)
从容器拷贝文件到主机上
docker cp 容器ID:容器内路径 目的的主机路径
# 测试
[root@gailejiubushizhanan home]# docker run -it centos /bin/bash
[root@4b87423ec9f6 /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
[root@4b87423ec9f6 /]# cd /home/
[root@4b87423ec9f6 home]# ls
# 在容器内新建文件test.java
[root@4b87423ec9f6 home]# touch test.java
[root@4b87423ec9f6 home]# ls
test.java
[root@4b87423ec9f6 home]# exit
exit
# 将这个文件从容器拷贝到主机上
[root@gailejiubushizhanan home]# docker cp 4b87423ec9f6:/home/test.java /home
[root@gailejiubushizhanan home]# ls
admin db2fencl db2instl esuser fitech_report fitech_reportbasePath kibana software test.java wuyi
# 拷贝是一个手动过程,未来我们使用 -v 卷的技术 可以实现自动同步
小结

docker ps # 查看当前正在运行的容器
docker ps -a # 查看所有状态的容器
Docker安装Nginx
# 1.搜索nginx镜像 建议去官方的docker hub上搜索,可以看到更多帮助文档信息
# 2.拉取镜像 pull
[root@gailejiubushizhanan home]# docker run -d --name nginx3344 -p 3344:80 nginx
7cbb1df865bab32eb64b00041ca1d913ac57a50be2718181fea8fd800ace4c71
# -d 表示在后台启动,即不会进入容器并开启容器的终端
# --name 给容器起别名
# -p 给容器指定端口 3344代表服务器端口(宿主机) 80代表容器内的端口
# nginx镜像名称
[root@gailejiubushizhanan home]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7cbb1df865ba nginx "/docker-entrypoint.…" 3 seconds ago Up 2 seconds 0.0.0.0:3344->80/tcp, :::3344->80/tcp nginx3344
[root@gailejiubushizhanan home]# 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>
端口暴露的概念

部署es + kibana
# es暴露的端口很多!
# es十分的耗内存
# es的数据一般需要放置到安全目录!挂载
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:tag
# docker stats查看docker运行状态
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
1fa8c8e4b8b2 elasticsearch 0.47% 2.061GiB / 3.497GiB 58.92% 2.51kB / 1.07kB 553MB / 504kB 56
31eb511246c8 rabbitmq-docker 0.20% 115.7MiB / 3.497GiB 3.23% 716kB / 2.25MB 249MB / 187kB 25
# 因为ES的运行十分占用内存,所以可以通过修改配置文件来限制内存,命令 -e
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:8.2.3
# 再使用docker stats查看状态
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
6acdd0204021 elasticsearch 0.57% 474.1MiB / 3.497GiB 13.24% 40.6MB / 156kB 146MB / 84.3MB 63
31eb511246c8 rabbitmq-docker 0.75% 120.3MiB / 3.497GiB 3.36% 716kB / 2.25MB 303MB / 187kB 25
# 使用curl 查看服务
curl localhost:9200 # 如果发现请求返回空服务,需要进入容器修改elasticsearch.yml配置文件中的 xpack.security.enabled的值将true->false,如果无法使用vim,则执行以下命令进入容器下载vim
docker exec -u 0 -it 容器id /bin/bash
apt-get update
apt-get install -y vim
# 修改好后 重启容器
docker restart 容器ID
[root@gailejiubushizhanan ~]# curl localhost:9200
{
"name" : "6acdd0204021",
"cluster_name" : "docker-cluster",
"cluster_uuid" : "W9bBWPvHR3WNX0p6kYyhZw",
"version" : {
"number" : "8.2.3",
"build_flavor" : "default",
"build_type" : "docker",
"build_hash" : "9905bfb62a3f0b044948376b4f607f70a8a151b4",
"build_date" : "2022-06-08T22:21:36.455508792Z",
"build_snapshot" : false,
"lucene_version" : "9.1.0",
"minimum_wire_compatibility_version" : "7.17.0",
"minimum_index_compatibility_version" : "7.0.0"
},
"tagline" : "You Know, for Search"
}
可视化
- portainer(先使用这个)
- Rancher(CI/CD 持续集成 持续部署)
portainer Docker图形化界面管理工具
docker run -d --restart=always -p 3344:9000 \
-v /var/run/docker.sock:/var/run/docker.sock \
--privileged=true portainer/portainer:latest
# -v挂载 宿主机目录:容器目录
# --privileged=true 授权可访问
# portainer/portainer:latest 下载安装

0 评论
评论