Docker常用操作命令

1. 拉取镜像 

docker pull 镜像名(:标签)  # 从 docker.io/library 中拉取镜像, 不指定tag标签默认拉取最新版本

Docker 拉取镜像时, 如果镜像更新且本地已有基础镜像(Base Image), 每次只拉取增量部分, 不会全部都拉取

 



2. 推送镜像

docker push 镜像名:标签
docker push a386303138/alpine:v3.14.1

Docker 推送镜像时, 如果以基础镜像(Base Image)进行更改的, 每次只推送增量部分, 基础镜像不会推送到仓库

 



3. 查询镜像

docker images / docker image ls  # 查询已有镜像

 



4. 修改镜像 Tag

docker tag 镜像ID 镜像名称:标签
docker tag 镜像ID a386303138/alpine:v3.14.1

 



5. 搜索镜像

docker search 镜像名

 



6. 查询容器

docker ps # 查询正在运行的容器
docker ps -a # 查询全部容器

 



7. 运行镜像

docker run -itd --rm --name 容器名 镜像名:标签 COMMAND
-i :表示启动-一个可交互的容器, 并持续打开标准输入
-t :表示使用终端关联到容器的标准输入输出上
-d :表示将容器放置后台运行
--rm :退出后即删除容器
--name :表示定义容器唯一名称
IMAGE :表示要运行的镜像
COMMAND :表示启动容器时要运行的命令

docker run -itd --name a386303138/alpine:latest a386303138/alpine:latest /bin/bash

 



8. 进入容器

docker exec -it 容器名 COMMAND
exit : 退出容器

 



9. 启动/停止/重启容器

docker start/stop/restart 容器名/容器ID

 



10. 删除容器

docker rm 容器名/容器ID # 需要先停止容器才能删除, 或者添加参数 -f 强制删除
docker rm `docker ps -a|grep -i exit|awk '{print $1}'` # 删除所有停止运行的容器

 



11. 提交容器

docker run -d --name myalpine a386303138/alpine:latest /bin/sleep 300s # 运行一个容器
docker exec -it myalpine /bin/sh # 进入容器
echo "hello world" >1.txt # 写入数据
exit # 退出

docker commit -p 容器名/容器ID 新镜像名:新标签 # -p 保存到执行命令这一时刻的内容 之后更新的不会报错
docker commit -p myalpine a386303138/alpine:v_1.txt

 

12. 导入/导出镜像

导出: docker save 镜像名:标签/镜像ID > xxx.tar
docker save a386303138/alpine:v_1.txt > alpine:v_1.txt.tar # 导入后带tag标签
docker save 021b3423115f > alpine:latest.tar # 导入后不带tag标签

导入: docker load -i xxx.tar 或 docker load < xxx.tar
docker load -i alpine\:v_1.txt.tar
或者
docker load < alpine\:v_1.txt.tar

tip: 如果你导出的时候名称用了: 记得导入的时候用\转义

 



13. 查看容器日志

docker logs 容器名/容器ID
-f : 持续追踪日志输出

 



14. 重命名容器

docker rename 旧容器名/容器ID 新容器名
docker rename myalpine hello_myalpine

 



15. 端口映射

docker run -p 主机端口:容器端口
docker run -d --name nginx -p 81:80 a386303138/nginx:v1.20.1

[root@docker ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
175d636b6fd4 a386303138/nginx:v1.20.1 "/docker-entrypoint.…" 46 seconds ago Up 43 seconds 0.0.0.0:81->80/tcp bold_davinci

 



16. 文件目录挂载

docker run -v 主机目录文件:容器目录文件 镜像名/镜像ID
docker run -d --name nginx -p 81:80 -v /html:/usr/share/nginx/html a386303138/nginx:v1.20.1
[root@docker ~]# netstat -lntup | grep 81
tcp6 0 0 :::81 :::* LISTEN 4540/docker-proxy

 

17. 传递环境变量

docker run -e 环境变量键值对 镜像名/镜像ID

[root@docker ~]# docker run --rm -e E_OPTS=123456 alpine:latest printenv # 可添加多个环境变量 -e 键值对...-e ...
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=ff9e2a15e781
E_OPTS=123456
HOME=/root

--env-file # 批量传递环境变量, 将环境变量写入一个文件中 /root/env.txt
docker run --rm --env-file /root/env.txt alpine:latest printenv

 

18. 容器内下载软件

docker exec -it nginx /bin/bash

apt-get update && apt-get install tree -y