小知识,大挑战!本文正在参与“程序员必备小知识”创作活动
Docker Run 的过程发生了什么
底层原理 Docker 是怎么工作的
Docker 是一个 C/S (Client-Server)结构的系统, Docker 的守护进程运行在本机上, 通过 Socket 从客户端访问
DockerServer 接收到 Docker-Client 的指令, 就会执行这个命令
Docker 比 虚拟机 更少的 抽象层
* Docker 的常用命令
帮助命令
docker version
docker info
docker 命令 --help # 万能命令
* 镜像的基本命令
docker images
docker images <-a -f -q> # 查看本地主机所有镜像
# 解释
# REPOSITORY TAG IMAGE ID CREATED SIZE
# 镜像源 标签 id 创建时间 大小
Options:
-a, --all Show all images (default hides intermediate images)
--digests Show digests
-f, --filter filter Filter output based on conditions provided
--format string Pretty-print images using a Go template
--no-trunc Don't truncate output
-q, --quiet Only show image IDs 只显示 id
docker search
搜索镜像
docker search mysql --filter=STARS=3000
docker pull
下载镜像
docker pull mysql
docker pull mysql:tag
# 查看镜像的 tag
docker rmi
删除镜像
docker rmi -f ImageId 或 <镜像名称>
# 删除全部
docker rmi $(docker images -aq)
* 容器的基本命令
说明: 有了镜像才可以创建容器
新建容器并启动
docker run --help
docker run [可选参数] <image>
# 参数说明
--name="容器名字" # 用来区分容器
-d # 后台方式运行
-it # 使用交互方式运行, 进入容器查看内容
-p # 指定容器的端口 -p 8080:8080
-p 主机端口:容器端口
-p 容器端口(不往外面走了)
容器端口
-p ip:主机端口:容器端口
-P # 随机指定端口
# 启动并进入容器
docker run -it centos /bin/bash
exit # 从容器中退回主机(容器停止并退出)
# 不停止退出
Ctrl + P + Q
查看运行的容器
docker ps # 列出正在运行的容器
docker ps -a # 列出所有的容器(运行中或已停止)
-n # 显示最近创建的容器
docker ps -a -n=1
docker ps -aq # 列出容器的 id
删除容器
docker rm <容器 id>
docker rm $(docker ps -aq)
docker rm -f # 强制删除
docker ps -a -q|xargs docker rm # 删除所有的容器
启动和停止容器的操作
docker start <容器id>
docker restart <容器id>
docker stop <容器id>
docker kill <容器id> # 强制停止
docker pause <容器id> # 暂停容器
docker unpause <容器id> # 启动容器
* 常用的其他命令
查看 docker 容器日志
# docker logs --help
docker logs -f -t --tail <容器 id>
docker run -d centos /bin/sh -C "while true;do echo tongtong;sleep 1;done"
docker logs -f -t --tail <容器 id>
查看容器中的进程信息
docker top --help
docker top <容器 id>
查看镜像的元数据
docker inspect --help
进入当前正在运行的容器
# 我们通常容器都是使用后台方式运行的, 需要进入容器修改一些配置
# 命令
docker exec -it <容器 id> /bin/sh # 以交互的方式进入容器 </bin/sh> </bin/bash> 终端进入
# 方式 2
docker attach <容器id> # 进入正在运行的容器, 这时如果有日志还是会打印的 直接进入
# 该方式退出的话用 ctrl + p + q , 否则(使用 exit)会停止容器
从容器内拷贝文件到主机上
docker cp <容器id:容器内路径>
# 测试: 将容器中的文件拷贝到主机
docker run -itd centos # 启动容器
docker ps # 获取容器 id, 例如:a123456
docker exec a123456 /bin/bash # 或者 docker attach a123456 进入容器
cd root & touch test.js # 创建测试文件
exit # 或 ctrl + q + p 退出容器
docker cp a123456:/root/test.js /Users/xujiantong/Desktop # 拷贝容器内文件到主机
# 拷贝是一个手动过程, 未来我们使用 -v 卷的技术, 可以实现自动同步