【2023.06.04】docker初见(二)

2023-11-26 00:20
文章标签 docker 04 初见 2023.06

本文主要是介绍【2023.06.04】docker初见(二),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

  • 写在前面
  • 正文开始
    • 容器连接
      • 网络端口映射
    • Docker容器互联
      • 新建网络
      • 连接容器
    • Docker仓库管理
      • 登录和退出
      • 拉取镜像
      • 推送镜像
  • 参考文献

写在前面

西安触犯天条了,为何一直下雨,卑微只能一直写博客~

正文开始

容器连接

网络端口映射

我们创建了一个 python 应用的容器。

hetao@ubuntu-server:~$ docker run -d -P training/webapp python app.py
b741faa763792c5a8a2b03b7b486ab0bd12335769f28ddeb2ac95d4de51d5a3f

我们也可以使用 -p 标识来指定容器端口绑定到主机端口。

hetao@ubuntu-server:~$ docker run -d -p 10.69.47.84:5001:5000 training/webapp python app.py
044c93bcef9fb1ead21ebe195bd94595f599bd352cc3a4e39f71e1c879c790a8

网络端口映射
上面的例子中,默认都是绑定 tcp 端口,如果要绑定 UDP 端口,可以在端口后面加上 /udp。

hetao@ubuntu-server:~$ docker run -d -p 10.69.47.84:5001:5000/udp training/webapp python app.py
2d641c02299273a12a157107cad6e9dab2e2137a850c0462009fb474ab9cc698
hetao@ubuntu-server:~$ docker ps
CONTAINER ID   IMAGE             COMMAND           CREATED              STATUS              PORTS                                  NAMES
2d641c022992   training/webapp   "python app.py"   10 seconds ago       Up 9 seconds        5000/tcp, 10.69.47.84:5001->5000/udp   wonderful_shirley
044c93bcef9f   training/webapp   "python app.py"   About a minute ago   Up About a minute   10.69.47.84:5001->5000/tcp             unruffled_villani
b741faa76379   training/webapp   "python app.py"   2 minutes ago        Up 2 minutes        0.0.0.0:32769->5000/tcp                pensive_buck
f8debcc9cc39   training/webapp   "python app.py"   2 days ago           Up 2 days           0.0.0.0:5000->5000/tcp                 dreamy_satoshi
2540a694c55d   training/webapp   "python app.py"   2 days ago           Up 2 days           0.0.0.0:32768->5000/tcp                beautiful_dewdney

Docker容器互联

端口映射并不是唯一把 docker 连接到另一个容器的方法。
docker 有一个连接系统允许将多个容器连接在一起,共享连接信息。
docker 连接会创建一个父子关系,其中父容器可以看到子容器的信息。

新建网络

新建一个Docker网络。

hetao@ubuntu-server:~$ docker network create -d bridge test-net
a2d74320966506d650ed5530064e87dcc6858cb5cec3bbf0dca951cfe11cd991
hetao@ubuntu-server:~$ docker network ls
NETWORK ID     NAME       DRIVER    SCOPE
87ef7dba6602   bridge     bridge    local
2d54db833d93   host       host      local
df192dcbf1ec   none       null      local
a2d743209665   test-net   bridge    local

参数说明:
network

连接容器

运行一个容器并连接到新建的 test-net 网络:

docker run -itd --name test1 --network test-net ubuntu /bin/bash

打开新的终端,再运行一个容器并加入到 test-net 网络:

docker run -itd --name test2 --network test-net ubuntu /bin/bash

下面通过 ping 来证明 test1 容器和 test2 容器建立了互联关系。
如果 test1、test2 容器内中无 ping 命令,则在容器内执行以下命令安装 ping(即学即用:可以在一个容器里安装好,提交容器到镜像,在以新的镜像重新运行以上俩个容器)。

apt-get update
apt install iputils-ping

在test2容器输入以下命令:

hetao@ubuntu-server:~$ docker exec -it test2 /bin/bash
root@78d6dbe07230:/# ping test1
PING test1 (172.18.0.2) 56(84) bytes of data.
64 bytes from test1.test-net (172.18.0.2): icmp_seq=1 ttl=64 time=0.162 ms
64 bytes from test1.test-net (172.18.0.2): icmp_seq=2 ttl=64 time=0.104 ms
64 bytes from test1.test-net (172.18.0.2): icmp_seq=3 ttl=64 time=0.083 ms
^C
--- test1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2046ms
rtt min/avg/max/mdev = 0.083/0.116/0.162/0.033 ms

这样,test1 容器和 test2 容器建立了互联关系。
如果你有多个容器之间需要互相连接,推荐使用 Docker Compose,后面会介绍。

Docker仓库管理

仓库(Repository)是集中存放镜像的地方。以下介绍一下 Docker Hub。当然不止 docker hub,只是远程的服务商不一样,操作都是一样的。
Docker Hub
目前 Docker 官方维护了一个公共仓库 Docker Hub。
大部分需求都可以通过在 Docker Hub 中直接下载镜像来实现。
注册
在https://hub.docker.com免费注册一个 Docker 账号。

