当前位置: 伟德国际1946 > www.xin1946.com > 正文

删除镜像伟德国际1946,网络的基础操作

时间:2019-10-22 20:30来源:www.xin1946.com
文/Anoyi 原文:http://www.itmuch.com/docker/05-docker-command-containers/ 镜像管理 查看本地镜像 # 查看本地的所有镜像docker images# 查看本地镜像,并根据条件筛选docker images | grep "centos" 查找仓库的镜

文/Anoyi

原文:http://www.itmuch.com/docker/05-docker-command-containers/

镜像管理

查看本地镜像

# 查看本地的所有镜像
docker images
# 查看本地镜像,并根据条件筛选
docker images | grep "centos"

查找仓库的镜像

# 向docker仓库查找镜像
docker search <image_name>
# 从docker的官方仓库查找mysql镜像
docker search mysql
# 从docker的私有仓库查找镜像
docker search 192.168.137.101:5000/mysql

拉取镜像

# 从仓库拉取镜像到本地
docker pull <image_name>[:tag]
# 从docker的官方仓库下载mysql镜像
docker pull mysql:5.6
# 从docker官方仓库下载最新的mysql镜像
docker pull mysql
# 从docker的私有仓库下载mysql镜像
docker pull 192.168.137.101:5000/mysql:5.6

推送镜像

# 从本地上传镜像到docker仓库
docker push <image_name>[:tag]
# 上传helloworld镜像到docker官方仓库(此时需要帐号信息)
docker push helloworld:1.0
# 上传registry.mateng.pers:5000/helloworld镜像到私有仓库
docker push registry.mateng.pers:5000/helloworld:1.0

删除镜像

# 删除本地镜像(通过镜像id或者镜像名称删除)
docker rmi <image_name>[:tag]
docker rmi <image_id>
# 删除mysql镜像
docker rmi mysql:5.6

创建目标镜像

# 重新给镜像打标签和命名,相当于复制一份镜像并重新命名
docker tag <image_name>[:tag] <image_name>[:tag]
# 将helloword的镜像复制一份,
# 并命名为registry.mateng.pers:5000/hello-world,其版本号为1.0
# registry.mateng.pers:5000为docker私有仓库的地址
docker tag hello-world registry.mateng.pers:5000/hello-world:1.0

参考资料

  • https://docs.docker.com/engine/reference/commandline/image/

为了更好的理解如何管理 Docker Swarm 下服务的网络,本文先介绍 Docker 网络的基础操作。

本节我们来讨论Docker容器的常用命令。

容器管理

容器启动停止

# 启动镜像,并执行相应的命令,命令可以附加一部分参数
docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]
# 启动helloword镜像为容器,容器的名称是my-first-docker
docker run -d --name my-tomcat -p 8080:8080 tomcat:8.0

# 根据容器的id或名称停止一个已启动的容器
docker stop <CONTAINER_ID|CONTAINER_NAME>
docker stop my-tomcat

# 根据容器的id或名称启动一个已停止的容器
docker start <CONTAINER_ID|CONTAINER_NAME>
docker start my-tomcat

# 根据容器的id或名称重启
docker restart <CONTAINER_ID|CONTAINER_NAME>
docker restart my-tomcat

# 删除容器,删除容器时,容器必须是停止状态
docker rm <CONTAINER_ID|CONTAINER_NAME>
docker rm my-tomcat

docker常用启动参数(OPTIONS)说明

参数 描述
--name 指定容器启动后的名称,如果不指定名称,docker会随机一个
--restart=always 自动重启,在容器意外停止,状态异常或机器重启等情况会自动重启)
--restart=no 不自动重启
--restart=on-failure[:max-retries] on-failure:启动失败时自动重启,并支持尝试次数
--link [container_name] 链接某个容器,在容器内部可以使用容器名代替ip进行访问,有效的屏蔽了ip
-d 后台运行,会返回一个容器id
-i 容器启动后可以给容器输入命令
-t 容器启动后分配一个tty终端,通常-i和-t配合使用
-e 设置环境变量,-e JAVA_HOME="/usr/local/java"
-p <HOST_PORT>:<CONTAINER_PORT> 将容器的端口映射到宿主的端口上
-v <HOST_PATH>:<CONTAINER_PATH> 将容器的文件路径映射到宿主机的文件路径上
-m <xGB> 内存使用的上限,-m 2GB
-dns <ip> 使用相应的ip作为dns服务,例如:-dns 8.8.8.8,默认使用宿主机的dns

