Docker是什么、基础以及Docker常用命令(1)

385 阅读3分钟

2021、尽管去做好了 在这里插入图片描述

Docker是什么?

Docker是一个开源的应用容器引擎,Docker可以非常简单的将线上和线下服务保持一致。防止开发测试过程中不一致问题。线上用户数据建议不要拷贝到本地呦(脱敏)。同时可以将开发人员数据打包发到任何环境中去,实现虚拟化。

Docker优势

  • 更高效的利用系统资源,相比于VM更加轻量级
  • 更快速启动时间
  • 一致的运行环境
  • 持续支付和部署
  • 轻松迁移,且维护拓展方便

Docker常用命令

Docker常见命令大致可以分为5类,分别为:容器生命周期管理命令、容器管理命令、本地镜像管理命令、镜像仓库管理命令、Docker信息查看命令、容器rootfs命令。接下来对Docker的常用命令进行列举和举例使用

容器生命周期管理命令
1. create创建容器
$ docker create --name redis-new redis:v1
$ docker ps -a
2. start/restart/stop 启动/重启/停止容器
$ docker start cee694de0a764bc  
$ docker ps
3. run 创建并运行容器
$ docker run -itd -p 6379:6379 redis:v1
4. exec 进入Docker伪终端
$docker exec -it ef5d1998b5c3 bash
# 退出直接使用Ctrl+D即可
5. rm 删除容器
# 删除所有容器
$docker rm $(docker ps -a -q) 
6. pause/unpause 暂停和启动容器内进程
$docker pause ef5d1998b5c3 # 停止对外提供服务
容器操作命令
1. ps 查看容器列表
2. inspect 查看容器详情,Go Template(不了解Go的同学可以学一学)
$docker inspect -f {{".Metadata"}} redis
3. top 查看容器进程情况
$ docker top ef5d1998b5c3
UID   PID  PPID   C  STIME   TTY  TIME   CMD
999   1096 1075   0  04:39   ?   00:00:02 redis-server *:6379
4. port 查看宿主机和容器之间的端口映射
$ docker port ef5d1998b5c3
6379/tcp -> 0.0.0.0:6379
5. wait 等待直到关闭
$ docker wait ef5d1998b5c3
# dos界面被阻塞,直到容器关闭恢复
6. logs 打印内部日志,或异常日志
7. event 打印容器事件日志
容器仓库操作
1. pull 远程仓库镜像拉取到本地
2. search 镜像搜索
docker search -f stars=10 redis --no-trunc=false # 显示全部信息,镜像名称、描述、星级
3. push 本地镜像推送到远程
4. login 登陆远程注册仓库
5. logout 登出远程注册仓库
本地镜像操作
1. images 查看本地镜像列表
$ docker images -q # 显示镜像id列表
2. tags 本地镜像打标签
$ docker tag redis:v1 redis:v2  
3. rmi 删除本地镜像
4. build 构建镜像,一般使用Dockerfile
5. save 将镜像保存成tar归档文件
6. load 加载镜像(save命令)
7. history 查看指定镜像创建历史
8. import 从归档文件中创建镜像
容器rootfs命令
1. cp 容器和主机之间的文件拷贝
$ docker cp Desktop/Bookmarks 10132240d6ca:/data
2. commit 提交修改之后的镜像
3. diff 查看镜像文件系统变化
Docker C/S详情信息
1. info 查看详情信息
2. version 查看版本号

网络管理

网络端口映射
# docker run -d -P --name redisdb redis

说明:高级网络配置暂时用不到后期填充。

数据卷

什么是数据卷?

数据卷是一个可供容器使用的特殊目录,它绕过文件系统,提供很多有用特性:

  • 数据卷在容器之间共享和重用
  • 对数据卷的修改立马生效
  • 数据卷更新,不会影响镜像
  • 卷会一直存在,直到没有容器使用
相关命令

宿主机文件夹共享到镜像

docker run -it -v /C/Users/lenovo/Desktop/editor.md-master:/webapp centos:latest

数据同步

# 1. 创建数据卷容器dbdata,并挂载数据卷到/dbdata
docker run -it  -v /dbdata --name dbdata centos:latest
# 2. 其他容器中使用volumes-from挂载dbdata容器中的数据卷
docker run -it --volumes-from dbdata --name db1 centos:latest
docker run -it --volumes-from dbdata --name db2 centos:latest
# 三个目录任何一方在该目录下写入,其他容器都可以看到

数据卷删除

docker stop 9589ad5ef688
docker rm -v db1  # 先关闭后删除卷

看相声也要敲代码社区说明