docker 常用命令
1. 容器生命周期管理
1.1 操作 image
-create : 根据image创建一个新的容器
-run : 根据image创建一个新的容器并运行
1.2 操作 container
-start : 启动容器
-stop : 停止容器
-restart : 重启容器
-pause : 暂停容器中的所有进程
-unpause : 恢复容器中的所有进程
-exec : 在运行中的容器执行命令,也可以进入容器内部
1.3 run
从image创建容器并运行
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
-d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;运行后就直接进入容器内部
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;运行后就直接进入容器内部
--expose=[]: 开放一个端口或一组端口
-P: 大写P,随机端口映射,容器内部端口随机映射到主机的端口
-p: 指定端口映射,格式为:宿主机端口:容器端口。-p 8888:80 -p 8899:8080
-v,将宿主机的目录映射的容器对应的目录;-v /data:/home/data
-e env1="value1": 设置环境变量;-e env1="value1" -e env2="value2"
--env-file=[]: 从指定文件读入环境变量;
--name: 为容器指定一个名称,--name=xxx,不指定则随机生成一个字符串;
-h "hostname": 指定容器的hostname;
--cpus=2 容器可以使用两个cpu
--cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;
-m=2014m :设置容器使用内存最大值为1024MB;
--dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
--dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
--link=[]: 添加链接到另一个容器;
--privileged=true 开启特权模式
--net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
bridge: docker默认在宿主机创建一个docker0的bridge,所有的容器都连接docker0,再通过docker0和宿主机网络连接;
host:容器共享主机的network namaspace,直接访问宿主机的网络,此时容器使用的端口默认为宿主机的端口,比如容器内的应用监听了80端口,则映射到宿
主机上也是80端口,此时使用 -p -P 参数指定映射端口都是不生效的;
container:容器共享其他容器的网络配置信息,k8s中的pod中多个容器时就是这种情况;
none:容器有自己的network namespace,但是没有做任何网络配置
k8s下host时配置:hostNetwork: true
示例:
docker run 启动时参数放前面,镜像ID放在参数后面
创建并启动容器
docker run -d -it --net=host <image_name>:<tag> /bin/bash
以sleep命令创建启动容器
--entrypoint后面是命令,命令最后是命令参数
docker run -d -it --entrypoint="sleep" <image_name>:<tag> 600
1.4 exec
在运行的容器中执行命令
示例:docker exec -it <container_id> /bin/bash
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
-d :分离模式: 在后台运行
-i :即使没有附加也保持STDIN 打开
-t :分配一个伪终端
2. 容器操作
2.1 ps
列出容器
docker ps -a
2.2 logs
获取容器日志
docker logs [OPTIONS] CONTAINER
-f : 跟踪日志输出
-since :显示某个开始时间的所有日志
-t : 显示时间戳
--tail :仅列出最新N条容器日志
2.3 port
查询容器的端口映射情况
docker port [OPTIONS] CONTAINER [PRIVATE_PORT[/PROTO]]
2.4 export
将容器导出为tar文件,包含镜像的当前信息
export导出的镜像文件则用import加载,否则可能出现异常
将镜像保存为tar文件
docker export [OPTIONS] IMAGE
docker export -o xxx.tar <image_name>:<tag>
-o : 归档的文件名
2.5 cp
宿主机拷贝到容器
docker cp filepath <image_id>:filepath
容器拷贝到宿主机
docker cp <image_id>:filepath filepath
2.5 inspect
查看容器基本信息及GraphDriver,Mounts,Config,NetworkSettings相关信息。
docker inspect <container_id>
3. 镜像管理
3.1 images
列出本地镜像
docker images -a
3.2 build
创建镜像
以当前目录为基础目录,根据当前目录的 Dockerfile文件创建镜像,镜像名字为name,镜像tag为tag,后面的点(.)表示当前目录
docker build -t name:tag .
3.3 history
显示镜像的历史信息
docker history [OPTIONS] IMAGE
3.4 rmi
删除镜像
docker rmi [OPTIONS] IMAGE [IMAGE...]
docer rmi xxxx
3.5 save/load
将镜像导出为tar文件,包含镜像的历史信息
save导出的镜像文件则用load加载,否则可能出现异常
将镜像保存为tar文件
docker save [OPTIONS] IMAGE
docker save -o xxx.tar <image_name>:<tag>
-o : 归档的文件名
如果使用 image_id 导出镜像,导入的镜像没有 image_name 和 tag 信息
根据tar文件创建镜像
docker load [OPTIONS]
docker load -i xxx.tar
docker load < xxx.tar
3.6 import
根据tar文件创建镜像
docker import [OPTIONS]
docker import -i xxx.tar
docker import < xxx.tar
3.7 commit
更新镜像版本,根据某个容器打包为新的镜像版本推送到本地仓库
docker commit -m <message> -a <author> <container_id> <image_name>:<tag>
3.8 push
将本地镜像推送到远程仓库
镜像有目录信息时需要带上目录信息
docker push <image_name>:<tag>
3.8 tag
对本地镜像进行重名名
docker tag <image> <image_name>:<tag>
<image> 可以是 image_id,也可以是 image_name:tag,可以定位到具体镜像就行
<image_name> 重命名后的 imahe_name 可以包含目录信息
示例:docker tag ffelix/partition:v1.1 ffelix2/partition:1.2
如果文章对您有所帮助,可以点一下推荐