登录和退出

登录需要输入用户名和密码,登录成功后,我们就可以从 docker hub 上拉取自己账号下的全部镜像。

docker login

退出用docker logout即可退出。

拉取镜像

你可以通过docker search命令来查找官方仓库中的镜像,并利用docker pull命令来将它下载到本地。

推送镜像

用户登录后,可以通过 docker push 命令将自己的镜像推送到 Docker Hub。

hetao@ubuntu-server:~$ docker push ttaohe828/ubuntu:15.10
The push refers to repository [docker.io/ttaohe828/ubuntu]
98d59071f692: Mounted from library/ubuntu
af288f00b8a7: Mounted from library/ubuntu
4b955941a4d0: Mounted from library/ubuntu
f121afdbbd5d: Mounted from library/ubuntu
15.10: digest: sha256:63a6f2ab0b72f72d6d42268b3c353af8b254301c39f6ba4c166d72a531abc0bc size: 1150
hetao@ubuntu-server:~$ docker search ttaohe828
NAME               DESCRIPTION   STARS     OFFICIAL   AUTOMATED
ttaohe828/ubuntu

参考文献

docker:菜鸟教程

这篇关于【2023.06.04】docker初见(二)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/424851

相关文章

ubuntu如何部署Dify以及安装Docker? Dify安装部署指南

《ubuntu如何部署Dify以及安装Docker?Dify安装部署指南》Dify是一个开源的大模型应用开发平台,允许用户快速构建和部署基于大语言模型的应用,ubuntu如何部署Dify呢?详细请... Dify是个不错的开源LLM应用开发平台,提供从 Agent 构建到 AI workflow 编排、RA

Docker安装MySQL镜像的详细步骤(适合新手小白)

《Docker安装MySQL镜像的详细步骤(适合新手小白)》本文详细介绍了如何在Ubuntu环境下使用Docker安装MySQL5.7版本,包括从官网拉取镜像、配置MySQL容器、设置权限及内网部署,... 目录前言安装1.访问docker镜像仓库官网2.找到对应的版本,复制右侧的命令即可3.查看镜像4.启

debian12安装docker的实现步骤

《debian12安装docker的实现步骤》本文主要介绍了debian12安装docker的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录步骤 1:更新你的系统步骤 2:安装依赖项步骤 3:添加 docker 的官方 GPG 密钥步骤

Windows Docker端口占用错误及解决方案总结

《WindowsDocker端口占用错误及解决方案总结》在Windows环境下使用Docker容器时,端口占用错误是开发和运维中常见且棘手的问题,本文将深入剖析该问题的成因,介绍如何通过查看端口分配... 目录引言Windows docker 端口占用错误及解决方案汇总端口冲突形成原因解析诊断当前端口情况解

Docker镜像修改hosts及dockerfile修改hosts文件的实现方式

《Docker镜像修改hosts及dockerfile修改hosts文件的实现方式》:本文主要介绍Docker镜像修改hosts及dockerfile修改hosts文件的实现方式,具有很好的参考价... 目录docker镜像修改hosts及dockerfile修改hosts文件准备 dockerfile 文

Docker镜像pull失败两种解决办法小结

《Docker镜像pull失败两种解决办法小结》有时候我们在拉取Docker镜像的过程中会遇到一些问题,:本文主要介绍Docker镜像pull失败两种解决办法的相关资料,文中通过代码介绍的非常详细... 目录docker 镜像 pull 失败解决办法1DrQwWCocker 镜像 pull 失败解决方法2总

通过Docker Compose部署MySQL的详细教程

《通过DockerCompose部署MySQL的详细教程》DockerCompose作为Docker官方的容器编排工具,为MySQL数据库部署带来了显著优势,下面小编就来为大家详细介绍一... 目录一、docker Compose 部署 mysql 的优势二、环境准备与基础配置2.1 项目目录结构2.2 基

关于Docker Desktop的WSL报错问题解决办法

《关于DockerDesktop的WSL报错问题解决办法》:本文主要介绍关于DockerDesktop的WSL报错问题解决办法的相关资料,排查发现是因清理%temp%文件夹误删关键WSL文件,... 目录发现问题排查过程:解决方法其实很简单:重装之后再看就能够查到了:最后分享几个排查这类问题的小www.cp

如何使用Docker部署FTP和Nginx并通过HTTP访问FTP里的文件

《如何使用Docker部署FTP和Nginx并通过HTTP访问FTP里的文件》本文介绍了如何使用Docker部署FTP服务器和Nginx,并通过HTTP访问FTP中的文件,通过将FTP数据目录挂载到N... 目录docker部署FTP和Nginx并通过HTTP访问FTP里的文件1. 部署 FTP 服务器 (

解读docker运行时-itd参数是什么意思

《解读docker运行时-itd参数是什么意思》在Docker中,-itd参数组合用于在后台运行一个交互式容器,同时保持标准输入和分配伪终端,这种方式适合需要在后台运行容器并保持交互能力的场景... 目录docker运行时-itd参数是什么意思1. -i(或 --interactive)2. -t(或 --