docker 命令(总结和图解)

docker 命令

docker 命令图

  • Images镜像相关的命令

    docker images: 列出所有镜像
    docker rmi: 删除镜像
    docker tag: 给源镜像创建一个新的标签,变成新的镜像
    docker history: 显示镜像的历史

  • Container容器相关的命令

    docker start: 启动一个或者多个容器
    docker kill/stop: 杀死/停止一个或者多个容器
    docker pause/unpause: 暂停/启动 一个或者多个容器
    docker rm: 移除一个或者多个容器
    docker ps: 列出所有容器

  • 镜像和容器之间转换的命令

    docker commit: 把容器的改变 提交创建一个新的镜像
    docker create: 创建新容器,但并不启动(注意与docker run 的区分)需要手动启动。start\stop
    docker run: 创建并启动容器

docker的主要命令图解:
在这里插入图片描述

docker 命令列表

命令作用
attach绑定到运行中容器的 标准输入, 输出,以及错误流(这样似乎也能进入容器内容,但是一定小心,他们操作的就是控制台,控制台的退出命令会生效,比如redis,nginx…
build从一个 Dockerfile 文件构建镜像
commit把容器的改变 提交创建一个新的镜像
cp容器和本地文件系统间 复制 文件/文件夹
create创建新容器,但并不启动(注意与docker run 的区分)需要手动启动。start\stop
diff检查容器里文件系统结构的更改【A:添加文件或目录 D:文件或者目录删除 C:文件或者目录更改】
events获取服务器的实时事件
exec在运行时的容器内运行命令
export导出容器的文件系统为一个tar文件。commit是直接提交成镜像,export是导出成文件方便传输
history显示镜像的历史
images列出所有镜像
import导入tar的内容创建一个镜像,再导入进来的镜像直接启动不了容器。/docker-entrypoint.sh nginx -g 'daemon of;'docker ps --no-trunc 看下之前的完整启动命令再用他
info显示系统信息
inspect获取docker对象的底层信息
kill杀死一个或者多个容器
load从 tar 文件加载镜像
login登录Docker registry
logout退出Docker registry
logs获取容器日志;容器以前在前台控制台能输出的所有内容,都可以看到
pause暂停一个或者多个容器
port列出容器的端口映射
ps列出所有容器
pull从registry下载一个image 或者repository
push给registry推送一个image或者repository
rename重命名一个容器
restart重启一个或者多个容器
rm移除一个或者多个容器
rmi移除一个或者多个镜像
run创建并启动容器
save把一个或者多个镜像保存为tar文件
search去docker hub寻找镜像
start启动一个或者多个容器
stats显示容器资源的实时使用状态
stop停止一个或者多个容器
tag给源镜像创建一个新的标签,变成新的镜像
top显示正在运行容器的进程
unpausepause的反操作
update更新一个或者多个docker容器配置
versionShow the Docker version information
container管理容器
image管理镜像
network管理网络
volume管理卷

docker 命令示例

docker pull redis : 等价docker pull redis:latest, 下载镜像
docker rmi -f: 删除镜像
docker images -aq: 删除全部镜像
docker image prune #移除游离镜像 dangling:游离镜像(没有镜像名字的)
docker tag 原镜像:标签 新镜像名:标签 #重命名

docker create [OPTIONS] IMAGE [COMMAND] [ARG…]
docker create [设置项] 镜像名 [启动] [启动参数…]
docker create redis: 按照redis:latest镜像启动一个容器

docker kill是强制kill -9(直接拔电源);
docker stop可以允许优雅停机(当前正在运行中的程序处理完所有事情后再停止)

docker create --name myredis -p 6379(主机的端口):6379(容器的端口) redis -p port1:port2

docker run --name myredis2 -p 6379:6379 -p 8888:6379 redis :默认是前台启动的,一般加上-d 让他后台悄悄启动, 虚拟机的很多端口绑定容器的一个端口是允许的
docker run -d == docker create + docker start

删除docker所有运行的容器

docker rm -f $(docker ps -aq)

docker exec -it

进入运行中的容器内部

exec: Run a command in a running container(在运行的容器中运行命令)
exec -i: --interactive(相互作用的). Keep STDIN open even if not attached(即使没有连接,也要保持STDIN打开)
exec -t: --tty Allocate a pseudo-TTY(分配一个伪终端设备)

如下:
docker exec -it mynginx4 /bin/bash: 0用户,以特权方式进入容器

docker run 部署容器

常用关键参数 OPTIONS 说明:

-d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-P: 随机端口映射,容器内部端口随机映射到主机的端口
-p:指定端口映射,格式为:主机(宿主)端口:容器端口
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用
--name=“nginx-lb”:为容器指定一个名称;
--dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
--dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
-h “mars”: 指定容器的hostname;
-e username=“ritchie”: 设置环境变量;
--env-file=[]: 从指定文件读入环境变量;
--cpuset=“0-2” or --cpuset=“0,1,2”: 绑定容器到指定CPU运行;
-m :设置容器使用内存最大值;
--net=“bridge”: 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
--link=[]: 添加链接到另一个容器;
--expose=[]: 开放一个端口或一组端口;
--restart , 指定重启策略,可以写–restart=awlays 总是故障重启
--volume , -v: 绑定一个卷。一般格式 主机文件或文件夹:虚拟机文件或文件夹

常见部署案例:

部署Nginx

#注意 外部的/nginx/conf下面的内容必须存在,否则挂载会覆盖
docker run --name nginx-app \
-v /app/nginx/html:/usr/share/nginx/html:ro \
-v /app/nginx/conf:/etc/nginx
-d nginx

部署MySQL

# 5.7版本
docker run -p 3306:3306 --name mysql57-app \
-v /app/mysql/log:/var/log/mysql \
-v /app/mysql/data:/var/lib/mysql \
-v /app/mysql/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7

#8.x版本,引入了 secure-file-priv 机制,磁盘挂载将没有权限读写data数据,
# 所以需要将权限透传,或者chmod -R 777 /app/mysql/data

# --privileged 特权容器,容器内使用真正的root用户
docker run -p 3306:3306 --name mysql8-app \
-v /app/mysql/conf:/etc/mysql/conf.d \
-v /app/mysql/log:/var/log/mysql \
-v /app/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
--privileged \ 
-d mysql

部署Redis

# 提前准备好redis.conf文件,创建好相应的文件夹。如:
port 6379
appendonly yes
#更多配置参照 https://raw.githubusercontent.com/redis/redis/6.0/redis.conf
docker run -p 6379:6379 --name redis \
-v /app/redis/redis.conf:/etc/redis/redis.conf \
-v /app/redis/data:/data \
-d redis:6.2.1-alpine3.13 \
redis-server /etc/redis/redis.conf --appendonly yes

部署ElasticSearch

#准备文件和文件夹,并chmod -R 777 xxx
#配置文件内容,参照
https://www.elastic.co/guide/en/elasticsearch/reference/7.5/node.name.html 搜索相
关配置
# 考虑为什么挂载使用esconfig ...
docker run --name=elasticsearch -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms300m -Xmx300m" \
-v /app/es/data:/usr/share/elasticsearch/data \
-v /app/es/plugins:/usr/shrae/elasticsearch/plugins \
-v esconfig:/usr/share/elasticsearch/config \
-d elasticsearch:7.12.0

重启策略

  • no,默认策略,在容器退出时不重启容器
  • on-failure,在容器非正常退出时(退出状态非0),才会重启容器
  • on-failure:3,在容器非正常退出时重启容器,最多重启3次
  • always,在容器退出时总是重启容器
  • unless-stopped,在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值