一、Docker服务常用命令
1、查看docker版本
# docker version
2、查看docker信息
# docker info
# 查看docker信息:Docker Root Dir值为修改后的路径
3、重启启动命令
# sudo systemctl enable docker
# sudo systemctl daemon-reload
# sudo systemctl restart docker
# sudo systemctl status docker -- 查看状态
4、更改docker默认的存储路径
# vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd --graph /docker/docker
二、Docker镜像常用命令
1、搜索镜像
# docker search [OPTIONS] <TERM搜索词>
从Docker Hub查找镜像 https://hub.docker.com/
[OPTIONS]可选参数说明:
--automated :只列出 automated build类型的镜像;
--no-trunc :显示完整的镜像描述;
-f <过滤条件>:列出收藏数不小于指定值的镜像。
# docker search php -- 查询所有的PHP镜像
# docker search -f stars=100 php -- 查询PHP收藏数大于100的镜像(注意这大于是使用=号)
如果查询参数说明:
NAME: 镜像仓库源的名称
DESCRIPTION: 镜像的描述
OFFICIAL: 是否 docker 官方发布
STARS: 类似 Github 里面的 star,表示点赞、喜欢的意思。
AUTOMATED: 自动构建。
2、Docker镜像站查找镜像
docker官方镜像网站为: https://hub.docker.com/
如:我们要在官网镜像查询nginx镜像名称、tag等信息
-->
3、拉取镜像
# docker pull [OPTIONS] NAME[:TAG|@DIGEST]
[OPTIONS]可选参数说明:
-a :拉取所有 tagged 镜像
--disable-content-trust :忽略镜像的校验,默认开启
例:获取nginx的镜像
# docker pull nginx --不指定:tag 默认下载最新的等效于下面的方法
# docker pull nginx:latest -- 下载最新版
# docker pull nginx:stable -- 下载稳定版
# docker pull nginx:1.18.0 --指定下载1.18.0
下载后我们用 docker images 命令可以查看本地下载的镜像
延伸阅读:Docker pull 下来的镜像默认保存在哪里?
3、列出已下载的镜像
# docker images --- 不加任何参数表示列出本地所有镜像
# docker images [OPTIONS] [REPOSITORY[:TAG]]
可选参数:
-a, --all:列出所有镜像 (默认隐藏中间层镜像)
--digests:显示镜像的摘要信息
-f, --filter:显示满足条件的镜像
--format:使用 Go 模板语法列出镜像
--no-trunc:不截断输出,显示完整镜像信息
-q, --quiet:只显示镜像 ID
例:列出本地镜像中REPOSITORY为nginx的镜像列表。
# docker images ubuntu
例:列出本地所有镜像
# docker images
如图:
参数说明:
REPOSITORY :仓库名称,可以理解为镜像名称,多个可以重名
TAG: 标签名
如有【nginx:stable】定位了镜像的唯一性。
4、删除镜像
#删除本地一个或多少镜像。
# docker rmi [OPTIONS] IMAGE [IMAGE...]
OPTIONS说明:
-f :强制删除;
--no-prune :不移除该镜像的过程镜像,默认移除;
例:删除nginx 标签为stable
# docker rmi nginx:stable
说明, 如果本地nginx的 REPOSITORY 值只有一个,可以省略 标签名
三、Docker容器常用命令
容器是由镜像来创建的,一个镜像可以创建多个容器,只要定义不同的容器名称即可
1、创建并启动容器
# docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
OPTIONS说明:
-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
-d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-P: 随机端口映射,容器内部端口随机映射到主机的端口
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
--name="nginx-lb": 为容器指定一个名称;
--dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
--dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
-h "mars": 指定容器的hostname;
-e username="ritchie": 设置环境变量;
--env-file=[]: 从指定文件读入环境变量;
--cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;
-m :设置容器使用内存最大值;
--net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
--link=[]: 添加链接到另一个容器;
--expose=[]: 开放一个端口或一组端口;
-v --volume , 绑定一个卷
例:使用镜像 nginx:stable 创建一个名为 mynginx 的容器,并且后台启动,并将宿主机的8080端口映射到容器的80端口
# docker run -d --name mynginx -p 8080:80 nginx:stable
2、列出本地容器
docker ps [OPTIONS]
OPTIONS说明:
-a :显示所有的容器,包括未运行的。
-f :根据条件过滤显示的内容。
--format :指定返回值的模板文件。
-l :显示最近创建的容器。
-n :列出最近创建的n个容器。
--no-trunc :不截断输出。
-q :静默模式,只显示容器编号。
-s :显示总的文件大小。
例:列出本地创建的所有容器:
# docker ps -a
列出如图:
3、重启容器、启动容器、停止容器
# docker restart 容器CONTAINER ID 或 容器NAMES
# docker start 容器CONTAINER ID 或 容器NAMES
# docker stop 容器CONTAINER ID 或 容器NAMES
4、删除容器
docker rm :删除一个或多个容器。
# docker rm [OPTIONS] CONTAINER [CONTAINER...]
OPTIONS说明:
-f :通过 SIGKILL 信号强制删除一个运行中的容器。
-l :移除容器间的网络连接,而非容器本身。
-v :删除与容器关联的卷。
# docker rm mynginx --删除mynginx容器
# docker rm $(docker ps -a -q) --删除所有处于终止状态的容器
# docker rm -f db01 db02 -- 强制删除容器 db01、db02:
# docker rm -l db 移除容器 nginx01 对容器 db01 的连接,连接名 db:
5、进入容器
# docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
OPTIONS说明:
-d :分离模式: 在后台运行
-i :即使没有附加也保持STDIN 打开
-t :分配一个伪终端
例:进入容器mynginx 并开启一个交互模式的终端
# docker exec -it mynginx /bin/bash --此容器必须是开启状态
进入后如图,类使一个虚拟机:
此虚拟机默认是用 apt-get 作为原(而不是yum)
先更新此源: # apt-get update ;
安装 vim命令
# apt-get install -y vim
四、文件传输命令
1、将容器文件拷贝至主机
# docker cp <容器名称或id>:<容器中文件路径> <宿主机中目标路径>
如:将mynginx容器的 /tmp/test.json 文件拷贝到主机 ~/Desktop 目录
# docker cp mynginx:/tmp/test.json ~/Desktop
2、 将主机文件拷贝至容器
# docker cp <文件路径> <容器名称或id>:<容器中文件目标路>
如:将主机的 ~/Desktop/foo.txt 文件拷贝至容器 mynginx 的 /var 目录
# docker cp ~/Desktop/foo.txt mynginx:/var