1.服务命令
sudo systemctl stop docker:停止服务
sudo systemctl start docker: 启动docker服务
2.镜像命令
查询本地
docker images :查看所有的镜像
- -a:列出本地所有的镜像(含中间映像层)
- -q:只显示镜像ID
- –digests:显示镜像的摘要信息
- –no-trunc:显示完整的镜像信息
删除本地
docker rmi -f 镜像 ID:删除单个
docker rmi -f 镜像名1:TAG 镜像名2:TAG: 删除多个
docker rmi -f $(docker images -qa) :删除全部
-f :强制删除;
查询远程
docker search xxx :查询xxx 仓库所有镜像
docker search -s 30 xxx : -e 查询点赞数量大于30的xxx所有镜像
如下图
- –no-trunc:显示完整的镜像描述
- -s:列出收藏数不小于指定值的镜像
- –automated:只列出 automated build 类型的镜像
3.容器命令
启动容器
docker start 容器 ID 或者容器名
查看运行容器
docker ps
- -a :列出当前所有正在运行的容器+历史上运行过的
- -l :显示最近创建的容器
- -n:显示最近n个创建的容器
- -q :静默模式,只显示容器编号
- –no-trunc :不截断输出。
查看容器内部细节
docker inspect 容器id
运行容器
docker run
- –name=“容器新名字”: 为容器指定一个名称
- -d: 后台运行容器,并返回容器 ID,也即启动守护式容器
- -i:以交互模式运行容器,通常与 -t 同时使用
- -t:为容器重新分配一个伪输入终端,通常与 -i 同时使用
- -P(大写): 随机端口映射
- -p: 指定端口映射,有以下四种格式
ip:hostPort:containerPort
ip::containerPort
hostPort:containerPort
containerPort
关于-d 的说明
1.使用镜像 centos:latest 以后台模式启动一个容器 docker run -d centos
2.然后 docker ps -a 进行查看, 会发现容器已经自动退出
原因: Docker 容器后台运行,就必须有一个前台进程 ,如果不是那些一直挂起的命令(比如运行top,tail),就是会自动退出的。 这个是 Docker 的机制问题,比如你的 web 容器,我们以 nginx 为例,正常情况下,我们配置启动服务只需要启动响应的 service 即可。例如service nginx start,但是这样做,nginx 为后台进程模式运行,就导致Docker 前台没有运行的应用,这样的容器后台启动后,会立即自杀因为他觉得他没事可做了,但是redis这种一直都是有后台所以没问题。 所以,最佳的解决方案是,如果你是centos这种前台等待用户操作的,就需要用 -it bin/bash 等待输入,不能以后台运行,如果你是redis,mysql这种后台服务,那么你就需要后台运行,因为前台运行的话,一但界面关闭就停止服务了
删除容器
docker rm 容器id
-f :强制删除;
重启容器
docker rm 容器 ID:删除一个容器
docker rm -f $(docker ps -a -q) :一次性删除全部容器
docker ps -a -q | xargs docker rm:一次性删除全部容器
停止容器
docker stop 容器 ID 或者容器名
强制停止容器
docker kill 容器ID 或者容器名
退出容器
首次run 进去的时候
- exite:容器停止退出
- Ctrl + P + Q:容器不停止退出
非首次run进去,而是通过docker exec -it 容器id /bin/bash 进去不影响
进入容器
docker exec -it 容器id /bin/bash
docker attach 容器id /bin/bash (建议不要使用,会停止容器)
二者区别:
查看容器日志
docker logs -f -t --tail 容器 ID
- -t 是加入时间戳
- -f 跟随最新的日志打印
- –tail 数字显示最后多少条
文件复制
docker cp :用于容器与主机之间的数据拷贝。
docker cp 111 容器名称/容器id :/usr/ (冒号不要丢,代表容器)
拷贝宿主111文件到容器内部/usr文件夹下(注意要带上:号进行标示是容器文件夹,如果容器名称中含有冒号结尾又加上冒号,二个冒号会冲突,建议采用容器id)
4.安装mysql5.6
1.拉取镜像mysql指定版本
docker pull mysql:5.6
2.启动容器mysql
docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456! -d mysql:5.6
3.进入容器 (后台式)
docker exec -it 容器id /bin/bash
操作流程如下图,建议采用后台启动式操作,这样不会停止容器
5.docker 开放端口的坑
docker 运行容器会绕过防火墙规则,开放外网端口,导致防火墙设置失败,最简单的解决方案,指定本地映射访问,不指定访问主机则为 0.0.0.0
例如 -p 127.0.0.1:8080:8080