[Docker] 的常用命令

ps 以下命令均为基于linux

1. 帮助命令

shell 复制代码
docker version 		 	# 显示docker的版本信息
docker info 			# 显示docker的系统信息,包括镜像和容器的数量
docker 命令 --help 		#帮助命令 

sudo su root 			# 切换root用户
service docker start 	# 启动docker

2. 镜像命令

获取镜像

shell 复制代码
docker images  		# 获取本地的镜像

root@DESKTOP-GC42A9O:/mnt/c/Users/dcs# docker images --help

Usage: docker images OPTIONS REPOSITORY\[:TAG]

List images

Options:

-a, --all Show all images (default hides intermediate images)

--digests Show digests

-f, --filter filter Filter output based on conditions provided

--format string Pretty-print images using a Go template

--no-trunc Don't truncate output

-q, --quiet Only show image IDs

搜索镜像

shell 复制代码
docker search 镜像名字		# 搜索镜像

root@DESKTOP-GC42A9O:/mnt/c/Users/dcs# docker search --help

Usage: docker search OPTIONS TERM

Search the Docker Hub for images

Options:

-f, --filter filter Filter output based on conditions provided

--format string Pretty-print search using a Go template

--limit int Max number of search results (default 25)

--no-trunc Don't truncate output

root@DESKTOP-GC42A9O:/mnt/c/Users/dcs# docker search mysql --filter=STARTS=5000

Error response from daemon: Invalid filter 'starts'

// 搜索过滤

root@DESKTOP-GC42A9O:/mnt/c/Users/dcs# docker search mysql --filter=STARS=5000

NAME DESCRIPTION STARS OFFICIAL AUTOMATED

mysql MySQL is a widely used, open-source relation... 10637 OK

拉取镜像

shell 复制代码
docker pull 镜像名				# 拉取镜像
docker pull 镜像名:版本号 		# 指定版本下载

root@DESKTOP-GC42A9O:/mnt/c/Users/dcs# docker pull mysql

Using default tag: latest // 如果不写Tag,,默认下载lastest

latest: Pulling from library/mysql // 分层下载, docker images 的核心 联合文件系统

6f28985ad184: Pull complete

e7cd18945cf6: Pull complete

ee91068b9313: Pull complete

b4efa1a4f93b: Pull complete

f220edfa5893: Pull complete

74a27d3460f8: Pull complete

2e11e23b7542: Pull complete

fbce32c99761: Pull complete

08545fb3966f: Pull complete

5b9c076841dc: Pull complete

ef8b369352ae: Pull complete

ebd210f0917d: Pull complete

Digest: sha256:5d1d733f32c28d47061e9d5c2b1fb49b4628c4432901632a70019ec950eda491 // 签名

Status: Downloaded newer image for mysql:latest

docker.io/library/mysql:latest // 真实地址

删除镜像

shell 复制代码
docker rmi				# 删除镜像
docker rmi -f 镜像id 		# 删除特定的镜像

root@DESKTOP-GC42A9O:/mnt/c/Users/dcs# docker rmi --help

Usage: docker rmi OPTIONS IMAGE IMAGE...

Remove one or more images

Options:

-f, --force Force removal of the image

--no-prune Do not delete untagged parents

shell 复制代码
root@DESKTOP-GC42A9O:/mnt/c/Users/dcs# docker images
REPOSITORY    TAG       IMAGE ID       CREATED       SIZE
mysql         5.7       2fb283157d3c   2 days ago    449MB
mysql         latest    26d0ac143221   2 days ago    546MB
hello-world   latest    d1165f221234   2 weeks ago   13.3kB

root@DESKTOP-GC42A9O:/mnt/c/Users/dcs# docker rmi -f  26d0ac143221
Untagged: mysql:latest
Untagged: mysql@sha256:5d1d733f32c28d47061e9d5c2b1fb49b4628c4432901632a70019ec950eda491
Deleted: sha256:26d0ac143221341c36402a139826e938d2ea6f2e458005a71699975c84e96ade
Deleted: sha256:16f5b1eb2e7319e8a0db5df7f1ee0903033400a42264fcfbcc2d946b12267895
Deleted: sha256:303119686434550f3672a755dcda8a0468d34472d77e8789ffef5dc5f73dc790
Deleted: sha256:88f159cadb30aacd4df26c9fb6e1fb71b3cc3f5ce05468659879216e7751bad7
Deleted: sha256:55b6e8ee7cbea49773b2a88c3941ebad16537df99b087e673ca4b0175ade1b70
Deleted: sha256:e27b1c89d3f9e194c1a3495c24a9546135ee3ab6625e94eaaedd09a41343e7d0

