Docker 常用命令

米饭6个月前行业资讯297

 一、Docker 基础命令

1、启动 docker

systemctl start docker


2、关闭 docker

systemctl stop docker


3、重启 docker

systemctl restart docker


4、设置开机启动 docker

systemctl enable docker


5、查看 docker 运行状态

systemctl status docker


6、查看 docker 版本信息

docker version


7、查看 docker 系统、镜像、容器数等信息

docker info


8 docker 帮助命令

如果忘记了某些命令,可以输入如下命令:

docker --help


如果忘记特定命令用法,如拉取命令,则可以输入如下指令:

docker pull --help



二、Docker 镜像命令

1、查看服务器中 docker 镜像列表

docker images

docker image ls



2、查看镜像、容器、数据卷所占用的空间:

docker system df



3、搜索镜像

docker search [镜像名]


如可以输入这样的命令:docker search mysql



4、拉取镜像(从 Docker 镜像仓库拉取镜像)

不加 tag版本号,默认拉取 docker 仓库中该镜像的最新版本,相当于命令 docker pull [镜像名]:latest

docker pull [镜像名]

docker pull [镜像名]:tag


如 拉取最新版的 mysql:

docker pull mysql


加 tag,拉取指定版本。比如说拉取 mysql 指定版本:

docker pull mysql:5.7.30


5、运行镜像

docker run [镜像名]


docker run [镜像名]:tag


如运行Tomcat:

docker run tomcat


用 Ctrl+c 退出。


下面用实例解释:几个参数:

# -it:这是两个参数,一个是 -i:交互式操作,一个是 -t 终端。

# 这里打算进入 bash 执行一些命令并查看返回结果,因此需要交互式终端。


# --rm:这个参数的意思是,容器退出后随之将其删除。默认情况下,除了排障需求,退出的容器并不会立即删除,除非手动 docker rm。

# 这里只是随便执行个命令,看看结果,不需要排障和保留结果,因此使用 --rm 可以避免浪费空间。



# bash:放在镜像名后的是命令,这里希望有个交互式 Shell,因此用的是 bash。

docker run -it --rm ubuntu:18.04 bash



6、删除镜像

当前镜像没有被任何容器使用才可以删除。

docker rmi -f 镜像名/镜像ID


删除多个镜像:多个镜像ID或镜像之间用空格隔开

docker rmi -f 镜像名/镜像ID 镜像名/镜像ID 镜像名/镜像ID


删除全部镜像:-a 为显示全部,-q 为只显示ID

docker rmi -f $(docker images -aq)


删除所有仓库名为 MySQL 的镜像

docker image rm $(docker image ls -q MySQL)


用before删除所有在某版本之前的镜像,如删除6.2版本之前的MySQL镜像

docker image rm $(docker image ls -q -f before=MySQL:6.2)


强制删除镜像:

docker image rm 镜像名/镜像ID



7、保存镜像

将我们的镜像保存为 tar 压缩文件,方便镜像转移和保存,可以在任何一台安装了 docker 的服务器上加载这个镜像。

docker save 镜像名/镜像ID -o 镜像要保存的位置和名字


如:docker save tomcat -o /myTomcatimg.tar


8、加载镜像

任何装 docker 的地方加载镜像保存文件,使其恢复为一个镜像。

docker load -i 镜像保存文件位置



三、Docker 容器命令


1、查看正在运行的容器列表

docker ps

# 或

docker container ls


2、查看所有容器

所有正在运行的和停止运行的。

docker ps -a


3、运行容器

# -it:表示与容器进行交互式启动

# -d:表示可后台运行容器(守护式运行)

# --name:要给运行的容器起的名字

# /bin/bash:交互路径

docker run -it -d --name 要取的别名 镜像名:tag /bin/bash



如:要启动一个 MySQL ,把它的别名取为 Mysql001,并交互运行,命令如下(这里指定版本号为 6.4):


# 3.1、拉取 redis 镜像

docker pull mysql


# 3.2、命令启动

docker run -it -d --name mysql001 mysql:6.4 /bin/bash


# 3.3、查看已运行容器

docker ps


# 3.4、停止容器

docker stop 容器名/容器ID

如:停止前面运行的mysql 容器,命令:docker stop mysql001:


4、删除容器

可以添加 -f 参数,Docker 会发送 SIGKILL 信号给容器。

删除一个容器

docker rm -f 容器名/容器ID


删除多个容器:多个容器名/容器ID 用空格隔空

docker rm -f 容器名/容器ID 容器名/容器ID 容器名/容器ID


删除全部容器

docker rm -f $(docker ps -aq)


清除所有处于终止状态的容器

docker container prune



5、容器端口与服务器端口映射

-p 宿主机端口:容器端口


例如:使用mysql镜像,可以3306 端口映射到服务器的 3307端口,如果成功的话,那么访问服务器的 3307 端口,就会访问到 docker 中的容器 mysql。命令:


docker run -itd --name mysql001 -p 3307:3306 mysql:6.4 /bin/bash


-p 3307:3306 解析:将容器内部的 3306 端口与 docker 宿主机(docker 安装在哪台服务器,哪台服务器就是宿主机)3307 端口进行映射,那通过外部访问宿主机 3307 端口,即可访问到 docker 容器 3306 端口了。


6、进入容器

当 -i -t 参数一起使用时,可以熟悉的 Linux 命令提示符。

docker exec -it 容器名/容器ID /bin/bash

如进入前面的 mysql001 容器,就可以输入命令 docker exec -it mysql001 /bin/bash。


7、从容器退出到服务器

直接退出

exit



8、启动容器