参考地址

  • https://docs.docker.com/engine/reference/commandline/run/
  • https://docs.docker.com/engine/reference/commandline/start/
  • https://docs.docker.com/engine/reference/commandline/restart/
  • https://docs.docker.com/engine/reference/commandline/stop/

容器的监控与运维

# 查看已经启动的容器
docker ps
# 显示出来所有容器(包括曾经运行过,目前已停止的容器)
docker ps -a

# 显示容器的最新的日志,-f选项就好比Shell终端中的“tail -f”中的-f选项
docker logs [-f] <CONTAINER_ID|CONTAINER_NAME>

# 显示指定的每一个容器的当前负载,比如CPU占用率、内存使用率以及网络流量等
docker status <CONTAINER_ID|CONTAINER_NAME>

# 该命令将容器的所有配置信息以JSON的格式转储出来显示
docker inspect <CONTAINER_ID|CONTAINER_NAME>

# 进入正在运行的容器(已过时,推荐使用docker exec)
docker attach <CONTAINER_ID|CONTAINER_NAME>
# 进入正在运行的容器,并进入一个终端,可以执行shell部分命令
docker exec -it <CONTAINER_ID|CONTAINER_NAME> /bin/bash

# 该命令显示容器与宿主机之间的所有端口映射信息
docker port <CONTAINER_ID|CONTAINER_NAME>

# 拷贝容器内容文件到宿主机
docker cp <CONTAINER_ID|CONTAINER_NAME>:容器的目录 宿主机的目录

► 创建网络

https://docs.docker.com/engine/reference/commandline/network_create/

用法

docker network create [参数] NETWORK

可选参数

简写 参数 默认值 描述
--attachable 允许人工添加容器到此网络
--aux-address 网络驱动程序使用的辅助的 IPv4 或 IPv6 地址
--config-from 从配置文件中的网络配置
--config-only 仅配置文件有效
-d --driver bridge 网络驱动(bridge、overlay)
--gateway 主子网的 IPv4 或 IPv6 网关
--ingress 创建 Swarm ​​路由网状网络
--internal 限制对网络的外部访问
--ip-range 容器可分配的IP范围
--ipam-driver IP地址驱动
--ipam-opt 设置 IPAM 驱动的指定参数
--ipv6 允许 IPv6
--label 设置元数据
-o --opt 设置驱动的指定参数
--scope 控制网络的范围
--subnet 以 CIDR 格式表示网段的子网

示例
创建一个网络

docker network create -d overlay 
  --attachable 
  --subnet=192.168.0.0/16 
  --gateway=192.168.0.100 
  --aux-address="anoyi=192.168.1.5" 
  user_network

新建并启动容器[重要]

使用以下docker run 命令即可新建并启动一个容器。该命令是我们最常用的命令了,它有很多选项,下面笔者列举一些常用的选项。

① -d选项:表示后台运行

② -P选项:随机端口映射

③ -p选项:指定端口映射,有以下四种格式。

ip:hostPort:containerPort

ip::containerPort

hostPort:containerPort

containerPort

④ --network选项:指定网络模式,该选项有以下可选参数:

--network=bridge: 默认选项,表示连接到默认的网桥。

--network=host:容器使用宿主机的网络。

--network=container:NAME_or_ID:告诉Docker让新建的容器使用已有容器的网络配置。

--network=none:不配置该容器的网络,用户可自定义网络配置。

示例1:

docker run java /bin/echo 'Hello World'

这样终端会打印Hello World的字样,跟在本地直接执行/bin/echo 'Hello World' 一样。

示例2:

docker run -d -p 91:80 nginx

这样就能启动一个Nginx容器。在本例中,我们为docker run添加了两个参数,含义如下:

-d                           # 后台运行
-p 宿主机端口:容器端口         # 开放容器端口到宿主机端口

访问http://Docker宿主机IP:91/ ,将会看到如图12-3的界面:

伟德国际1946 1

12-3.png

图12-3 Nginx首页

TIPS

