# 获取Docker镜像的命令 docker pull
命令格式如下:
- 选项可以通过 docker pull –help 查看
- Docker Registry地址:<域名/IP>[:端口号], 默认地址是Docker Hub
- 仓库名:仓库名是两段式名称,既 <用户名>/<软件名> 。对于 Docker Hub,如果不给出用户名,则默认为 library ,也就是官方镜像。
例如:下载mysql的镜像
说明:下载过程中可以看到我们之前提及的分层存储的概念,镜像是由多层存储所构成。下载也是一层层的去下载,并非单一文件。下载过程中给出了每一层的 ID 的 前 12位。并且下载结束后,给出该镜像完整的sha256 的摘要,以确保下载一致性。
# 列出本地镜像 docker images
# 删除镜像 docker rmi
- 删除镜像之前,先查看是否有容器在运行,若在运行,先 docker stop CONNTAINER_ID
- 再查看停止的容器 docker ps -a
- 清除所有已经停止的容器 docker rm $(docker ps -qa)
- 删除对应的镜像: docker rmi IMAGE_ID
# 启动容器 docker run
普通启动,容器执行完成之后就退出
以交互式方式进入容器,添加 -t 创建终端,-i 交互模式
若不添加-d参数,退出/bin/bash之后,容器也就退出了;
docker run -d 守护状态运行
这样启动之后,退出/bin/bash之后,容器仍然运行。docker run -d实现dettach的作用,即对于你docker run的前台进程,该进程不对容器进行stdin,stdout,stderr的attach。
# 查看容器:docker ps
- 查看运行的容器: docker ps
- 查看所有的容器: docker ps -a
- 只显示容器的id: docker ps -q 或者 docker ps -qa
常用docker rm $(docker ps -qa)删除已经停止的容器
进入容器,docker exec | docker attach docker exec 进入命令,该命令较常用
通过CONTAINER_ID进入容器
通过CONTAINER_NAME进入容器,该name就是启动是–name的值
docker attach [CONTAINER_ID | NAMES]
注意:使用 attach 命令有时候并不方便。当多个窗口同时 attach 到同一个容器的时候,所有窗口都会同步显示。当某个窗口因命令阻塞时,其他窗口也无法执行操作了。
# 容器的启动、停止和重启: docker start | docker stop | docker restart
# docker rm 删除处于终止状态的容器
清理容器
清理所有处于终止状态的容器
# Docker常用操作
# 1 获取容器日志: docker logs CONTAINER_ID
获取对应容器的日志,容器的CONTAINER_ID可以通过docker ps获得
# 2 文件拷贝docker cp
拷贝docker中的文件到宿主机,需要注意的是:不管容器有没有启动,拷贝命令都会生效。
拷贝文件到宿主机
拷贝文件到容器
# 3 docker端口映射【启动容器时添加 -p参数】
- 宿主机IP和端口:ip:hostPort
- 容器端口:containerPort
# 4 docker 映射宿主机目录到容器【启动容器时添加 -v参数】
-v 宿主机目录:容器内目录
# 5 docker 设置网络类型【启动容器时添加 –net参数】
docker的网络类型总共有5种网络类型,默认的类型是桥接模式,若希望使用其他网络模式,需要使用 –net切换网络模式。
- none模式,容器不需要和外界通信时使用;
- host模式,和宿主机共享一个网络,因此获得的IP和宿主机在同一个网段;
- bridge模式
- container模式
- user-defined模式
# 6 docker容器名称设置 【启动容器时添加 –name参数】
–name指定启动容器的名称
# 综合例子
# 1 启动容器
- 映射文件目录:-v /home/docker/code:/home/ocs90/src
- 使容器内支持GDB调试:–cap-add=SYS_PTRACE –security-opt seccomp=unconfined
- 指定网络模式为host:–net host
- 指定容器名称为:–name “hunter_dev”
- 以交互模式进入容器:-it
- 容器以台运行模式启动:-d
# 2 进入容器
使用exec进入容器 使用容器名称hunter_dev而不是id进入容器
