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)重
0、设置Docker镜像加速器
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: false
Server:
Containers: 1
Running: 0
Paused: 0
Stopped: 1
Images: 1
Server Version: 19.03.9
Storage Driver: overlay2
Backing Filesystem: xfs
Supports d_type: true
Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 8fba4e9a7d01810a393d5d25a3621dc101981175
runc version: dc9208a3303feef5b3839f4323d9beb36df0a9dd
init version: fec3683
Security Options:
seccomp
Profile: default
Kernel Version: 3.10.0-1127.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 972.3MiB
Name: localhost.localdomain
ID: BGB3:WJY2:5HV7:D65Q:BJHJ:3P7Z:T7NI:3H3Y:VZ4P:RPFJ:LYJ3:PTXB
Docker Root Dir: /var/lib/docker
Debug Mode: false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
127.0.0.0/8
Live 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
更多推荐
所有评论(0)