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 # 先关闭后删除卷