需要注意的是,使用docker run命令创建容器时,会先检查本地是否存在指定镜像。如果本地不存在该名称的镜像,Docker就会自动从Docker Hub下载镜像并启动一个Docker容器。

网络管理

待续。。。

► 网络列表

https://docs.docker.com/engine/reference/commandline/network_ls/

用法

docker network ls [参数]

可选参数

简写 参数 默认值 描述
-f --filter 过滤 (例 ‘driver=bridge’)
--format 格式转化
--no-trunc 不要截断输出
-q --quiet 仅显示网络ID

示例

user_network 即为上面创建的网络

列出容器[重要]

使用docker ps 命令即可列出运行中的容器。执行该命令后,可看到类似于如下的表格。

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                         NAMES
784fd3b294d7        nginx               "nginx -g 'daemon off"   20 minutes ago      Up 2 seconds        443/tcp, 0.0.0.0:91->80/tcp   backstabbing_archimedes

如需列出所有容器(包括已停止的容器),可使用-a参数。

该表格包含了七列,含义如下:

① CONTAINER_ID:表示容器ID。

② IMAGE:表示镜像名称。

③ COMMAND:表示启动容器时运行的命令。

④ CREATED:表示容器的创建时间。

⑤ STATUS:表示容器运行的状态。Up表示运行中,Exited表示已停止。

⑥ PORTS:表示容器对外的端口号。

⑦ NAMES:表示容器名称。该名称默认由Docker自动生成,也可使用docker run命令的--name选项自行指定。

命令格式:

docker ps [OPTIONS]

参数:

Name, shorthand Default Description
--all, -a false 列出所有容器,包括未运行的容器,默认只展示运行的容器
--filter, -f 根据条件过滤显示内容
--format 通过Go语言模板文件展示镜像
--last, -n -1 显示最近创建n个容器(包含所有状态)
--latest, -l false 显示最近创建的容器(包含所有状态)
--no-trunc false 不截断输出
--quiet, -q false 静默模式,只展示容器的编号
--size, -s false 显示总文件大小

示例:

docker ps -n 5
docker ps -a -q

数据卷管理

待续。。。

► 网络详情

https://docs.docker.com/engine/reference/commandline/network_inspect/

用法

docker network inspect [参数] NETWORK [NETWORK...]

可选参数

简写 参数 默认值 描述
-f --format 格式转化
-v --verbose 详细输出用于诊断

示例

docker network inspect user_network

停止容器[重要]

使用docker stop 命令,即可停止容器。

命令格式:

docker stop [OPTIONS] CONTAINER [CONTAINER...]

参数:

Name, shorthand Default Description
--time, -t 10 强制杀死容器前等待的时间,单位是秒

示例:

docker stop 784fd3b294d7

其中784fd3b294d7 是容器ID,当然也可使用docker stop 容器名称 来停止指定容器。

其他

# 查看docker的基本信息
docker info

# 查看docker版本
docker version

# 批量清理已停止的容器
docker rm -f $(docker ps -qa)

# 删除没有标签的镜像
docker rmi $(docker images | grep "^<none>" | awk "{print $3}")


# 批量删除孤单的 volumes
docker volume ls -qf dangling=true
docker volume rm $(docker volume ls -qf dangling=true)

► 容器连接网络

用法

docker network connect [参数] NETWORK CONTAINER

可选参数

简写 参数 默认值 描述
--alias 为容器添加网络别名
--ip IPv4 地址 (如 172.30.100.104)
--ip6 IPv6 地址 (如 2001:db8::33)
--link 连接到其他容器
--link-local-ip 容器连接到本地地址

示例

1、启动一个 Nginx 容器

docker run -d --name nginx nginx

2、将 nginx 容器连接到 user_network 网络

docker network connect user_network nginx

3、查看 nginx 容器详情

docker inspect nginx

强制停止容器[重要]

可使用docker kill 命令停止一个或更多运行着的容器。

命令格式:

docker kill [OPTIONS] CONTAINER [CONTAINER...]

参数:

Name, shorthand Default Description
--signal, -s KILL 向容器发送一个信号

例如:

docker kill 784fd3b294d7

► 容器断开网络

用法

docker network disconnect [参数] NETWORK CONTAINER

可选参数

