Docker常用命令解析

Docker命令解析


前言:使用Docker命令前请先安装Docker,Linux环境

安装Docker:(https://blog.csdn.net/qq_45391983/article/details/128351307)

virtualBox安装Centos:https://blog.csdn.net/qq_45391983/article/details/128351640


一、Docker常用命令

搜索镜像
docker search redis
--limit: 列出N个镜像,默认25个
docker search --limit 10 redis
拉取镜像
docker pull redis
# :tag 镜像标签
# 不携带tag默认使用最新标签 :latest
docker pull redis:7.0.5
删除镜像
# -f: 强制删除
# imagesId: 镜像ID或者仓库源ID,替换掉
docker rmi -f imagesId
docker rmi  b2b4b3 dy3b523j
查看镜像
docker images
# -q 只显示镜像ID
docker images -q
# -a 显示所有镜像(包括历史)
docker images -a

批量删除多个镜像
docker rmi -f  $(docker images -qa)
查看Docker数据卷空间
docker system df
创建容器
# imagesId: 镜像ID
docker run imagesId

# -p: 指定端口映射
# -p: 6379:6379 宿主机6379端口 映射 镜像(redis)内部端口6379
docker run redis -p 6379:6379

# -P: 随机端口映射
docker run redis -P

# -name=: 给容器命名
docker run redis --name=redis_newname

# -d: 后台运行容器
docker run -d redis --name=redis_newname


————————————————————————————————————————————————————————
# -i: 以交互模式运行容器,通常与 -t 同时使用
# -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用
# -it: 启动交互式容器(前台有伪终端,等待交互)
docker run -it ubuntu 

# /bin/bash: 交互式 Shell
# bash: 同理
docker run -it ubuntu  /bin/bash
查看容器
docker ps
# -a: 所有容器
docker ps -a
# -l: 显示最近创建的容器
docker ps -l
# -n: 显示最近n个创建的容器
docker ps -n 1
# -q: 显示容器编号
docker ps -q
退出容器
exit
ctrl+p+q
启动已停止的容器
# redis:容器名字,也可以用容器ID
docker start redis
停止容器
docker stop redis
强制停止容器
docker kill redis
删除容器
# 删除已经停止运行的容器
docker rm redis
# -f: 强制删除
docker rm -f redis
批量删除多个容器(谨慎使用!生产上切勿使用)
# docker ps -qa:查看所有运行过的容器ID
docker rm -f $(docker ps -qa)
# | xargs :管道符号,将左边的命令结果当做参数传递给右边的命令
docker ps -qa | xargs docker rm -f
查看日志
docker logs redis
# 退出 ctrl+c
查看容器内部运行的进程
# top: 与linux相似
docker top
查看容器内部细节
docker inspect redis
进入 正在运行的容器 并且 以命令行交互
# exec: 在容器中打开新的终端,并且可以启动新的进程 用exit退出,不会导致容器的停止。
docker exec -it redis /bin/bash
docker exec -it redis bash

# attach: 直接进入容器启动命令的终端,不会启动新的进程 用exit退出,会导致容器的停止。
docker attach redis 
容器内拷贝文件到宿主机
docker cp redis:/tmp/a.txt /home
#查看/home目录下是否有a.txt
cd /home/ && ls
导出容器
# docker export 容器名字/ID > 文件存放路径
docker export redis > /home/tar/redis.tar
#查看/home/tar 目录下是否有redis.tar
cd /home/tar && ls 
导入容器
# cat 文件名.tar | docker import - 镜像用户/镜像名:镜像版本号
cat /home/tar/redis.tar | docker import - haozi/ubuntu:1.0.0

二、制作本地镜像

1.修改容器
docker images
docker run -it ubuntu /bin/bash
cd /
vim a.txt 
#此时提示未安装vim,ubuntu安装vim:
apt-get update
apt-get -y install vim
vim a.txt
2.提交容器
docker images
docker run ubuntu
# docker commit -m="提交的描述信息" -a="作者" 容器ID 要创建的目标镜像名:[标签名]
docker commit -m="new add vim" -a="haozi" dh45hj34 haozi/myubuntu:1.1.0
3.查看容器
docker images
# 此时发现haozi/ubuntu镜像 内存大小多了足足100多M(安装了VIM服务)
docker run -it haozi/ubuntu /bin/bash
cd /
vim a.txt
#此时容器内不再提示没有vim服务了,那么此镜像制作成功
Docker挂载目录出现权限不足(cannot open directory .: Permission denied)

如果是CentOS7安全模块会比之前系统版本加强,不安全的会先禁止,所以目录挂载的情况被默认为不安全的行为,在SELinux里面挂载目录被禁止掉了,如果要开启,我们一般使用–privileged=true命令,扩大容器的权限解决挂载目录没有权限的问题,使用该参数,container内的root拥有真正的root权限,否则,container内的root只是外部的一个普通用户权限。

# root权限
--privileged=true

三、容器数据卷

1.挂载数据卷
# docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录  --name=容器名  镜像名
docker run -it -privileged=true -v /home/host_data:/tmp/docker_data  --name=ubuntu_1 ubuntu
1.1 查看是否挂载成功
# 查看容器数据卷挂载目录 "Mounts"
docker inspect ubuntu_1
2.读写规则映射
2.1 读写(默认)
# :rw read write
docker run -it -privileged=true -v /home/host_data:/tmp/docker_data:rw --name=ubuntu_1 buntu
2.2 只读
#:ro  read only
docker run -it -privileged=true -v /home/host_data:/tmp/docker_data:ro --name=ubuntu_1 buntu
3.容器数据卷的继承和共享
docker run -it  --privileged=true --volumes-from ubuntu_1  --name ubuntu_2 ubuntu

那么此时ubuntu_1挂掉了,ubuntu_2的数据卷还是正常工作

猜你喜欢

转载自blog.csdn.net/qq_45391983/article/details/128243671