docker start 容器名/容器ID


9、重启容器

docker restart 容器名/容器ID


10、杀死 kill 容器

docker kill 容器名/容器ID


11、容器文件拷贝

无论容器是否开启都可以进行拷贝。

docker cp 容器ID/名称:文件路径 要拷贝到外部的路径 | 要拷贝到外部的路径 容器ID/名称:文件路径


从容器内拷出

docker cp 容器ID/名称:容器内路径 容器外路径


从外部拷贝文件到容器内

docker cp 容器外路径 容器ID/名称:容器内路径


12、查看容器日志

docker logs -f --tail=要查看末尾多少行 默认all 容器ID


13、设置开机自动启动容器

启动容器时,使用 docker run 命令时,添加参数 --restart=always 便表示该容器随 docker 服务启动而自动启动。

docker run -itd --name mysql -p 3307:3306 --restart=always  mysql:6.4 /bin/bash



14、挂载

数据挂载:简单来讲,就是将容器内的数据与外部宿主机文件绑定起来,类似一个双持久化,当容器删除时,宿主机文件数据目录仍在,下次启动容器只要将数据目录指向宿主机数据所在位置即可恢复。

-v 宿主机文件存储位置:容器内文件位置


-v 命令可以多次使用,即一个容器可以同时挂载多个文件。


-v 宿主机文件存储位置:容器内文件位置 -v 宿主机文件存储位置:容器内文件位置 -v 宿主机文件存储位置:容器内文件位置


如:运行 docker mysql 容器 进行 端口映射 两个数据卷挂载 设置开机自启动

docker run -d -p 3307:3306 --name mysql001 --restart=always  -v /var/lib/mysql/data/:/data -v /var/lib/mysql/conf/:/usr/local/etc/mysql/mysql.conf  mysql:6.4 --requirepass "password"


15、更换容器名

docker rename 容器ID/容器名 新容器名


16、导出和导入

16.1导出容器,将导出容器快照到本地文件

如果要导出本地某个容器,使用 docker export 命令。

docker container ls -a

docker export ddfc038b5dc2 > ubuntu.tar



16.2导入容器快照

可以使用 docker import 从容器快照文件中再导入为镜像。

cat ubuntu.tar | docker import - test/ubuntu:v1.0

docker image ls


16.3通过指定 URL 或者某个目录来导入,例如

docker import http://example.com/exampleimage.tgz example/imagerepo


前面使用过 docker load 来导入镜像存储文件到本地镜像库,同样也可以使用 docker import 来导入一个容器快照到本地镜像库;但是两者有区别。



17、在容器和主机之间复制文件/文件夹

从容器里面拷文件到宿主机

docker cp 容器名:要拷贝的文件在容器里面的路径   要拷贝到宿主机的相应路径

docker cp mysql:/opt/cdc.txt /home/


从宿主机拷文件到容器里面

docker cp 要拷贝的文件路径 容器名:要拷贝到容器里面对应的路径;如果拷贝的内容有重复,会直接覆盖,不会询问。

docker cp /home/ccc.txt mysql:/opt/


原文链接:https://blog.csdn.net/guanrongl/article/details/135074403

本文系转载,版权归原作者所有,如若侵权请联系我们进行删除!  

云掣基于多年在运维领域的丰富时间经验,编写了《云运维服务白皮书》,欢迎大家互相交流学习:

《云运维服务白皮书》下载地址:https://fs80.cn/v2kbbq

想了解更多大数据运维托管服务、数据库运维托管服务、应用系统运维托管服务的的客户,欢迎点击云掣官网沟通咨询:https://yunche.pro/?t=shequ


相关文章

Docker背后的容器管理——Libcontainer深度解析

Docker背后的容器管理——Libcontainer深度解析

原文地址:http://www.infoq.com/cn/articles/docker-container-management-libcontainer-depth-analysisLibcont...

Linux 部署Java项目-jar包和war包(五)

Linux 部署Java项目-jar包和war包(五)

一、前景(jar包和war包区别)部署之前先说下两种包,java项目部署到服务器一般有用war包的,也有用jar包的,微服务spring-cloud普及后大部分打包都是jar,部署之前先搞清楚自己要打...

如何重塑IT运维核心竞争力?可观测运维这么做!

如何重塑IT运维核心竞争力?可观测运维这么做!

随着云计算、大数据、人工智能等新兴技术的兴起及运用,无论是通讯、金融、教育,还是交通、政府、企业等行业,都得到飞速发展,但在高速发展的同时,各行业巨大的 IT 维护和管理成本也在与日俱增,存在监控工具...

Spring AMQP与RabbitMQ深度整合指南:从基础到高级应用(3)

Spring AMQP与RabbitMQ深度整合指南:从基础到高级应用(3)

3.5 声明交换机和队列:在之前我们都是基于RabbitMQ控制台来创建队列、交换机。但是在实际开发时,队列和交换机是程序员定义的,将来项目上线,又要交给运维去创建。那么程序员就需要把程序中运行的所有...

Linux第一个小程序——进度条实现

Linux第一个小程序——进度条实现

前言我们之前学习过vim编辑器、gcc/g++的使用和make/makefile工具,所以今天我们就可以使用它们创建Linux上第一个小程序——进度条。在实现进度条之前我们首先需要补充两个小知识。1....

SRE是什么,与传统运维有什么不同?

SRE是什么,与传统运维有什么不同?

SRE,Site Reliability Engineering,中文翻译为站点可靠性工程师,这个词诞生于谷歌内部。将这个词语展开来说:首先,SRE的关注点在于可靠性;其次,SRE中的"S&...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。