docker 常用命令
1.新建容器
docker run +IMAGE_ID +cmd 运行一个image,即开启一个container,且输入命令cmd
在run 命令后面可以加上一些参数,常用的有:
-t
: 让Docker分配一个伪终端并绑定到容器的标准输入上
-i : 则让容器的标准输入保持打开
-v 宿主和容器的文件夹映射,如 :-v /home/zhangsan:/home/lisi (将宿主的“/user/zhangsan ”文件夹 映射 到 "/user/lisi",之后两 个文件夹的文件会保持同步更改)
-p 宿主和容器的端口映射,如:如 :-p 8080:8181 (将宿主的“8080”端口 映射 到 容器的 “8181” 端口)
-d 以守护进程形式运行 (加上-d之后,后台运行)
完整命令案例:
1)交互形式
docker run -p 8080:8080 -p 4848:4848 -v /home/zhangsan/:/home/zhangsan/ -ti IMAGE_ID /bin/bash
2)守护进程
docker run -d -p 8080:8080 -p 4848:4848 -v /home/zhangsan/:/home/zhangsan/ IMAGE_ID sh.sh
常见错误
docker run -p 8080:8080 -p 4848:4848 -v /home/zhangsan/:/home/zhangsan/ -ti IMAGE_ID /bin/bash
Error response from daemon: Cannot start container 8b9fd93229ea37428dffae7e031fc061b9cb59d687227f2a3b34ed5b5cbf7162: failed to create endpoint admiring_ardinghelli on network bridge: Bind for 0.0.0.0:8080 failed: port is already allocated
有其他容器正在运行,并且占用了8080 端口
解决办法
docker ps -a 查看所有容器,找到相应容器
docker stop CONTAINER_ID
2.容器相关:
docker ps
查看正在运行容器
docker ps -a
查看所有容器,包括stop的
docker exec -ti container_id +cmd
进入一个正在运行的容器
docker stop container_name
停止一个容器
docker start container_name
开启一个容器
docker rm container_name
删除一个容器
3.镜像相关:
docker images
查看所有镜像
docker rmi image_id
删除一个镜像
docker rmi $(docker images -q)
删除所有镜像
4.保存与导出:
我们run了一个image,在其中做了改动,若我们退出容器,不做保存,下次在run同一个image时,改动都不存在了。
所以一定要记得保存
1)docker commit
将container保存成image
docker commit -m "commit message" -a "author" container_id image_name:version
docker commit -m "commit message" -a "author" container_id image_name:version
container_id为你要commit的container的id,即做了修改的那个container ;作者/名字:tag 三者共同组成一个image
保存到本地:
docker save image_id> /home/zhangsan/test_v1.tar
或:docker save -o /home/zhangsan/test_v1.tar image_id
从本地加载:
docker load < /home/zhangsan/test_v1.tar
保存到本地:
docker save image_id> /home/zhangsan/test_v1.tar
或:docker save -o /home/zhangsan/test_v1.tar image_id
从本地加载:
docker load < /home/zhangsan/test_v1.tar