Docker常用命令(启动、镜像相关、容器相关、文件拷贝、目录挂载、查看容器IP地址、Docker备份与恢复)
0、设置Docker镜像加速器
详见文章:Docker设置ustc的镜像源(镜像加速器)
1、Docker的启动与停止
注:
systemctl 命令是系统服务管理器指令。
(1)启动docker(守护进程):
[root@localhost ~]# systemctl start docker
(2)停止docker:
[root@localhost ~]# systemctl stop docker
(3)重启docker:
[root@localhost ~]# systemctl restart docker
(4)查看docker状态:
[root@localhost ~]# systemctl status docker
(5)开机启动:
[root@localhost ~]# systemctl enable docker
(6)查看docker概要信息:
[root@localhost ~]# docker info
如下:
[root@localhost java]# docker info
Client:Debug Mode: falseServer:Containers: 1Running: 0Paused: 0Stopped: 1Images: 1Server Version: 19.03.9Storage Driver: overlay2Backing Filesystem: xfsSupports d_type: trueNative Overlay Diff: trueLogging Driver: json-fileCgroup Driver: cgroupfsPlugins:Volume: localNetwork: bridge host ipvlan macvlan null overlayLog: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslogSwarm: inactiveRuntimes: runcDefault Runtime: runcInit Binary: docker-initcontainerd version: 8fba4e9a7d01810a393d5d25a3621dc101981175runc version: dc9208a3303feef5b3839f4323d9beb36df0a9ddinit version: fec3683Security Options:seccompProfile: defaultKernel Version: 3.10.0-1127.el7.x86_64Operating System: CentOS Linux 7 (Core)OSType: linuxArchitecture: x86_64CPUs: 1Total Memory: 972.3MiBName: localhost.localdomainID: BGB3:WJY2:5HV7:D65Q:BJHJ:3P7Z:T7NI:3H3Y:VZ4P:RPFJ:LYJ3:PTXBDocker Root Dir: /var/lib/dockerDebug Mode: falseRegistry: https://index.docker.io/v1/Labels:Experimental: falseInsecure Registries:127.0.0.0/8Live Restore Enabled: false[root@localhost java]#
(7)查看docker帮助文档
[root@localhost ~]# docker --help
(8)查看已启动的docker信息
[root@localhost ~]# docker ps
注:具体可参考本篇博文相关小节:
3、容器(Container)相关命令
2、 镜像(Image)相关命令
2.1 查看镜像
[root@localhost ~]# docker images
或
[root@localhost ~]# docker image ls
如下图:
说明:
REPOSITORY:镜像名称
TAG:镜像标签
IMAGE ID:镜像ID
CREATED:镜像的创建日期(不是获取该镜像的日期,也不是安装docker的日期)
SIZE:镜像大小
注: 这些镜像都是存储在Docker宿主机的 /var/lib/docker
目录下。
2.2 搜索镜像
我们可以从 Docker Hub 网站来搜索镜像,Docker Hub 网址为: https://hub.docker.com/
我们也可以使用 docker search 命令来搜索镜像。比如我们需要一个 httpd 的镜像来作为我们的 web 服务。我们可以通过 docker search
命令搜索 镜像名称
来寻找适合我们的镜像。
格式:
docker search 镜像名称
如,搜索mysql:
[root@localhost /]# docker search mysql
说明:
NAME:仓库名称
DESCRIPTION:镜像描述
STARS:用户评价,反应一个镜像的受欢迎程度
OFFICIAL:是否 docker 官方发布
AUTOMATED:自动构建,表示该镜像由Docker Hub自动构建流程创建的
2.3 拉取镜像
拉取镜像就是从中央仓库中下载镜像到本地。
格式:
docker pull 镜像名称
或
docker pull 镜像名称:版本
例如,我要下载 mysql 镜像:
拉取最新版本:
[root@localhost ~]# docker pull mysql
或
拉取指定版本:
[root@localhost ~]# docker pull mysql:5.7
2.4 删除镜像
(1)按镜像ID删除镜像
格式:
docker rmi 镜像ID
如,删除mysql镜像:
[root@localhost docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql 5.7 1b12f2e9257b 3 weeks ago 448MB
hello-world latest bf756fb1ae65 10 months ago 13.3kB
[root@localhost docker]#
[root@localhost docker]# docker rmi 1b12f2e9257b
(2)删除所有镜像(★★★★★)
docker rmi `docker images -q`
3、容器(Container)相关命令
3.0 查容器内目录或文件列表(需登录容器,在容器内操作
)**
[root@localhost ~]# dir
或
[root@localhost ~]# dir -l
或
[root@localhost ~]# dir 目录名
如,登录容器my_nginx
内,查看文件或目录列表:
[root@localhost webapps]# docker exec -it my_nginx /bin/bash
root@4925395ef0eb:/#
root@4925395ef0eb:/# ll
bash: ll: command not found
root@4925395ef0eb:/# dir
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
root@4925395ef0eb:/#
3.1 查看容器列表
语法:
docker ps [OPTIONS]
OPTIONS说明:
-a
: 显示所有的容器,包括未运行的。
-f
: 根据条件过滤显示的内容。
--format
: 指定返回值的模板文件。
-l
: 显示最近创建的容器。
-n
: 列出最近创建的n个容器。
--no-trunc
:不截断输出。
-q
: 静默模式,只显示容器编号。
-s
: 显示总的文件大小。
(1)查看正在运行的容器
[root@localhost ~]# docker ps
(2)查看所有容器
[root@localhost ~]# docker ps –a
(3)查看最后一次运行的容器
[root@localhost ~]# docker ps –l
(4)查看停止的容器
[root@localhost ~]# docker ps -f status=exited
3.2 创建与启动容器
创建容器命令:docker run 参数
常用的参数说明:
-i
:交互式操作
-t
:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。
--name
:为创建的容器命名。
-v
:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。
-d
:在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t两个参数,创建后就会自动进去容器)。
-p
:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射
/bin/bash
:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。
3.2.1(第一种)交互式方式创建容器
格式:
docker run -it --name=容器名称(起名字) 镜像名称:标签 /bin/bash
查看镜像列表:
(1)创建my_mysql
容器(创建并进入容器)
[root@localhost docker]# docker run -it --name=my_mysql mysql:5.7 /bin/bash
root@48b6a760b4df:/#
(2)退出当前容器(exit
)
(3)查看容器列表
通过ps命令查看可以启动的容器:
[root@localhost ~]# docker ps -a
如下图,my_mysql容器已经创建成功:
3.2.2(第二种)守护式方式创建容器
格式:
docker run -di --name=容器名称(起名字) 镜像名称:标签 /bin/bash
(1)创建my_mysql2
容器
[root@localhost docker]# docker run -itd --name=my_mysql2 mysql:5.7 /bin/bash
(2)登录容器
格式:
docker exec -it 容器名称(或者容器ID) /bin/bash
登录my_mysql2
容器:
[root@localhost docker]# docker exec -it my_mysql2 /bin/bash
root@0267de48e9f2:/# exit
exit
[root@localhost docker]#
3.3 停止与启动容器
(1)停止容器:
docker stop 容器名称(或者容器ID)
如,停止my_mysql
容器:
[root@localhost ~]# docker stop my_mysql
(2)启动容器:
docker start 容器名称(或者容器ID)
如,启动my_mysql
容器:
[root@localhost ~]# docker start my_mysql
3.4 删除容器
docker rm 容器名称(或容器ID)
如,删除my_mysql
容器:
[root@localhost ~]# docker rm my_mysql
3.5 文件拷贝(宿主系统文件 ⇄ 容器内文件)
可使用 docker cp ...
命令进行文件拷贝操作。
(1)将宿主系统的文件/目录 ➨ docker容器内目录
格式:
docker cp 需要拷贝的文件或目录 容器名称:容器目录
如,复制 /user/test/test.txt
到 my_mysql2容器的/usr/local目录
下:
[root@localhost ~]# docker cp /user/test/test.txt my_mysql2:/usr/local
查看my_mysql2 容器内复制过来的文件:
[root@localhost ~]# docker exec -it my_mysql2 /bin/bash
root@0267de48e9f2:/# dir /usr/local
bin etc games include lib man sbin share src test.txt
root@0267de48e9f2:/#
root@0267de48e9f2:/# cat /usr/local/test.txt
测试文件拷贝copy
root@0267de48e9f2:/#
root@0267de48e9f2:/# exit
exit
[root@localhost ~]#
(2)将docker容器内的文件 ➨ 宿主系统目录
格式:
docker cp 容器名称:容器目录 需要拷贝的文件或目录
如,复制 my_mysql2容器的/usr/local/test.txt
文件 到 宿主系统的 /user/test
目录下,并改名为test2.txt
:
[root@localhost test]# docker cp my_mysql2:/usr/local/test.txt /user/test/test2.txt
[root@localhost test]# ll
总用量 8
-rw-r--r--. 1 root root 23 11月 18 00:30 test2.txt
-rw-r--r--. 1 root root 23 11月 18 00:30 test.txt
[root@localhost test]#
3.6 目录挂载(创建容器时
)
说明: 我们可以在创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样我们就可以通过修改宿主系统某个目录的文件从而去影响容器(
避免进入容器修改
)。
格式:
docker run -di -v 宿主机目录:容器目录 --name=新生成的容器名称 镜像名:标签 /bin/bash
如,创建容器 my_mysql3
,并将宿主机目录/user/test
映射容器目录/usr/local/mytest
(目录会自动创建) :
[root@localhost ~]# docker run -di -v /user/test:/usr/local/mytest --name=my_mysql3 mysql:5.7 /bin/bash
查看映射情况(启动并进入容器my_mysql3
内部):
[root@localhost test]# docker start my_mysql3
my_mysql3
[root@localhost test]# docker exec -it my_mysql3 /bin/bash
root@c89239fa89a7:/#
root@c89239fa89a7:/# dir /usr/local/mytest
test.txt test2.txt test3.txt
root@c89239fa89a7:/#
root@c89239fa89a7:/# exit
exit
[root@localhost test]#
如上,查看容器目录
my_mysql3:/usr/local/mytest
,可以直接看到宿主系统目录/user/test
下的所有文件,及映射成功。
【注】:
如果你共享的是多级的目录,可能会出现权限不足的提示。
这是因为CentOS7中的安全模块selinux把权限禁掉了,我们需要添加参数 --privileged=true 来解决挂载的目录没有权限的问题
3.7 查看容器运行数据& 直接查看容器IP地址
我们可以通过以下命令查看容器运行的各种数据
(1)查看容器所有运行数据
格式:
docker inspect 容器名称(容器ID)
如,查看容器my_mysql3
的运行数据(太多,这里不展示了):
[root@localhost test]# docker inspect my_mysql3
(2)直接查看容器IP地址
格式:
docker inspect --format=’{{.NetworkSettings.IPAddress}}’ 容器名称(容器ID)
如,查看容器my_mysql3
的IP地址:
[root@localhost test]# docker inspect --format='{{.NetworkSettings.IPAddress}}' my_mysql3
172.17.0.3
[root@localhost test]#
注: 如若想直接获取其他运行数据,可参考docker inspect 容器名称(容器ID)
命令的具体数据,直接修改docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称(容器ID)
中{{}}
里面的对应属性项即可。
4、Docker备份与恢复
4.1 容器保存为镜像
我们可以通过 docker commit ...
命令将容器保存为新镜像。
格式:
docker commit [OPTIONS] 容器名称(容器ID) [REPOSITORY[:TAG]]
OPTIONS说明:
-a
:提交的镜像作者;
-c
:使用Dockerfile指令来创建镜像;
-m
:提交时的说明文字;
-p
:在commit时,将容器暂停。
【例1】:
如,将容器my_mysql
保存为新镜像my_mysql2
:
[root@localhost ~]# docker commit my_mysql my_mysql2
sha256:8b474f1f50e6f5e2c31beb328db91acd46e25a37963e7d45c5beb48b64d3418c
[root@localhost ~]#
【例2】:
如,将容器my_mysql
保存为新镜像my_mysql3
:
[root@localhost ~]# docker commit -a "zhangxiaohu" -m "my copy mysql" my_mysql my_mysql3:v3
sha256:0358acf99cccfd81f7ad2b439cf54770c1a6ec0ba58929047f947fdc99d85de5
[root@localhost ~]#
4.2 镜像备份(docker save)
可以使用docker save
命令将指定镜像保存成 .tar
文件。
语法:
docker save [OPTIONS] 要生成的备份文件名.tar [IMAGE…]
OPTIONS 说明:
-o
:输出到的文件。
如,将镜像 my_mysql3
生成 my_mysql3_v3.tar
备份文件:
[root@localhost ~]# docker save -o my_mysql3_v3.tar my_mysql3
4.3 镜像恢复(docker load)
(1)首先删除旧镜像:my_mysql3
[root@localhost ~]# docker rmi my_mysql3:v3
(2)然后使用 docker load
命令恢复镜像
注:
docker load 只能恢复 使用 docker save 命令导出的镜像。
语法:
docker load [OPTIONS]
OPTIONS 说明:
--input , -i
:指定导入的文件,代替 STDIN。
--quiet , -q
:精简输出信息。
如,恢复备份的my_mysql3_v3.tar文件为镜像:
[root@localhost ~]# docker load -i /root/my_mysql3_v3.tar
Docker常用命令(启动、镜像相关、容器相关、文件拷贝、目录挂载、查看容器IP地址、Docker备份与恢复)相关推荐
- Docker(二):Docker常用命令之镜像的创建:Dockerfile 与 commit
相关阅读: Docker(一):Docker的安装与常用命令 Docker(二):Docker常用命令之镜像的创建:Dockerfile 与 commit Docker(三):Docker镜像导入与导 ...
- docker常用命令及镜像的制作与上传
安装docker docker安装 docker加速 docker-ce的配置文件是/etc/docker/daemon.json,此文件默认不存在,需要我们手动创建并进行配置,而docker的加速就 ...
- docker删除镜像命令_第三章 Docker常用命令之镜像命令
3.2 镜像命令: docker images 列出本机所有镜像docker images -a 列出本机所有镜像,包含中间映像层docker images -q 列出本机所有镜像的iddocker ...
- 【云原生 • Docker】Docker常用命令总结(值得收藏)
上一篇文章大家应该了解和搭建了Docker环境,Docker 是一个开源的应用容器引擎. 直通车: [云原生 • Docker]初识Docker和Docker的坏境搭建(保姆级教学) 作为一名开发或者 ...
- docker常用命令_docker常用命令整理
docker常用命令整理 代码狂魔 • 5 天前 • 技术积累 • 14 • 0 前面已经把docker是什么和 docker怎么安装已经写了,现在我将常用命令做一个整理,方便日后查阅 常用命令 do ...
- Docker常用命令操作——1)、镜像操作;2)、容器操作
Docker常用命令&操作 1).镜像操作 https://hub.docker.com/ 操作 命令 说明 检索 docker search 关键字 eg:docker search red ...
- Docker 学习笔记(Docker 架构 / 镜像 / 容器 / 常用命令 / Dockerfile / 镜像仓库)
Docker 1. Docker 入门 1.1 Docker 是什么 1.2 Docker 和 虚拟机 1.3 镜像 容器 仓库 1.4 Docker 架构 1.5 Docker 安装 1.6 doc ...
- centos常用命令_二、Docker镜像是什么?Docker常用命令
科技奇闻 关注让你我共同进步 文章来源:CSDN 作者:IronmanJay Docker常用命令 1.帮助命令 docker version #查看版本号docker info #显示D ...
- docker 常用命令(二)——容器命令
docker 常用命令(二) # 容器命令 注:有了镜像才可以创建并启动容器:本文在centos7.9下创建centos:latest 下载最新版centos: docker pull centos ...
最新文章
- Codeforces Round #256 (Div. 2) D Multiplication Table
- elasticsearch 第二篇(配置篇)
- 从内涵段子到皮皮虾,娱乐App为何不能一鱼两吃?
- Android打包的那些事
- php抓取页面400错误
- mapreduce分组统计_Mongodb的分组统计MapReduce
- GPU Gems1 - 1 用物理模型进行高效的水模拟(Effective Water Simulation from Physical Models)
- 异常处理记录: Servlet class X is not a javax.servlet.Servlet
- Win10安装Ubuntu18.04双系统,图文详解,全网最详细教程
- 苹果Mac电脑配置flutter开发环境
- 关于elastic-job 分片与线程问题
- ajax.net 的使用方法--摘自网上
- 轻量级协作机器人到仿人机器人的关键技术演进及生态共建
- 《分形艺术,当科学嫁给了艺术》作者:林晨 风达
- Markdown文件的标题分级自动编号——Typora
- Android Orientation Sensor(方向传感器)详解与应用
- 无法通过 Internet 连接到 Visual Paradigm 的服务器
- 【BJOI 2019】排兵布阵
- PyCharm4注册码--软件安装
- Zooming Slow-Mo: Fast and Accurate One-Stage Space-Time Video Super-Resolution----视频超分辨