安装docker
- 参考官方文档
https://docs.docker.com/engine/install/centos/
或者参考Linux学习笔记中软件安装
https://blog.csdn.net/zhang_peng0609/article/details/140966967
- 配置阿里云镜像加速
docker常用命令
- 使用docker官方文档: 命令说明
- 使用 docker --help 如下:
帮助命令
docker version
docker info
docker --help
镜像基本命令
- docker images
[root@iZ2vcgjiopjasr9f0k3zrdZ docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
redis latest 7614ae9453d1 2 years ago 113MB
mysql 5.7 c20987f18b13 2 years ago 448MB
可选参数:
-a, --all # 列出所有镜像
-f, --filter filter
--format string
-q, --quiet # 只显示镜像id
- docker search 镜像
[root@iZ2vcgjiopjasr9f0k3zrdZ docker]# docker search mysql
NAME DESCRIPTION STARS OFFICIAL
mysql MySQL is a widely used, open-source relation… 15326 [OK]
bitnami/mysql Bitnami container image for MySQL 117
google/mysql MySQL server for Google Compute Engine 25
elestio/mysql Mysql, verified and packaged by Elestio 0
rapidfort/mysql RapidFort optimized, hardened image for MySQL 25
...
可选参数示例:
# docker search mysql --filter=STARS=200
- docker pull 下载镜像
docker pull mysql #不指定版本,默认下载最新版本
docker pull mysql:5.7
- docker rmi 删除镜像
docker rmi mysql
Options:
-f, --force Force removal of the image # 强制删除
--no-prune Do not delete untagged parents # 不常用
[root@iZ2vcgjiopjasr9f0k3zrdZ docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
redis latest 7614ae9453d1 2 years ago 113MB
mysql 5.7 c20987f18b13 2 years ago 448MB
示例:可以通过镜像名字或者镜像ID删除
docker rmi -f mysql
docker rmi -f c20987f18b13
高级玩法:
docker rmi -f $(docker images -aq) #复合语法:查询所有的镜像id,递归删除
容器基本命令
docker run
[root@iZ2vcgjiopjasr9f0k3zrdZ ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
redis latest 7614ae9453d1 2 years ago 113MB
mysql 5.7 c20987f18b13 2 years ago 448MB
centos latest 5d0da3dc9764 2 years ago 231MB
[root@iZ2vcgjiopjasr9f0k3zrdZ ~]# docker run --help
Options:
--name # 给容器命名
-it # 以交互模式进入启动的容器,最后面通常加上 /bin/bash 表示进入容器的控制台
-p # 端口映射 ,常用方式:主机端口:容器端口
-d # 后台方式运行
docker ps
[root@iZ2vcgjiopjasr9f0k3zrdZ ~]# docker ps #列出运行中的容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c03e8df91fd1 mysql:5.7 "docker-entrypoint.s…" 42 hours ago Up 3 seconds 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql
5bd4e55b2617 redis "docker-entrypoint.s…" 43 hours ago Up 43 hours 0.0.0.0:6379->6379/tcp, :::6379->6379/tcp redis
Options:
-a # 运行和未运行的全部容器
-n # 示例 docker ps -n=1 显示最近的一个容器
-p # 只显示容器ID
[root@iZ2vcgjiopjasr9f0k3zrdZ ~]# docker run -it centos /bin/bash # 以交互模式进入容器
[root@f1430dd80c45 /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
[root@f1430dd80c45 /]# exit # 停止容器并退出
exit
[root@iZ2vcgjiopjasr9f0k3zrdZ ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c03e8df91fd1 mysql:5.7 "docker-entrypoint.s…" 42 hours ago Up 33 seconds 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql
5bd4e55b2617 redis "docker-entrypoint.s…" 43 hours ago Up 43 hours 0.0.0.0:6379->6379/tcp, :::6379->6379/tcp redis
[root@iZ2vcgjiopjasr9f0k3zrdZ ~]#
以交互模式进入容器后,不停止容器退出
使用快捷键:ctrl +P + Q
docker rm 容器id 删除容器
docker rm -f $(docker ps -aq) 递归删除全部容器; -f : # 强制删除
[root@iZ2vcgjiopjasr9f0k3zrdZ ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f1430dd80c45 centos "/bin/bash" 21 minutes ago Exited (0) 21 minutes ago infallible_jones
c03e8df91fd1 mysql:5.7 "docker-entrypoint.s…" 42 hours ago Up 22 minutes 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql
5bd4e55b2617 redis "docker-entrypoint.s…" 43 hours ago Up 43 hours 0.0.0.0:6379->6379/tcp, :::6379->6379/tcp redis
[root@iZ2vcgjiopjasr9f0k3zrdZ ~]# docker rm f1430dd80c45 # 对于运行中的容器无法删除,可以加上 -f 强制删除
f1430dd80c45
[root@iZ2vcgjiopjasr9f0k3zrdZ ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c03e8df91fd1 mysql:5.7 "docker-entrypoint.s…" 42 hours ago Up 22 minutes 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql
5bd4e55b2617 redis "docker-entrypoint.s…" 43 hours ago Up 43 hours 0.0.0.0:6379->6379/tcp, :::6379->6379/tcp redis
[root@iZ2vcgjiopjasr9f0k3zrdZ ~]#
容器的启动与停止
docker start 容器id # 启动已停止的容器
docker restart 容器id # 重启容器
docker stop 容器id # 停止容器
docker kill 容器id # 暴力停止
其他常用命令
查看容器日志信息
docker logs 容器id
[root@iZ2vcgjiopjasr9f0k3zrdZ data]# docker logs --help # 查看容器日志
Options:
-f, --follow Follow log output # 日志输出
-n, --tail string Number of lines to show from the end of the logs (default "all") # 日志条数
-t, --timestamps Show timestamps # 显示时间戳
查看容器中进程信息
docker top 容器id
[root@iZ2vcgjiopjasr9f0k3zrdZ data]# docker top 5bd4e55b2617
UID PID PPID C STIME TTY TIME CMD
systemd+ 78090 78069 0 Aug27 ? 00:05:04 redis-server *:6379
查看进程的元数据
docker inspect 容器id
[root@iZ2vcgjiopjasr9f0k3zrdZ data]# docker inspect 5bd4e55b2617
[
{
"Id": "5bd4e55b2617448cdb9dedff020cf9ee9b26675c024e23eb3cfe2f2575e422d7",
"Created": "2024-08-27T13:55:07.223024702Z",
"Path": "docker-entrypoint.sh",
"Args": [
"redis-server",
"/etc/redis/redis.conf"
],
"State": {
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 78090,
"ExitCode": 0,
"Error": "",
"StartedAt": "2024-08-27T14:02:01.985656124Z",
"FinishedAt": "2024-08-27T14:02:01.665321141Z"
},
...
进入当前正在运行的容器
方式一:docker exec -it 容器id 控制台 # 示例: docker exec -it 5bd4e55b2617 /bin/bash
[root@iZ2vcgjiopjasr9f0k3zrdZ data]# docker exec -it 5bd4e55b2617 /bin/bash
root@5bd4e55b2617:/data# ls
appendonly.aof backup.db dump.rdb root
root@5bd4e55b2617:/data#
方式二: docker attach 容器id
[root@iZ2vcgjiopjasr9f0k3zrdZ data]# docker attach mysql
正在执行当前容器运行的逻辑...
区别:
docker exec # 进入容器,开启一个新的终端,可以在里面操作(常用)
docker attach # 进入容器,正在运行的终端
把容器内的文件拷贝到主机上
docker cp 容器id:容器内文件路径 /主机路径
[root@iZ2vcgjiopjasr9f0k3zrdZ home]# ls
mysql redis zp
[root@iZ2vcgjiopjasr9f0k3zrdZ home]# docker cp c03e8df91fd1:/home/test.java /home
Successfully copied 1.54kB to /home
[root@iZ2vcgjiopjasr9f0k3zrdZ home]# ls
mysql redis test.java zp
[root@iZ2vcgjiopjasr9f0k3zrdZ home]#
注意点: 需要在主机路径下才能正常拷贝出来,如果在容器中则无法拷贝
练习
docker安装Nginx
1. docker search nginx # 搜索镜像
2. docker pull nginx # 下载镜像
3. docker run -d --name nginx01 -p 80:80 nginx # 运行
-d #后台启动
-name #容器命名
-p #端口映射 主机端口:容器端口
nginx #以nginx镜像启动
4. curl localhost:80 # 测试
[root@iZ2vcgjiopjasr9f0k3zrdZ /]# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
a2abf6c4d29d: Already exists
a9edb18cadd1: Pull complete
589b7251471a: Pull complete
186b1aaa4aa6: Pull complete
b4df32aa5a72: Pull complete
a0bcbecc962e: Pull complete
Digest: sha256:0d17b565c37bcbd895e9d92315a05c1c3c9a29f762b011a10c54a66cd53c9b31
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
[root@iZ2vcgjiopjasr9f0k3zrdZ /]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 605c77e624dd 2 years ago 141MB
redis latest 7614ae9453d1 2 years ago 113MB
mysql 5.7 c20987f18b13 2 years ago 448MB
centos latest 5d0da3dc9764 2 years ago 231MB
[root@iZ2vcgjiopjasr9f0k3zrdZ /]# docker run -d --name nginx01 -p 80:80 nginx
9d30ab055a7cf150eb20fb5544dbdfceddd8824d0a25fd8e40680ea302d1385d
[root@iZ2vcgjiopjasr9f0k3zrdZ /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9d30ab055a7c nginx "/docker-entrypoint.…" 22 seconds ago Up 22 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp nginx01
c03e8df91fd1 mysql:5.7 "docker-entrypoint.s…" 2 days ago Up 17 hours 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql
5bd4e55b2617 redis "docker-entrypoint.s…" 2 days ago Up 2 days 0.0.0.0:6379->6379/tcp, :::6379->6379/tcp redis
[root@iZ2vcgjiopjasr9f0k3zrdZ /]# curl localhost:80
<!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>
安装tomcat
[root@iZ2vcgjiopjasr9f0k3zrdZ conf]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 605c77e624dd 2 years ago 141MB
tomcat latest fb5657adc892 2 years ago 680MB
redis latest 7614ae9453d1 2 years ago 113MB
centos latest 5d0da3dc9764 2 years ago 231MB
[root@iZ2vcgjiopjasr9f0k3zrdZ conf]# docker run -d -p 8080:8080 --name tomcat01 tomcat # 运行
4bb27aed90e887b46e77397862aa4fe384c73142754872d4278dcf4197dab588
[root@iZ2vcgjiopjasr9f0k3zrdZ conf]# curl localhost:8080 # 测试连接,发现页面404
<!doctype html><html lang="en"><head><title>HTTP Status 404 – Not Found</title><style type="text/css">body {font-family:Tahoma,Arial,sans-serif;} h1, h2, h3, b {color:white;background-color:#525D76;} h1 {font-size:22px;} h2 {font-size:16px;} h3 {font-size:14px;} p {font-size:12px;} a {color:black;} .line {height:1px;background-color:#525D76;border:none;}</style></head><body><h1>HTTP Status 404 – Not Found</h1><hr class="line" /><p><b>Type</b> Status Report</p><p><b>Description</b> The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.</p><hr class="line" /><h3>Apache Tomcat/10.0.14</h3></body></html>[root@iZ2vcgjiopjasr9f0k3zrdZ conf]#
# 进入容器,发现官方的镜像是缩减版
[root@iZ2vcgjiopjasr9f0k3zrdZ conf]# docker exec -it tomcat01 /bin/bash
root@4bb27aed90e8:/usr/local/tomcat# ls
BUILDING.txt CONTRIBUTING.md LICENSE NOTICE README.md RELEASE-NOTES RUNNING.txt bin conf lib logs native-jni-lib temp webapps webapps.dist work
root@4bb27aed90e8:/usr/local/tomcat# cd webapps
root@4bb27aed90e8:/usr/local/tomcat/webapps# ls
root@4bb27aed90e8:/usr/local/tomcat/webapps#
#解决办法-从webapps.dist目录 拷贝所有文件到webapps下
BUILDING.txt CONTRIBUTING.md LICENSE NOTICE README.md RELEASE-NOTES RUNNING.txt bin conf lib logs native-jni-lib temp webapps webapps.dist work
root@4bb27aed90e8:/usr/local/tomcat# cd webapps.dist/
root@4bb27aed90e8:/usr/local/tomcat/webapps.dist# ls
ROOT docs examples host-manager manager
root@4bb27aed90e8:/usr/local/tomcat/webapps.dist# cd ..
root@4bb27aed90e8:/usr/local/tomcat# cp -r webapps.dist/* webapps
root@4bb27aed90e8:/usr/local/tomcat# ls
BUILDING.txt CONTRIBUTING.md LICENSE NOTICE README.md RELEASE-NOTES RUNNING.txt bin conf lib logs native-jni-lib temp webapps webapps.dist work
root@4bb27aed90e8:/usr/local/tomcat# cd webapps
root@4bb27aed90e8:/usr/local/tomcat/webapps# ls
ROOT docs examples host-manager manager
root@4bb27aed90e8:/usr/local/tomcat/webapps#
# 重启tomcat容器
root@4bb27aed90e8:/usr/local/tomcat/webapps# exit
exit
[root@iZ2vcgjiopjasr9f0k3zrdZ conf]# docker restart tomcat01
tomcat01
[root@iZ2vcgjiopjasr9f0k3zrdZ conf]# curl localhost:8080
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Apache Tomcat/10.0.14</title>
<link href="favicon.ico" rel="icon" type="image/x-icon" />
<link href="tomcat.css" rel="stylesheet" type="text/css" />
</head>
部署ES+Kibana
# 注意
1. ES 需要暴露很多端口
2. ES 很消耗内存
3. ES 数据需要放置到安全目录
# 下载启动 ES
docker run -d --name elasticsearch01 -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:7.6.2
参数说明:
-e ES_JAVA_OPTS="-Xms64m -Xmx512m" # 限制es内存
# 很慢...通过添加docker镜像地址,重新加载镜像配置文件,重启docker
[root@iZ2vcgjiopjasr9f0k3zrdZ docker]# cat daemon.json
{
"registry-mirrors": [
"https://s6g9dwc9.mirror.aliyuncs.com",
"http://hub-mirror.c.163.com",
"https://docker.m.daocloud.io",
"https://noohub.ru",
"https://huecker.io",
"https://dockerhub.timeweb.cloud"
],
"data-root": "/mnt/software/docker"
}
[root@iZ2vcgjiopjasr9f0k3zrdZ docker]# vim daemon.json
[root@iZ2vcgjiopjasr9f0k3zrdZ docker]# systemctl daemon-reload
[root@iZ2vcgjiopjasr9f0k3zrdZ docker]# systemctl restart docker
# 重新下载es镜像
[root@iZ2vcgjiopjasr9f0k3zrdZ ~]# docker run -d --name elasticsearch01 -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:7.6.2
Unable to find image 'elasticsearch:7.6.2' locally
7.6.2: Pulling from library/elasticsearch
ab5ef0e58194: Pull complete
c4d1ca5c8a25: Pull complete
941a3cc8e7b8: Pull complete
43ec483d9618: Pull complete
c486fd200684: Pull complete
1b960df074b2: Pull complete
1719d48d6823: Pull complete
Digest: sha256:1b09dbd93085a1e7bca34830e77d2981521a7210e11f11eda997add1c12711fa
Status: Downloaded newer image for elasticsearch:7.6.2
6459228f59d1098f47ca700982989cccc05eeed6603930e5c7f824c7cfb79cfd
[root@iZ2vcgjiopjasr9f0k3zrdZ ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6459228f59d1 elasticsearch:7.6.2 "/usr/local/bin/dock…" 6 seconds ago Up 6 seconds 0.0.0.0:9200->9200/tcp, :::9200->9200/tcp, 0.0.0.0:9300->9300/tcp, :::9300->9300/tcp elasticsearch01
[root@iZ2vcgjiopjasr9f0k3zrdZ ~]#
[root@iZ2vcgjiopjasr9f0k3zrdZ ~]# docker stats 容器id # 查看内存使用情况
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
6459228f59d1 elasticsearch01 0.23% 357.6MiB / 1.828GiB 19.11% 2.77kB / 0B 5.89MB / 729kB 43
[root@iZ2vcgjiopjasr9f0k3zrdZ ~]# curl localhost:9200
{
"name" : "6459228f59d1",
"cluster_name" : "docker-cluster",
"cluster_uuid" : "7GMgH-XRTzWp5gNhQ9qCbw",
"version" : {
"number" : "7.6.2",
"build_flavor" : "default",
"build_type" : "docker",
"build_hash" : "ef48eb35cf30adf4db14086e8aabd07ef6fb113f",
"build_date" : "2020-03-26T06:34:37.794943Z",
"build_snapshot" : false,
"lucene_version" : "8.4.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
镜像理解
联合文件系统
Union文件系统(UnionFs)是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into asingle virtualfilesystem)。Union 文件系统是 Docker 镜像的基础。镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
特性:一次同时加载多个文件系统,但从外面看起来,只能看到一个文件系统,联合加载会把各层文件系统善加起来,这样最终的文件系统会包含所有底层的文件和目录
镜像加载原理
docker的镜像实际上由一层一层的文件系统组成,这种层级的文件系统UnionFS。
bootfs(boot file system)主要包含bootloader和kernel, bootloader主要是引导加载kernel, Linux刚启动时会加载bootfs文件系统,在Docker镜像的最底层是bootfs。这一层与我们典型的Linux/Unix系统是一样的,包含boot加载器和内核。当boot加载完成之后整个内核就都在内存中了,此时内存的使用权已由bootfs转交给内核,此时系统也会卸载bootfs。
rootfs (root file system),在bootfs之上。包含的就是典型 Linux 系统中的 /dev,/proc, /bin,/etc 等标准目录和文件。rootfs就是各种不同的操作系统发行版,比如Ubuntu,Centos等等。
commit 镜像
docker commit -m=“提交的描述信息” -a=“作者” 容器id 目标镜像名[TAG]
[root@iZ2vcgjiopjasr9f0k3zrdZ mysql]# docker ps -a # 查看所有容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6459228f59d1 elasticsearch:7.6.2 "/usr/local/bin/dock…" 25 hours ago Exited (143) 25 hours ago elasticsearch01
4bb27aed90e8 tomcat "catalina.sh run" 26 hours ago Exited (143) 26 hours ago tomcat01
[root@iZ2vcgjiopjasr9f0k3zrdZ mysql]# docker start tomcat01 # 启动 容器tomcat01
tomcat01
[root@iZ2vcgjiopjasr9f0k3zrdZ mysql]# docker exec -it tomcat01 /bin/bash # 以交互模式进入容器
root@4bb27aed90e8:/usr/local/tomcat# ls
BUILDING.txt CONTRIBUTING.md LICENSE NOTICE README.md RELEASE-NOTES RUNNING.txt bin conf lib logs native-jni-lib temp webapps webapps.dist work
root@4bb27aed90e8:/usr/local/tomcat# cd webapps
root@4bb27aed90e8:/usr/local/tomcat/webapps# ls # 之前拷贝过文件 从webapps.dist/* 到webapps
ROOT docs examples host-manager manager
root@4bb27aed90e8:/usr/local/tomcat/webapps# exit
exit
[root@iZ2vcgjiopjasr9f0k3zrdZ mysql]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4bb27aed90e8 tomcat "catalina.sh run" 26 hours ago Up About a minute 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp tomcat01
[root@iZ2vcgjiopjasr9f0k3zrdZ mysql]# docker commit -a="zp" -m="add webapps app" 4bb27aed90e8 tomcat_zp:1.0 # 提交容器为新镜像
sha256:b01aeb9b608fd6e5b24ff80c7eac8382a2799f609f3d7eb7493d35243a8226c5
[root@iZ2vcgjiopjasr9f0k3zrdZ mysql]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat_zp 1.0 b01aeb9b608f 3 minutes ago 684MB # 新的镜像
nginx latest 605c77e624dd 2 years ago 141MB
tomcat latest fb5657adc892 2 years ago 680MB
redis latest 7614ae9453d1 2 years ago 113MB
centos latest 5d0da3dc9764 2 years ago 231MB
elasticsearch 7.6.2 f29a1ee41030 4 years ago 791MB
[root@iZ2vcgjiopjasr9f0k3zrdZ mysql]#
容器数据卷
什么是容器数据卷
容器卷技术,就是目录挂载,将容器内的文件目录,挂载到Linux服务器目录上,使容器内产生的数据,可以同步到服务器主机上。防止容器删除时,导致数据丢失。
容器数据的持久化和同步,容器之间也是可以数据共享
使用数据卷
docker run -it -v 主机目录:/容器内目录
[root@iZ2vcgjiopjasr9f0k3zrdZ mysql]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat_zp 1.0 b01aeb9b608f 28 minutes ago 684MB
nginx latest 605c77e624dd 2 years ago 141MB
tomcat latest fb5657adc892 2 years ago 680MB
redis latest 7614ae9453d1 2 years ago 113MB
centos latest 5d0da3dc9764 2 years ago 231MB
elasticsearch 7.6.2 f29a1ee41030 4 years ago 791MB
# 挂载目录启动容器 centos
[root@iZ2vcgjiopjasr9f0k3zrdZ mysql]# docker run -it -v /home/centos_image:/home centos
[root@6d53f6e6e952 /]# cd /home
[root@6d53f6e6e952 home]# touch test.java
[root@6d53f6e6e952 home]# ls
test.java
- 测试:在容器内创建文件,会同步到主机中
- 测试
停止容器
在主机linux中编辑文件
重新启动容器,发现文件还是同步
安装mysql
[root@iZ2vcgjiopjasr9f0k3zrdZ home]# docker run -d -p 3306:3306 -v /home/mysql01_image/conf:/etc/mysql/conf.d -v /home/mysql01_image/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7
fd3c48a216f509c3af7737c2429f051552fab4d64e37f6263c10f3982b4b0dd1
[root@iZ2vcgjiopjasr9f0k3zrdZ home]#
参数说明:
-d # 后台运行
-p # 端口映射 主机端口:容器端口
-v # 目录挂载 主机目录:容器目录
-e # mysql 设置连接密码
--name # 容器命名
mysql:5.7 以此镜像启动容器
测试连接容器数据库,并新建一个测试数据库 test001
发现 服务器中数据是同步的
此时,就算将容器彻底删除,服务器中挂载的文件/home/mysql01_image/data目录下的数据依然存在
具名和匿名挂载
初识dockerfile
数据卷容器
DockerFile
docker网络
本篇笔记通过学习视频 : 【狂神说Java】Docker最新超详细版教程通俗易懂