root@DESKTOP-GC42A9O:/mnt/c/Users/dcs# docker images
REPOSITORY    TAG       IMAGE ID       CREATED       SIZE
mysql         5.7       2fb283157d3c   2 days ago    449MB
hello-world   latest    d1165f221234   2 weeks ago   13.3kB

构建镜像

我们使用命令 docker build , 从零开始来创建一个新的镜像。为此,我们需要创建一个 Dockerfile 文件,其中包含一组指令来告诉 Docker 如何构建我们的镜像。

shell 复制代码
runoob@runoob:~$ cat Dockerfile 

FROM    centos:6.7
MAINTAINER      Fisher "fisher@sudops.com"

RUN     /bin/echo 'root:123456' |chpasswd
RUN     useradd runoob
RUN     /bin/echo 'runoob:123456' |chpasswd
RUN     /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local
EXPOSE  22
EXPOSE  80
CMD     /usr/sbin/sshd -D

每一个指令都会在镜像上创建一个新的层,每一个指令的前缀都必须是大写的。

第一条FROM,指定使用哪个镜像源

RUN 指令告诉docker 在镜像内执行命令,安装了什么。。。

然后,我们使用 Dockerfile 文件,通过 docker build 命令来构建一个镜像。

shell 复制代码
runoob@runoob:~$ docker build -t runoob/centos:6.7 .

Sending build context to Docker daemon 17.92 kB
Step 1 : FROM centos:6.7
 ---> d95b5ca17cc3
Step 2 : MAINTAINER Fisher "fisher@sudops.com"
 ---> Using cache
 ---> 0c92299c6f03
Step 3 : RUN /bin/echo 'root:123456' |chpasswd
 ---> Using cache
 ---> 0397ce2fbd0a
Step 4 : RUN useradd runoob
......

参数说明:

  • -t :指定要创建的目标镜像名
  • . :Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径

使用docker images 查看创建的镜像已经在列表中存在,镜像ID为860c279d2fec

shell 复制代码
runoob@runoob:~$ docker images 
REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
runoob/centos       6.7                 860c279d2fec        About a minute ago   190.6 MB

我们可以使用新的镜像来创建容器

shell 复制代码
runoob@runoob:~$ docker run -t -i runoob/centos:6.7  /bin/bash
[root@41c28d18b5fb /]# id runoob
uid=500(runoob) gid=500(runoob) groups=500(runoob)

从上面看到新镜像已经包含我们创建的用户 runoob。

设置镜像标签

我们可以使用 docker tag 命令,为镜像添加一个新的标签。

shell 复制代码
runoob@runoob:~$ docker tag 860c279d2fec runoob/centos:dev

docker tag 镜像ID,这里是 860c279d2fec ,用户名称、镜像源名(repository name)和新的标签名(tag)。

使用 docker images 命令可以看到,ID为860c279d2fec的镜像多一个标签。

shell 复制代码
runoob@runoob:~$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
runoob/centos       6.7                 860c279d2fec        5 hours ago         190.6 MB
runoob/centos       dev                 860c279d2fec        5 hours ago         190.6 MB

3. 容器命令

说明: 有了镜像才可以创建容器, linux, 下载一个centos镜像来测试学习

新建容器并启动

shell 复制代码
docker run [可选参数] image

# 参数说明
--name="Name" 	# 命名容器名字
-d   			# 后台方式运行
-i				# 使用交互方式操作,
-t				# 运行终端
-p 				# 指定容器端口  -p 8080:8080
	-p ip:主机端口:容器端口
	-p 主机端口:容器端口 (常用)
	
-p 				# 随机端口
shell 复制代码
# 启动并进入容器

root@DESKTOP-GC42A9O:/mnt/c/Users/dcs# docker run -it centos /bin/bash

