上一篇文章大家应该了解和搭建了Docker环境,Docker 是一个开源的应用容器引擎。
直通车:
【云原生 • Docker】初识Docker和Docker的坏境搭建(保姆级教学)
作为一名开发或者运维人员,掌握Dcoker的命令是必不可少的。Docker命令可以让我们更好的利用他提高我们的工作效率。
以下是我个人对Docker学习和使用的一步步总结,通过一个个示例来加深各位对Docker相关命令的理解以及记忆
启动 Docker
systemctl start docker
停止 Docker
systemctl stop docker
重启 Docker
systemctl restart docker
查看 Docker 状态
systemctl status docker
开机自动启动Dockers
systemctl enable docker
查看 Docker 概要信息
docker info
docker -v
查看 Docker 帮助文档, 忘记了某些命令便可使用此进行查看与回顾
docker --help
如忘记拉取命令,可以如下使用
docker pull --help
这些镜像都存储于 /var/lib/docker 目录下
#查询本地所有镜像
docker images
#查询镜像名为java的镜像列表
docker images java
列别 | 说明 |
---|---|
repository | 镜像名称 |
tag | 标签 |
image id | 镜像ID |
created | 镜像的创建日期 |
size | 镜像的大小 |
搜索镜像
# 搜索镜像
docker search 镜像名
#搜索用户评价大于400的java镜像
docker search -f=stars=400 java
列别 | 说明 |
---|---|
name | 仓库名称 |
description | 镜像描述 |
stars | 用户评价,反映该镜像的受欢迎程度 |
official | 是否官方 |
automated | 该镜像是由 Docker Hub 自动构建流程创建的 |
不加tag(版本号) 即拉取docker仓库中 该镜像的最新版本latest 加:tag 则是拉取指定版本
docker pull 镜像名
docker pull 镜像名:tag
docker search mysql
docker pull java
出现报错
Using default tag: latest
Error response from daemon: manifest for java:latest not found: manifest unknown: manifest unknown
这里错误的意思是Docker需要我们指定下载镜像的版本号,我们可以去Docker官方镜像搜索
docker pull java:openjdk-7-jre-alpine
docker rmi 镜像ID
docker rmi $(docker images -q)
docker rmi -f 镜像ID
#保存镜像
docker save 镜像名/镜像ID -o 镜像保存在哪个位置与名字
#加载镜像
docker load -i 镜像保存文件位置
镜像做一个标签添加,从而行进区分
docker tag 源镜像名:TAG 想要生成新的镜像名:新的TAG
# 如果省略TAG 则会为镜像默认打上latest TAG
docker tag aaa bbb
docker run 镜像名
docker run 镜像名:Tag
运行后,出现tomcat 默认占用的8080 端口,说明该镜像已经是启动了 ,但是 咱好像鼠标没有回到咱服务器上了 ,这怎么办呢 ?
使用 Ctrl+C (注:此方式虽然可以退出容器,但此种命令操作方式却是错误的,详细缘由请见下文的容器命令)
#查看运行容器
docker ps
#查看所有容器
docker ps -a
#查看最后一次运行的容器
docker ps -l
#查看停止的容器
docker ps -f status=exited
docker run 镜像名
docker run 镜像名:Tag
-i 运行容器
-t 容器启动后自动进入其命令行
–name 为创建的容器命名
-v 表示目录映射关系,前者为宿主机目录,后者是映射到宿主机上的目录
-d 加了这个参数则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器)
-p 表示端口映射,前者为宿主机端口,后者是容器内的映射端口
常用创建容器的方式为交互式创建容器和守护式创建容器,如下:
#交互式创建容器
docker run -it --name=容器名称 镜像名称:标签 /bin/bash
#守护式创建容器
docker run -di --name=容器名称 镜像名称:标签
#登录守护式容器
docker exec -it 容器名称/ID /bin/bash
从容器内退出到自己服务器中,需注意两个退出命令的区别
#直接退出 未添加 -d(守护式容器) 时 执行此参数 容器会被关闭
exit
#优雅退出 --- 无论是否添加-d 参数 执行此命令容器都不会被关闭
Ctrl + p + q
创建一个tomca容器
docker run -id -p 8080:8080 --name=test17 tomcat1:test
# netstat是控制台命令,是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息
netstat -untlp
#启动容器
docker start容器名称/ID
#停止容器
docker stop 容器名称/ID
#重启容器
docker restart 容器名称/ID
#kill容器
docker kill 容器ID/容器名
#从容器内 拷出
docker cp 容器ID/名称:容器内路径 容器外路径
#从外部 拷贝文件到容器内
docker cp 容器外路径 容器ID/名称:容器内路径
docker logs --tail=要查看末尾多少行 默认all 容器ID
在创建容器时,我们可以将宿主机的目录与容器内的目录进行映射,这样就可以通过修改宿主机的目录文件从而直接影响容器了。
docker run -di -v 宿主机目录:容器目录 --name=容器名称 镜像名称:标签
-v命令可以多次使用,即一个容器可以同时挂载多个文件,当容器删除时,宿主机文件数据目录仍在,下次启动容器只要将数据目录指向宿主机数据所在位置即可恢复!
docker rename 容器ID/容器名 新容器名
docker commit -a="作者" -m="说明" 容器ID/容器名 镜像名:标签
# 查看容器 ip 以及相关的各种数据
docker inspect 容器名称/ID
# 查看容器 ip 地址并输出
docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称/ID
#删除一个容器
docker rm -f 容器名/容器ID
#删除多个容器 空格隔开要删除的容器名或容器ID
docker rm -f 容器名/容器ID 容器名/容器ID 容器名/容器ID
#删除全部容器
docker rm -f $(docker ps -aq)
#导出容器
docker export 容器ID > XXX.tar
#import 从tar包中的内容创建一个新的文件系统再导入为镜像
cat XXX.tar | docker import - 镜像名:标签
docker info | grep "Docker Root Dir"
du -hs /var/lib/docker/
docker system df
删除 无用的容器和 镜像
docker rm `docker ps -a | grep Exited | awk '{print $1}'`
docker rmi -f `docker images | grep '' | awk '{print $3}'`
如果看到了这里,docker基本上入门了;但前路还长,让我们再继续深入,记得点个关注哟!