Docker入门:
- Docker 入门教程 - 阮一峰的网络日志 (ruanyifeng.com)
- docker入门,这一篇就够了。-CSDN博客
- Docker 容器使用 | 菜鸟教程 (runoob.com)
- Docker自定义网络和运行时指定IP_docker run ip-CSDN博客
基本命令
链接:docker入门,这一篇就够了。-CSDN博客
1、帮助命令
docker version #显示docker详细信息
docker info #显示docker的系统信息,包括镜像和容器的数量
docker --help #docker帮助命令手册
2、镜像命令
docker images #查看所有本地主机的镜像
docker search 镜像名 #搜索镜像
docker pull 镜像名 [标签] #下载镜像(如果不写tag,默认是latest)
docker rmi 镜像名 [标签] #删除镜像 docker rmi -f $(docker images -aq) 删除全部镜像
docker tag 镜像名:版本 新镜像名:版本 #复制镜像并且修改名称
docker commit -a "xxx" -c "xxx" 镜像ID 名字:版本 #提交镜像
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
docker load -i /xxx/xxx.tar #导入镜像
docker save -o /xxx/xxx.tar #保存一个镜像为一个tar包
3、容器命令
docker run [可选参数] image 命令 #启动容器(无镜像会先下载镜像)
#参数说明
--name = "Name" 容器名字
-c 后面跟待完成的命令
-d 以后台方式运行并且返回ID,启动守护进程式容器
-i 使用交互方式运行容器,通常与t同时使用
-t 为容器重新分配一个伪输入终端。也即启动交互式容器
-p 指定容器端口 -p 容器端口:物理机端口 映射端口
-P 随机指定端口
-v 给容器挂载存储卷
docker build #创建镜像 -f:指定dockerfile文件路径 -t:镜像名字以及标签
docker logs 容器实例的ID #查看容器日志
docker rename 旧名字 新名字 # 给容器重新命名
docker top 容器实例的ID #查看容器内进程
docker ps -a #列出所有容器(不加-a就是在运行的)
docker rm 容器实例的ID #删除容器(正在运行容器不能删除,除非加-f选项)
docker kill 容器实例的ID #杀掉容器
docker history 容器实例的ID #查看docker镜像的变更历史
docker start 容器实例的ID #启动容器
docker restart 容器实例的ID #重启容器
docker stop 容器实例的ID #停止正在运行的容器
docker attach /docker exec 容器实例的ID #同为进入容器命令,不同的是attach连接终止会让容器退出后台运行,而exec不会。并且,docker attach是进入正在执行的终端,不会情动新的进程,而docker exec则会开启一个新的终端,可以在里面操作。
docker image inspect 容器名称:容器标签 #查看容器内源数据
docker cp 容器id:容器内路径 目的主机路径 #从容器内拷贝文件到主机(常用)或者从主机拷贝到容器(一般用挂载)
exit #直接退出容器
crlt + P 再按 ctrl + Q #退出容器但是不终止运行
一、根据需要拉取需要的镜像
- Ubuntu镜像:包含的是一个精简的Ubuntu操作系统,没有预装特定的应用程序。
- Tomcat镜像:内置了Tomcat服务器,可能还包含了特定的Java运行时环境(JRE)或其他必要的组件,以便立即部署和运行Java Web应用。
docker pull ubuntu:latest #获取Ubuntu的最新长期支持版本(LTS)
docker pull ubuntu:18.04 #如果你需要特定版本,比如18.04
docker pull tomcat:latest #获取Tomcat的最新版本镜像
docker pull tomcat:8.5 #如果你需要特定版本的Tomcat,例如8.5版本
不知道需要什么则这样:
docker pull ubuntu
二、创建及使用容器
2.1 容器的创建
2.2容器需要指定IP地址时
正确做法如下:
1、需要创建一个自定义网络,并指定一个包含您希望分配给容器的IP地址(192.168.0.51)的子网,以下命令包含了:
- 创建一个桥接网络(
--driver bridge
)。 - 指定了子网为
192.168.0.0/24
,这覆盖了从192.168.0.1到192.168.0.254的地址。 --ip-range=192.168.0.48/29
指定了IP地址范围包含了从192.168.0.48
到192.168.0.55
共8个地址(包括首尾地址)- 设置了网关为
192.168.0.1
。
sudo docker network create \
--driver bridge \
--subnet=192.168.0.0/24 \
--ip-range=192.168.0.48/29 \
--gateway=192.168.0.1 \
网络名称
2、接下来,使用刚创建的自定义网络启动容器,并指定IP地址:
sudo docker run -itd \
--name eric-ubuntu-1 \
--network 要连接的网络名称 \
--ip 192.168.0.51 \
ubuntu:latest /bin/bash
2.3 容器的使用
参考链接:Docker 容器使用 | 菜鸟教程 (runoob.com)
查看信息 --------------------------------------------------------------------------
docker ps # 查看正在运行的容器
docker ps -a # 查看所有容器
#查看容器相关信息(推荐使用这个)
#打印网络名称、容器名称、主机名及对应的IP地址
docker inspect --format '{{range $key, $value := .NetworkSettings.Networks}}{{$key}}: {{$.Name}} - {{$.Config.Hostname}} - {{$value.IPAddress}}{{println}}{{end}}' 容器名/ID
#查看存在的网络
docker network ls
#查看某个网络下连接的容器
docker network inspect 网络名或ID
#查看容器连接的网络
docker inspect 容器名/ID
ip addr show #列出系统中所有网络接口,包括IP地址、子网掩码、广播地址、网络接口的状态
ip route #展示系统的路由表。路由表是决定数据包在网络中如何转发
删除 ------------------------------------------------------------------------------
#将容器从指定网络断开
docker network disconnect my_network my_container
#删除网络(无容器连接时才可删除)
docker network rm my_network -f (-f表示强制删除)
#删除容器
docker rm 容器名/ID #(正在运行容器不能删除,除非加-f选项)
进入和退出容器 ------------------------------------------------------------------------
#进入容器前要先启动
docker start 容器名/ID #启动容器
docker restart 容器名/ID #重启容器
docker stop 容器名/ID #停止正在运行的容器
# 进入容器,推荐exec 进入容器前要先启动容器
docker attach 容器名/ID #使用attach进入后退出,容器停止运行
docker exec -it 容器名/ID /bin/bash #使用exec进入后退出,容器不会停止
docker exec -it 容器名/ID bash
# 退出容器
exit #直接退出
crlt + P 再按 ctrl + Q #退出容器但是不终止运行
docker相关服务 ------------------------------------------------------------------------
systemctl start docker #启动服务
systemctl status docker #查看状态 active(runing)表示已启动
systemctl stop docker #停止服务
三、Docker的主要网络模式
四、将自己的代码放入容器中
4.1 将本地代码复制到容器中
可以使用docker cp
命令将本地代码复制到容器中,或者在Dockerfile
中使用COPY
指令构建包含代码的新镜像。例如,若要将本地的code1
目录复制到test1
容器的/app
目录下:
docker cp code1 test1:/app
或者在Dockerfile
中使用:
COPY code1 /app
然后重新构建镜像并运行新容器。
4.2 卷(volume)挂载
如果您需要频繁修改代码并实时查看效果,考虑使用卷(volume)挂载,将宿主机上的代码目录映射到容器内。这样,对宿主机上代码的任何更改都会即时反映到容器中。
使用docker run
命令时,通过-v
或--volume
标志来挂载Windows共享文件夹到容器内的指定路径。假设你在Windows上共享了一个名为C:\Users\Username\sharedfolder
的文件夹,并希望在Docker容器中将其挂载到/mnt/shared
路径,命令大致如下:
docker run -it --name my_container -v /mnt/shared:/path/in/container your_image_name
这里,/host/path
是宿主机上的目录路径,/container/path
是容器内的目录路径。当容器运行时,任何对/container/path
下的更改都会反映到宿主机的/host/path
下,反之亦然。这不仅方便开发调试,也利于数据的备份和迁移,因为数据不再绑定于容器生命周期。
五、在ubuntu修改docker0地址
1、停止docker服务:
sudo systemctl stop docker
2、删除现有的docker0接口:
sudo ip link delete docker0
3、创建一个新的docker0接口,并配置你想要的IP地址。例如,如果你想将docker0的地址 设置为192.168.5.1,子网为255.255.255.0,可以使用下列命令:
sudo ip link add docker0 type bridge
sudo ip addr add 192.168.5.1/24 dev docker0
sudo ip link set dev docker0 up
4、重启docker服务:
sudo systemctl start docker
注意,修改docker0地址可能会影响正在运行的docker容器的网络连接,因此在执行这些操作之前,请确保已经停止所有相关容器或者已经进行了适当的网络配置。