Docker指令大全
2022-07-07 16:13:40 31 举报
AI智能生成
Docker指令大全
作者其他创作
大纲/内容
镜像
列出已安装所有镜像
docker images
只显示镜像ID
docker images -q
拉取镜像
docker pull 镜像名:标签名
删除镜像
docker rmi 镜像ID
容器
创建容器
docker run [OPTIONS] 镜像名:标签名
OPTIONS
-i 表示交互式运行容器(就是创建容器后,马上会启动容器,并进入容器 ),通常与 -t 同时使用
-t 启动后会进入其容器命令行, 通常与 -i 同时使用; 加入 -it 两个参数后,容器创建就能登录进去。即分配一个伪终端
--name 为创建的容器指定一个名称
-d 创建一个守护式容器在后台运行,并返回容器ID
-v 表示目录映射, 格式为: -p 宿主机目录:容器目录
-p 表示端口映射,格式为: -p 宿主机端口:容器端口
交互式容器
创建容器后,马上会启动容器,并进入容器
docker run -it --name=mycentos centos:7 /bin/bash
守护式容器
果对于一个需要长期运行的容器来说,我们可以创建一个守护式容器(后台运行的容器)
docker run -id --name=mycentos2 centos:7
查看容器
查看正在运行容器
docker ps
查看所有的容器(启动与未启动的容器)
docker ps -a
查看最后一次运行的容器
docker ps –l
查看停止的容器
docker ps -f status=exited
查看容器的cpu占用率
docker stats
查看容器日志
docker logs -f -t --tail 100 容器id
启动容器
docker start 容器名称|容器id
docker start `docker ps -a -q`
启动所有运行过的容器
docker start `docker ps -a -q`
登录容器
docker exec -it 容器名称|容器id /bin/bash
查看容器内部细节
docker inspect mycentos2
容器IP地址
docker inspect --format='{{.NetworkSettings.IPAddress}}' mycentos2
退出容器
退出并停止当前容器, 注意在容器内部的命令行执行
exit
退出不停止当前容器
Ctrl + p + q
停止容器
停止正在运行的容器(正常停止)
docker stop 容器名称|容器id
强制停止正在运行的容器
docker kill 容器名称|容器id
停止所有在运行的容器
docker stop `docker ps -a -q`
删除容器
删除指定的容器
只能删除停止的容器
docker rm 容器名称 | 容器ID
删除所有容器
中运行中的容器无法删除,所以先停再删
docker rm `docker ps -a -q`
自由主题
数据目录挂载
在创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样我们就可以通过修改宿主机某个目录的文件从而去影响容器。使用 -v 选项
docker run -id -v /宿主机绝对路径目录:/容器内目录 --name=容器名 镜像名
docker run -id -v /opt:/opt --name=mycentos3 centos:7
只读(Read-only)权限
docker run -id -v /宿主机绝对路径目录:/容器内目录:ro --name=容器名 镜像名
docker run -id -v /dataHost:/dataContainer:ro --name=mycentos4 centos:7
部署应用
MySQL 部署
拉取MySQL镜像
docker pull mysql:5.7
创建 MySQL 容器
docker run -id --name=cz_mysql -p 33306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
进入MySQL容器, 登陆MySQL
docker exec -it mxg_mysql /bin/bash
mysql -u root -p
Redis 部署
拉取Redis镜像
docker pull redis
创建Redis容器
docker run -id --name=cz_redis -p 6379:6379 redis
Tomcat 部署
拉取tomcat镜像
docker pull tomcat:8
创建tomcat容器
创建tomcat容器用于 Web应用,并且进行目录映射
docker run -id --name=cz_tomcat -p 8888:8080 -v /usr/local/project:/usr/local/tomcat/webapps --privileged=true tomcat:8
-p 表示地址映射, 宿主机端口号:容器运行端口号
-v 表示地址映射, 宿主机目录:容器映射目录
--privileged=true 如果映射的是多级目录,防止有可能会出现没有权限的问题,所以加上此参数
-v 表示地址映射, 宿主机目录:容器映射目录
--privileged=true 如果映射的是多级目录,防止有可能会出现没有权限的问题,所以加上此参数
在宿主机的 /usr/local/project 目录创建cz目录,往里增加一个 hello.html 文件
http://192.168.10.11:8888/cz/hello.html
RabbitMQ 部署
拉取 RabbitMQ 镜像
docker pull rabbitmq:management
注意:如果docker pull rabbitmq 后面不带management,启动rabbitmq后是无法打开管理界面的,所以我们要下载带management插件的rabbitmq.
创建 RabbitMQ 容器
方式一
创建镜像(默认用户名密码),远程连接端口5672,管理系统访问端口15672,默认用户名: guest ,密码: guest
docker run -id --name=cz_rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:management
方式二
启动镜像(设置用户名密码)
docker run -id --name=cz_rabbitmq -e RABBITMQ_DEFAULT_USER=username -e RABBITMQ_DEFAULT_PASS=password -p 5672:5672 -p 15672:15672 rabbitmq:management
访问Rabbit管理界面
访问管理界面的地址是 http://[宿主机IP]:15672 , 如:http://192.168.10.11:15672,默认 guest 用户,密码 guest
zk部署
docker search zookeeper
docker run -d -p 2181:2181 --name=cz_zookeeper --privileged zookeeper
docker search zookeeper
docker run -d -p 2181:2181 --name=cz_zookeeper --privileged zookeeper
nacos部署
docker pull nacos/nacos-server
docker run --env MODE=standalone --name nacos -d -p 8848:8848 nacos/nacos-server
# 登录密码默认nacos/nacos
# standalone代表着单机模式运行,非集群模式
docker run --env MODE=standalone --name nacos -d -p 8848:8848 nacos/nacos-server
# 登录密码默认nacos/nacos
# standalone代表着单机模式运行,非集群模式
es\kibana部署
docker pull elasticsearch:7.2.0
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -d elasticsearch:7.2.0
curl http://localhost:9200
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -d elasticsearch:7.2.0
curl http://localhost:9200
docker pull kibana:7.2.0
docker run --name kibana --link=elasticsearch:test -p 5601:5601 -d kibana:7.2.0
docker start kibana
docker run --name kibana --link=elasticsearch:test -p 5601:5601 -d kibana:7.2.0
docker start kibana
docker run --name kibana --link=elasticsearch:test -p 5601:5601 -d kibana:7.2.0
docker start kibana
docker run --name kibana --link=elasticsearch:test -p 5601:5601 -d kibana:7.2.0
docker start kibana
备份与迁移
容器保存为镜像
docker commit [-m="提交的描述信息"] [-a="创建者"] 容器名称|容器ID 生成的镜像名[:标签名]
查看是否有挂载目录
docker inspect --format='{{.Mounts}}' 容器名
无目录挂载-容器保存为镜像
docker commit mycentos2 mycentos_new:1.1
mycentos2 是容器名称
mycentos_new 是新的镜像名称
mycentos_new 是新的镜像名称
创建并登录容器
docker run -it --name=mxg_mycentos_new mycentos_new:1.1 /bin/bash
有目录挂载情况(难点)
问题: 如果Docker对容器挂载了数据目录, 在将容器保存为镜像时,数据不会被保存到镜像中。
原因:因为宿主机与容器做了路径映射,再commit一个新的镜像时,该路径下的所有数据都会被抛弃,不会
被保存到新镜像中。可通过 docker inspect --format='{{.Mounts}}' 镜像名 查看是否有目录挂载.
解决:目录挂载方法。先把在宿主机的数据备份在某个目录下,在 docker run 的时候使用-v参数将宿主机上的
目录映射到容器里的目标路径中(tomcat是 /usr/local/tomcat/webapps ,mysql是 var/lib/mysql )
拷贝方法。先把在宿主机的数据备份在某个目录下,通过拷贝的方法 docker cp 将备份的数据复制进容
器里的目标路径中(tomcat是 /usr/local/tomcat/webapps ,mysql是 var/lib/mysql )
原因:因为宿主机与容器做了路径映射,再commit一个新的镜像时,该路径下的所有数据都会被抛弃,不会
被保存到新镜像中。可通过 docker inspect --format='{{.Mounts}}' 镜像名 查看是否有目录挂载.
解决:目录挂载方法。先把在宿主机的数据备份在某个目录下,在 docker run 的时候使用-v参数将宿主机上的
目录映射到容器里的目标路径中(tomcat是 /usr/local/tomcat/webapps ,mysql是 var/lib/mysql )
拷贝方法。先把在宿主机的数据备份在某个目录下,通过拷贝的方法 docker cp 将备份的数据复制进容
器里的目标路径中(tomcat是 /usr/local/tomcat/webapps ,mysql是 var/lib/mysql )
备份镜像
docker save -o mycentos.tar mycentos_new:1.1
-o 指定输出到的文件
执行后,运行 ls 命令即可看到打成的tar包, 因为有463M所以打包要一会
执行后,运行 ls 命令即可看到打成的tar包, 因为有463M所以打包要一会
镜像恢复与迁移
删除掉 mycentos_new:1.1 镜像(注意先停止并删除所有引用了的容器)
docker rmi mycentos_new:1.1
行恢复 mycentos_new:1.1 镜像
docker load -i mycentos.tar
Dockerfile语法
用于构建一个新的Docker镜像的脚本文件,是由一系列命令和参数构成的脚本
构建新的镜像步骤
1. 编写 Dockerfile 文件
2. 通过 docker build 命令生成新的镜像
3. 通过 docker run 命令运行
2. 通过 docker build 命令生成新的镜像
3. 通过 docker run 命令运行
语法规则
1. 每条指令的保留字都必须为大写字母且后面至少要有一个参数
2. 执行顺序按从上往下执行。
3. # 用于注释
4. 每条指令都会创建一个新的镜像层,并对镜像进行提交
2. 执行顺序按从上往下执行。
3. # 用于注释
4. 每条指令都会创建一个新的镜像层,并对镜像进行提交
执行流程
1. Docker 从基础镜像运行一个容器
2. 执行每一条指定并对容器作出修改
3. 执行类似 docker commit 的操作提交一个新的镜像层
4. docker 再基于刚提交的镜像运行一个新容器
5. 执行 Dockerfile 中的下一条指令直到所有指令都执行完成
2. 执行每一条指定并对容器作出修改
3. 执行类似 docker commit 的操作提交一个新的镜像层
4. docker 再基于刚提交的镜像运行一个新容器
5. 执行 Dockerfile 中的下一条指令直到所有指令都执行完成
常用指令
0 条评论
下一页