1.查看镜像
docker images
或docker image ls
列出所有的镜像
可选参数:
可以同时使用:
docker image ls -aq
2.搜索镜像
docker search [镜像名]
搜索镜像,也可以去docker hub上搜索镜像
可选参数:
docker search [镜像名] --filter=stars=8888
或docker search [镜像名] -f=stars=8888
搜索stars数目大于8888的镜像3.下载镜像
docker pull [镜像名]:[tag]
例:
docker pull mysql:5.7
下载5.7版本的mysql镜像
如果不指定tag,则默认下载最新版(latest)的
蓝框中是该镜像在仓库中的真实地址,也可以使用此地址代替镜像名进行下载。
可以看到红框中分为了很多个文件下载,因为不同版本的镜像很多内容都是相同的,所以下载不同版本的镜像不需要下载整个镜像,只下载不同的部分就行了。这里再下载一下最新版的mysql试试:
这里看到重复的文件就不会再下载了。
4.删除镜像
docker rmi [镜像名]
docker rmi [镜像id]
可选参数: -f :强制删除
例:
docker rmi -f [镜像id] [镜像id] ...
docker rmi -f [镜像名] [镜像名] ...
docker rmi -f $(docker image ls -aq) # 删除全部容器
5.提交镜像
docker commit -a="wzh" -m="add apps" 66a13c3c63d8 new_tomcat:1.0
docker image ls
已经可以看到了:
这样就生成了一个新的镜像。
1.根据镜像新建容器并启动
docker run [镜像名]
可选参数:
--name # 启动的容器名字
-d # 后台方式运行
-it # 使用交互方式运行,进入容器查看内容
-p # 指定容器的端口 -p 8080 或 -p 8080:8080
-p ip:主机端口:容器端口
-p 主机端口:容器端口(常用)
-p 容器端口
-P # 使用随机端口
例如:
docker run -it centos /bin/bash # 进入容器内的centos
2.退出容器
exit # 停止容器并退出容器
Ctrl + P + Q # 退出容器但不停止容器
3.列出容器
docker ps # 列出正在运行的容器
docker ps -a # 列出运行过的容器
docker ps -n=个数 # 列出最近创建的几个容器
docker ps -q # 只显示容器的id
docker ps -aq # 列出所有容器的id
4.删除容器
docker rm [容器id] # 删除容器;运行中的容器不能删除,需要加-f强制删除
docker rm -f $(docker ps -aq) # 强制删除所有容器
docker ps -aq |xargs docker rm # 删除所有的容器
5.启动、重启、停止容器
docker start [容器id] # 启动一个容器
docker restart [容器id] # 重启一个容器
docker stop [容器id] # 停止一个容器
docker kill [容器id] # 强制停止一个容器
1.后台启动容器
docker run -d centos # 通过此种方式启动centos后,发现centos停止运行了。
# 常见的坑:
# docker容器要使用后台运行,必须要有一个前台进程。docker发现没有前台进程,会自动停止
# 容器启动后若自身未提供服务会立即停止
2.查看日志信息
docker logs -tf --tail 20 [容器id]
-tf # 显示日志
--tail 20 # 显示最近的20条日志
3.查看容器中的进程信息
docker top [容器id]
4.查看容器/镜像的元数据
docker inspect [容器id/镜像id]
5.进入正在运行的容器
# 容器一般以后台方式运行,需要进入容器修改配置等
docker exec -it [容器id] bin/bash # 进入容器后开启新终端
docker attach [容器id] # 进入正在运行的bash终端
6.从容器中拷贝文件到宿主机中(容器不一定要运行中)
docker cp [容器id][源路径] [目的路径]
docker cp 01234567:/home/xxx.txt /home
7.查看docker的容器运行状态
docker stats
8.查看所有的卷的情况
docker volume ls
9.查看docker镜像的构建历史过程
docker history [镜像名或镜像id]
docker history mycentos:0.1
10.推送自己的镜像到自己的docker hub
前提要有docker hub账号。
docker login -u username -p password
docker push [镜像名]:[Tag]
docker search nginx # 搜索镜像
docker pull nginx # 下载镜像
docker image ls # 查看镜像,已经有nginx了
docker run -d --name nginx1 -p 3344:80 nginx # 通过nginx镜像启动一个名为nginx1的容器,将宿主机的3344端口映射到容器的80端口
docker ps # 此时能查到容器已经运行
curl 0.0.0.0:3344 # 通过curl工具发起请求,目的地址为本机,端口号3344,可以获取到返回值
curl localhost:3344 # 通过curl工具发起请求,目的地址为本机,端口号3344,可以获取到返回值
我的腾讯云服务器开放了3344端口,所以可以直接从公网上访问到容器内的nginx:
现在进入容器并使用命令行交互:
docker exec -it nginx1 /bin/bash
停止容器:
docker stop 6d65dd98f7df
docker run -it --rm tomcat:9.0 # 以测试模式启动tomcat,用完stop后容器自动删除
启动成功
通过外网3355端口已经可以访问tomcat:
docker exec -it tomcat1 /bin/bash # 进入容器
webapps目录中没有内容,因为阿里云镜像源使用最小镜像,没必要的文件都删掉了。对于tomcat,可以进webapps.dist目录将所有文件拷贝到webapps中,这样访问3355端口可以正常访问到tomcat的欢迎页面: