查看所有镜像
docker images
后台启动容器
docker run -d 容器id
删除镜像
docker rmi -f 容器id
删除全部的容器
docker rm -f ${docker ps -a}
使用docker后台启动centos,并且执行一段shell命令
docker run -d centos /bin/sh -c “while true;do echo ceshitest;sleep 1;done”
当有容器在运行时,我们可以查看运行中的容器
docker ps
查看所有运行过的容器
docker ps -a
查看容器的运行日志
docker logs -tf --tail 10 容器id
查看容器内进程信息
docker top 容器id
查看容器内元数据
docker inspect 容器id
我们的容器运行一般都是运行在后台的,所以,当我们需要进入容器内修改容器需要以下命令
1、第一种
docker exec -it 容器id bashshell
-it表示已交互的模式进入到容器内
2、
docker attach 容器id
从容器内拷贝文件到主机
docker cp 容器id:容器内路径 目的地主机路径
当出现容器名已经被使用时,如下如
我们需要使用命令,查出当前容器名的容器id
docker ps -a|grep portainer_agent
通过容器id,删除该容器。
docker rm 容器id
docker commit 提交容器成为一个新的副本
docker commit -m =“提交的描述信息” -a=“作者” 容器id 目标镜像名:【TAG】(tag版本信息,选填)
#docker run -it -v 主机目录:容器内目录 镜像名 /bin/bash
docker run -it -v /home/ceshi:/home centos /bin/bash
使用docker
容器快速启动mysql
,并且使用数据卷技术实现文件映射,文件保存在本地。
docker run -d --name mysql01 -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=13456979826a mysql:5.7
在使用数据卷volumed的时候如果没有指定本地的映射目录。默认会存在
/var/lib/docker/volumes
目录下,当前目录下会有多个数据卷。
- 首先应该启动一个容器docker01
docker run -it --name docker01 镜像id
- docker02启动
docker run -it --name docker02 --volumes-from docker01(父容器) 镜像id
通过以上,docker01容器内的文件,会同步到docker02
- 当有docker03使用命令
--volumes-from docker01
的时候,docker03也会与docker01文件数据保持同步。
只要有一个容器在使用文件。其他容器停止的话,文件也是不受影响的
通过以上,我们知道了通过数据卷容器之间的文件数据是可以互通的。
当我们想使用mysql共享数据时,我们只需要使用数据卷,将文件共享。。当有多个mysql启动,我们都使用--volumes-from
(继承)到我们需要同步文件的容器
docker run -d --name mysql01 -p 3310:3306 -v /etc/mysql/conf.d -v /var/lib/mysql -e MYSQL_ROOT_PASSWORD=13456979826a mysql:5.7
以上命令表示将/etc/mysql/conf.d
和/var/lib/mysql
两个文件或文件夹通过数据卷共享出去。当有其他的mysql启动,使用--volume-from mysql:5.7
,便可以与mysql01共享数据
docker run -d --name mysql02 -p 3310:3306 --volumes-from mysql01 -e MYSQL_ROOT_PASSWORD=13456979826a mysql:5.7
这样mysql01与mysql02便可以数据共享
#docker network create 网络模式 IP地址/子网掩码 网关地址
docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1
当使用了我们自定义的网络运行了几个容器时。我们就可以通过容器名或者ip地址相互之间ping通。
如果使用的默认的网络模式。我们只能通过ip地址才能相互ping通。
如果容器重启,IP地址更换。便无法通过ip地址进行容器之间连接。我们需要使用
--link
命令进行容器之间的关联。双方容器需要互相关联。才能互相访问
当不同网络下的容器需要进行连接网络时。我们可以使用connect
命令让不同网络下的容器进行关联
- 实例:
#通过网络连接到容器
docker network connect 网络名 容器名
1、创建一个redis的专有网络
docker network create redis --subnet 172.38.0.0/16
2、使用shell命令创建6个redis的配置文件
for port in $(seq 1 6); \
do \
mkdir -p /mydata/redis/node-${port}/conf;
言尽于此,完结
无论是一个初级的 coder,高级的程序员,还是顶级的系统架构师,应该都有深刻的领会到设计模式的重要性。
- 第一,设计模式能让专业人之间交流方便,如下:
程序员A:这里我用了XXX设计模式
程序员B:那我大致了解你程序的设计思路了
- 第二,易维护
项目经理:今天客户有这样一个需求…
程序员:明白了,这里我使用了XXX设计模式,所以改起来很快
- 第三,设计模式是编程经验的总结
程序员A:B,你怎么想到要这样去构建你的代码
程序员B:在我学习了XXX设计模式之后,好像自然而然就感觉这样写能避免一些问题
- 第四,学习设计模式并不是必须的
程序员A:B,你这段代码使用的是XXX设计模式对吗?
程序员B:不好意思,我没有学习过设计模式,但是我的经验告诉我是这样写的
从设计思想解读开源框架,一步一步到Spring、Spring5、SpringMVC、MyBatis等源码解读,我都已收集整理全套,篇幅有限,这块只是详细的解说了23种设计模式,整理的文件如下图一览无余!
搜集费时费力,能看到此处的都是真爱!
员B:那我大致了解你程序的设计思路了
- 第二,易维护
项目经理:今天客户有这样一个需求…
程序员:明白了,这里我使用了XXX设计模式,所以改起来很快
- 第三,设计模式是编程经验的总结
程序员A:B,你怎么想到要这样去构建你的代码
程序员B:在我学习了XXX设计模式之后,好像自然而然就感觉这样写能避免一些问题
- 第四,学习设计模式并不是必须的
程序员A:B,你这段代码使用的是XXX设计模式对吗?
程序员B:不好意思,我没有学习过设计模式,但是我的经验告诉我是这样写的
[外链图片转存中…(img-L4aLjhfA-1714119495795)]
从设计思想解读开源框架,一步一步到Spring、Spring5、SpringMVC、MyBatis等源码解读,我都已收集整理全套,篇幅有限,这块只是详细的解说了23种设计模式,整理的文件如下图一览无余!
[外链图片转存中…(img-8lRCNNQr-1714119495795)]
搜集费时费力,能看到此处的都是真爱!