简写 参数 默认值 描述
-f --force 强制容器与网络断开连接

示例

断开 nginx 容器与 user_network 网络的连接

docker network disconnect -f user_network nginx

启动已停止的容器[重要]

使用docker run 命令,即可新建并启动一个容器。对于已停止的容器,可使用docker start 命令来启动。

命令格式:

docker start [OPTIONS] CONTAINER [CONTAINER...]

参数:

Name, shorthand Default Description
--attach, -a false 连接STDOUT/STDERR并转发信号
--checkpoint 从该检查点还原
--checkpoint-dir 使用自定义的检查点存储目录
--detach-keys 覆盖断开容器的关键顺序
--interactive, -i false 连接容器的STDIN

例如:

docker start 784fd3b294d7

► 删除网络

删除指定网络

docker network rm NETWORK [NETWORK...]

批量删除无用网络

docker network prune [参数]

可选参数

简写 参数 默认值 描述
--filter 过滤 (如 ‘until=')
-f --force 强制容器与网络断开连接

重启容器[重要]

可使用docker restart 命令来重启容器。该命令实际上是先执行了docker stop 命令,然后执行了docker start 命令。

命令格式:

docker restart [OPTIONS] CONTAINER [CONTAINER...]

参数:

Name, shorthand Default Description
--time, -t 10 关闭容器前等待的时间,单位是秒

进入容器[重要]

某场景下,我们可能需要进入运行中的容器。

① 使用docker attach 命令进入容器。

例如:

docker attach 784fd3b294d7

很多场景下,使用docker attach 命令并不方便。当多个窗口同时attach到同一个容器时,所有窗口都会同步显示。同理,如果某个窗口发生阻塞,其他窗口也无法执行操作。

② 使用nsenter 进入容器

nsenter工具包含在util-linux 2.23或更高版本中。为了连接到容器,我们需要找到容器第一个进程的PID,可通过以下命令获取:

docker inspect --format "{{.State.Pid}}" $CONTAINER_ID

获得PID后,就可使用nsenter命令进入容器了:

nsenter --target "$PID" --mount --uts --ipc --net --pid

下面给出一个完整的例子:

[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                         NAMES
784fd3b294d7        nginx               "nginx -g 'daemon off"   55 minutes ago      Up 3 minutes        443/tcp, 0.0.0.0:91->80/tcp   backstabbing_archimedes
[root@localhost ~]# docker inspect --format "{{.State.Pid}}" 784fd3b294d7
95492
[root@localhost ~]# nsenter --target 95492 --mount --uts --ipc --net --pid
root@784fd3b294d7:/# 

读者也可将以上两条命令封装成一个Shell,从而简化进入容器的过程。

③ docker exec

docker exec -it 容器id /bin/bash

删除容器[重要]

使用docker rm 命令即可删除指定容器。

命令格式

docker rm [OPTIONS] CONTAINER [CONTAINER...]

参数:

Name, shorthand Default Description
--force, -f false 通过SIGKILL信号强制删除正在运行中的容器
--link, -l false 删除容器间的网络连接
--volumes, -v false 删除与容器关联的卷

例1:删除指定容器。

docker rm 784fd3b294d7

该命令只能删除已停止的容器,如需删除正在运行的容器,可使用-f参数。

例2:删除所有的容器。

docker rm -f $(docker ps -a -q)

导出容器

将容器导出成一个压缩包文件。

命令格式:

docker export [OPTIONS] CONTAINER

参数:

Name, shorthand Default Description
--output, -o 将内容写到文件而非STDOUT

示例:

docker export red_panda > latest.tar
docker export --output="latest.tar" red_panda

导入容器

使用docker import 命令即可从归档文件导入内容并创建镜像。

命令格式:

docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]

参数:

Name, shorthand Default Description
--change, -c 将Dockerfile指令应用到创建的镜像
--message, -m 为导入的镜像设置提交信息

示例:

docker import nginx2.tar nginx

拓展阅读

  • Docker的网络:https://docs.docker.com/engine/userguide/networking/
  • Docker命令:https://docs.docker.com/engine/reference/commandline/docker/

编辑:www.xin1946.com 本文来源:删除镜像伟德国际1946,网络的基础操作

关键词:

  • 上一篇:没有了
  • 下一篇:没有了