标签:ase span image 修改 acl ash format div pre
docker容器, 再启动之后 我们可以对其进行 修改删除等等。
如果是一个数据库的容器, 里面的数据 不想随着这个容器的消失, 而消失。 就需要持久化数据存储。
Data Volume
这是 docker hub 上面 mysql 的Dockerfile 这里的 VOLUME 意思就是, 将产生的数据 写入到当前主机的 /var/lib/mysql 里面。
[miller@docker4 ~]$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE daocloud.io/library/mysql latest 9228ee8bac7a 11 days ago 547MB
[miller@docker4 ~]$ docker run -d --name=mysql1 -e MYSQL_ALLOW_EMPTY_PASSWORD=true daocloud.io/library/mysql e7945f20bc456038a110a9798299356c8e7912a22eceaaf4e2bd29880460ab6f
-e MYSQL_ALLOW_EMPTY_PASSWORD=true 告诉mysql 没有密码也可以用。
https://hub.docker.com/_/mysql 这里有一些参数的详解。 也可以设置密码。
[miller@docker4 ~]$ docker volume ls # 会在主机上找个地方存 数据
DRIVER VOLUME NAME
local 283f5d6584642ae6d32d5e02fd1330855b501dd891ddf38c5b40428183c652c8 # 这个是redis的
local 330b65bda64c22b0929443d9eaa2db28c3a2468f76876b706c8efdbcbf6e4919 # 这个是mysql的
[miller@docker4 docker]$ docker volume inspect 330b65bda64c22b0929443d9eaa2db28c3a2468f76876b706c8efdbcbf6e4919 [ { "CreatedAt": "2020-04-11T20:26:36+08:00", "Driver": "local", "Labels": null, "Mountpoint": "/var/lib/docker/volumes/330b65bda64c22b0929443d9eaa2db28c3a2468f76876b706c8efdbcbf6e4919/_data", "Name": "330b65bda64c22b0929443d9eaa2db28c3a2468f76876b706c8efdbcbf6e4919", "Options": null, "Scope": "local" } ]
"Mountpoint": "/var/lib/docker/volumes/330b65bda64c22b0929443d9eaa2db28c3a2468f76876b706c8efdbcbf6e4919/_data" 这个路径就是安装docker这台主机
上的文件路径。 数据库产生的数据 都会存储到这里。 volume 是不会因为容器的删除 而消失。
由于volume的名字不友好, 可以自己定义:起别名:
[miller@docker4 ~]$ docker run -d --name=mysql1 -v mysql:/var/lib/mysql -e MYSQL_ALLOW_EMPTY_PASSWORD=true daocloud.io/library/mysql 7b006082d7d9c1cc8f17dfaefda26afea6d2adb0c89b216eafe193fa9420c917
-v mysql:/var/lib/mysql 就这一段参数。根mysql的 Dockerfile 中 Volume [/var/lib/mysql] 一样就可以了。
[miller@docker4 ~]$ docker volume ls
DRIVER VOLUME NAME
local 330b65bda64c22b0929443d9eaa2db28c3a2468f76876b706c8efdbcbf6e4919 # redis的
local mysql # 刚刚创建的 mysql 容器的 volume
可以进到 MySQL 容器中,登录客户端。
[miller@docker4 ~]$ docker exec -it mysql1 /bin/bash
root@c057b8fbb3ad:/# mysql -u root Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 8 Server version: 8.0.19 MySQL Community Server - GPL Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement. mysql>
在这个数据库里面, 创建一个库 然后, 停止mysql容器, 再删除容器。
[miller@docker4 ~]$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c057b8fbb3ad daocloud.io/library/mysql "docker-entrypoint.s…" 4 minutes ago Up 4 minutes 3306/tcp, 33060/tcp mysql1 [miller@docker4 ~]$ docker rm -f mysql1 # 停止这个容器 并且删除 mysql1
[miller@docker4 ~]$ docker volume ls
DRIVER VOLUME NAME
local 330b65bda64c22b0929443d9eaa2db28c3a2468f76876b706c8efdbcbf6e4919
local mysql # volume 是还在的。 后面再创建一个 容器 然后依然使用这个 volume
# 可以看到, 再次重新创建一个 容器。 依然使用同一个 volume 的话。 还能继续使用原来的数据。 是没有丢的。
[miller@docker4 ~]$ docker run -d --name=mysql2 -v mysql:/var/lib/mysql -e MYSQL_ALLOW_EMPTY_PASSWORD=true daocloud.io/library/mysql f9cfe55e7e6d85a6c44bc177fb324051e5735e80dbf30c5224cbfd0c7f844181
[miller@docker4 ~]$ docker exec -it mysql2 mysql -u root Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 8 Server version: 8.0.19 MySQL Community Server - GPL Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement. mysql> show databases; +--------------------+ | Database | +--------------------+ | docker | | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 5 rows in set (0.01 sec)
标签:ase span image 修改 acl ash format div pre
原文地址:https://www.cnblogs.com/chengege/p/12682501.html