# 容器启动成功 注意[]
[root@44ff7f7ed7fe /]#

从容器中退回主机

shell 复制代码
exit 			# 直接退出容器并停止
Ctrl + p + q	# 退出容器但不停止

列出运行中的容器

shell 复制代码
docker ps

root@DESKTOP-GC42A9O:/mnt/c/Users/dcs# docker ps --help

Usage: docker ps OPTIONS

List containers

Options:

-a, --all Show all containers (default shows just running)

-f, --filter filter Filter output based on conditions provided

​ --format string Pretty-print containers using a Go template

-n, --last int Show n last created containers (includes all states)

​ (显示最近创建的运行中的程序)

(default -1)

-l, --latest Show the latest created container (includes all states)

--no-trunc Don't truncate output

-q, --quiet Only display container IDs

​ (只显示运行中容器的id)

-s, --size Display total file sizes

删除容器

shell 复制代码
docker rm 容器id    			# 不能删除运行中的容器

docker rm -f $(docker ps -aq) # 删除所有的容器

启动和停止容器的操作

shell 复制代码
docker start 容器id           # 启动已停止的容器
docker restart 容器id			# 重启停止的容器
 
docker stop  容器id 			# 停止容器
docker kill  容器id			# 
  • 停止所有正在运行容器
shell 复制代码
docker kill $(docker ps -a -q)

4.常用的其他命令

  • 后台启动容器
shell 复制代码
docker run -d 镜像
  • 查看日志
shell 复制代码
docker logs 容器id
  • 查看容器的进程信息
shell 复制代码
docker ps
  • 查看容器的内容信息
shell 复制代码
docker inspect 容器id
  • 进入正在运行的容器

容器通常是以后台的方式运行的,需要进入容器修改一些配置

shell 复制代码
docker exec -it 容器id bashShell 			# 进入容器后新开一个终端, 可以在里面操作

root@DESKTOP-GC42A9O:/mnt/c/Users/dcs# docker exec -it 60c79e9079ae /bin/bash

root@60c79e9079ae /# ls

bin etc lib lost+found mnt proc run srv tmp var

dev home lib64 media opt root sbin sys usr

shell 复制代码
docker attach 容器id				# 进入容器正在执行的终端,不会启动新的终端
  • 从容器内拷贝文件到主机
shell 复制代码
docker cp 容器id:容器内地址 目的主机地址

# 拷贝是一个手动的过程,未来我们可以使用 -v卷的技术,来实现同步
  • 卷操作
shell 复制代码
root@DESKTOP-GC42A9O:/home# docker volume --help

Usage:  docker volume COMMAND

Manage volumes

Commands:
  create      Create a volume
  inspect     Display detailed information on one or more volumes
  ls          List volumes
  prune       Remove all unused local volumes
  rm          Remove one or more volumes

Run 'docker volume COMMAND --help' for more information on a command.
相关推荐
蓝胖的四次元口袋16 小时前
Docker Compose多容器编排与Nginx集群实战
运维·nginx·docker compose
懂软件的胡子个哥16 小时前
微信 API 消息回调怎么设计,才能避免丢消息和重复处理
运维·微信·架构·wechatapi·个人微信号二次开发
吉甫作诵16 小时前
Redis 常用命令大全:11 大类命令速查手册
运维·数据库·redis·缓存·nosql
Acrellea18 小时前
告别粗放式能耗管理!安科瑞EIOT平台助力产业园区智慧低碳运营
运维·安全·能源
Databuff19 小时前
五款主流 SSH 免费工具介绍
运维·ssh·运维开发
菜鸟学编程o19 小时前
Linux常见指令
linux·运维·服务器
pt104320 小时前
AIOps机器学习——当警报阈值被调高之后
运维·人工智能·自动化
迪康coolmu20 小时前
企业文件外发管控落地实践 —— 基于迪康端点安全一体化管理系统
运维·网络·经验分享·安全
见闻小天地21 小时前
四方电气DL300变频器面向雕铣机多工况的技术参数与适配验证
运维·人工智能·业界资讯
千舟软件21 小时前
【宿舍管理小程序】新生入住不靠纸质表
大数据·运维·服务器·科技·业界资讯