docker基本命令学习 | Docker网络、Docker镜像发布

这篇具有很好参考价值的文章主要介绍了docker基本命令学习 | Docker网络、Docker镜像发布。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

docker基本命令学习 | Docker网络、Docker镜像发布

💗wei_shuo的个人主页

💫wei_shuo的学习社区

🌐Hello World !


docker安装、卸载

docker安装使用

  • 卸载旧版本docker或者环境
[root@iZf8zdcobr3fw7vn0p3538Z /]# yum remove docker \
>                   docker-client \
>                   docker-client-latest \
>                   docker-common \
>                   docker-latest \
>                   docker-latest-logrotate \
>                   docker-logrotate \
>                   docker-engine
Loaded plugins: fastestmirror
No Match for argument: docker
No Match for argument: docker-client
No Match for argument: docker-client-latest
No Match for argument: docker-common
No Match for argument: docker-latest
No Match for argument: docker-latest-logrotate
No Match for argument: docker-logrotate
No Match for argument: docker-engine
No Packages marked for removal
[root@iZf8zdcobr3fw7vn0p3538Z /]# 
  • 安装需要的安装包
[root@iZf8zdcobr3fw7vn0p3538Z /]# yum install -y yum-utils
Complete!
  • 设置镜像仓库(配置阿里云镜像源)

官方镜像源(国外站点,国内不建议使用)

yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

阿里云镜像源

yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@iZf8zdcobr3fw7vn0p3538Z /]# yum-config-manager \
>     --add-repo \
>     https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
Loaded plugins: fastestmirror
adding repo from: https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
grabbing file https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo
repo saved to /etc/yum.repos.d/docker-ce.repo
  • 更新yum软件包索引
[root@iZf8zdcobr3fw7vn0p3538Z /]# yum makecache fast
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
base                                                                                     | 3.6 kB  00:00:00     
docker-ce-stable                                                                         | 3.5 kB  00:00:00     
epel                                                                                     | 4.7 kB  00:00:00     
extras                                                                                   | 2.9 kB  00:00:00     
updates                                                                                  | 2.9 kB  00:00:00     
(1/2): docker-ce-stable/7/x86_64/updateinfo                                              |   55 B  00:00:00     
(2/2): docker-ce-stable/7/x86_64/primary_db                                              | 102 kB  00:00:00     
Metadata Cache Created
  • 安装docker
yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

[root@iZf8zdcobr3fw7vn0p3538Z /]# yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Complete!
  • 运行docker
[root@iZf8zdcobr3fw7vn0p3538Z /]# systemctl start docker
  • 检查docker版本
[root@iZf8zdcobr3fw7vn0p3538Z /]# docker version
Client: Docker Engine - Community
 Version:           23.0.3
 API version:       1.42
 Go version:        go1.19.7
 Git commit:        3e7cbfd
 Built:             Tue Apr  4 22:04:18 2023
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          23.0.3
  API version:      1.42 (minimum version 1.12)
  Go version:       go1.19.7
  Git commit:       59118bf
  Built:            Tue Apr  4 22:02:01 2023
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.20
  GitCommit:        2806fc1057397dbaeefbea0e4e17bddfbd388f38
 runc:
  Version:          1.1.5
  GitCommit:        v1.1.5-0-gf19387a
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0
  • 运行hello word检查docker是否安装成功
[root@iZf8zdcobr3fw7vn0p3538Z /]# docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
2db29710123e: Pull complete 
Digest: sha256:4e83453afed1b4fa1a3500525091dbfca6ce1e66903fd4c01ff015dbcb1ba33e
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/
  • 查看镜像
[root@iZf8zdcobr3fw7vn0p3538Z /]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
hello-world   latest    feb5d9fea6a5   18 months ago   13.3kB

docker卸载

  • 卸载 Docker Engine、CLI、containerd 和 Docker Compose 软件包
yum remove docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
  • 删除所有映像、容器和卷
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

阿里云镜像加速

docker基本命令学习 | Docker网络、Docker镜像发布

  • 配置使用
#创建目录
sudo mkdir -p /etc/docker

#配置阿里云地址
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://gp2nlhk0.mirror.aliyuncs.com"]
}
EOF

#重启镜像
sudo systemctl daemon-reload

#重启docker
sudo systemctl restart docker
[root@iZf8zdcobr3fw7vn0p3538Z /]# sudo mkdir -p /etc/docker
[root@iZf8zdcobr3fw7vn0p3538Z /]# sudo tee /etc/docker/daemon.json <<-'EOF'
> {
>   "registry-mirrors": ["https://gp2nlhk0.mirror.aliyuncs.com"]
> }
> EOF
{
  "registry-mirrors": ["https://gp2nlhk0.mirror.aliyuncs.com"]
}
[root@iZf8zdcobr3fw7vn0p3538Z /]# sudo systemctl daemon-reload
[root@iZf8zdcobr3fw7vn0p3538Z /]# sudo systemctl restart docker

帮助命令

镜像命令 解释
docker version docker info
docker info 显示docker的系统信息,包括镜像和容器的数量
docker 命令 --help 帮助命令

镜像命令

镜像命令 解释
dokcer images 查看所有本地的主机上的镜像
docker search 搜索镜像
docker pull 下载镜像
docker rmi 删除镜像

容器命令

docker run [可选参数] image 新建容器并启动

可选参数 解释
–name=“name” 容器名字:用来区分容器
-d 后台方式运行:相当于nohup
-it 使用交互式运行:进入容器查看内容
-p 指定容器的端口(四种方式)小写字母p
-p ip:主机端口:容器端口
-p 主机端口:容器端口
-p 容器端口
-P 随机指定端口(大写字母P)
exit 从容器中退回到主机
容器命令 解释
docker ps 列出所有运行的容器
docker rm 容器id 删除容器
docker rm -f 容器id 强制删除
docker rm -f $(docker ps -aq) 删除全部容器
docker ps -a -q xargs docker rm 删除所有容器
docker start 容器id 启动容器
docker restart 容器id 重启容器
docker stop 容器id 停止当前正在运行的容器
docker kill 容器id 强制停止当前容器
docker run -d 镜像名 后台启动容器
docker logs -tf --tail 容器id 查看日志
-tf 显示日志
–tail number 要显示的日志条数
docker top 容器id 查看容器中进程的信息
docker inspect 容器id 查看镜像的元数据
docker exec -it 容器id /bin/bash 进入当前正在运行的容器
docker attach 容器id 进入当前正在运行的容器
docker cp 容器id:容器内路径 目的主机的路径 从容器内拷贝文件到主机上

可视化portainer

Docker图形化界面管理工具,提供一个后台面板供我们操作

docker run -d -p 8088:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer

Docker镜像

docker基本命令学习 | Docker网络、Docker镜像发布

UnionFS(联合文件系统)

Union文件系统(UnionFS)是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下,Union 文件系统是Docker 镜像的基础,镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像

Commit镜像

提交容器成为一个新的副本

docker commit

命令和git原理类似

docker commit -m="提交的描述信息" -a="作者" 容器id 目标镜像名:[TAG]

容器数据卷

数据的持久化,完全独立于容器的生存周期,因此Docker不会在容器删除时删除其挂载的数据卷

默认路径:/var/lib/docker/volumes/xxxx/_data

容器数据卷

docker run -it -v 主机目录:容器内目录 镜像名 /bin/bash

测试,查看容器信息

docker inspect 容器id

数据卷容器

数据容器卷的内容会随着容器的删除而被删除;数据卷是供容器使用的特殊目录,可以实现数据在宿主机与容器之间的迁移,而数据容器卷的修改操作只能在挂载它的容器中可见,不会影响到宿主机

实现两个容器数据同步

docker run -d -p 7777:3306 -e MYSQL_ROOT_PASSWORD=123456 --name mysql02 --volumes-from mysql01 mysql:5.7
docker run -d -p 7777:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7

具名挂载、匿名挂载

具名挂载、匿名挂载:区分

-v 容器内的路径                			# 匿名挂载
-v 卷名:容器内的路径        			  # 具名挂载
-v /宿主机路径:容器内路径    				# 指定路径挂载

通过: -v [容器内的路径]:ro或rw 改变读写权限

docker run -d -p 3344:80 --name nginx02 -v juming-nginx:/etc/nginx:ro nginx
#只要看到ro就说明这个路径只能通过宿主机来操作,容器内部是无法操作

DockerFile

docker基本命令学习 | Docker网络、Docker镜像发布

  • 编写一个dockerfile文件
  • docker build 构建成为一个镜像
  • docker run运行镜像
  • docker push发布镜像(DockerHub、阿里云镜像仓库)
  • FROM # 基础镜像,一切从这里开始构建
  • MAINTAINER # 镜像是谁写的:姓名+邮箱
  • RUN # 镜像构建的时候需要运行的命令
  • ADD # 步骤:tomcat镜像,这个tomcat压缩包!添加内容
  • WORKDIR # 镜像的工作目录
  • VOLUME # 挂载的目录
  • EXPOSE # 暴露端口配置
  • CMD # 指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代
  • ENTRYPOINT # 指定这个容器启动的时候要运行的命令,可以追加命令
  • ONBUILD # 当构建一个被继承DockerFile这个时候就会运行ONBUILD的指令。触发指令。
  • COPY # 类似ADD,将我们文件拷贝到镜像中
  • ENV # 构建的时候设置环境变量!

docker基本命令学习 | Docker网络、Docker镜像发布

CMD和ENTRYPOINT

  • CMD:指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代
  • ENTRYPOINT:指定这个容器启动的时候要运行的命令,可以追加命令

镜像发布

DockerHub

  • docker login -u 用户名

  • docker push 账号id/tomcat:1.0

阿里云镜像仓库

  • $ docker login --username=aliyun9721004936 registry.cn-qingdao.aliyuncs.com
  • $ docker tag [ImageId] registry.cn-qingdao.aliyuncs.com/weishuo-student/weishuo-study:[镜像版本号]
  • $ docker push registry.cn-qingdao.aliyuncs.com/weishuo-student/weishuo-study:[镜像版本号]

Docker网络

docker基本命令学习 | Docker网络、Docker镜像发布

Docker网络是Docker容器之间和容器与主机之间通信的机制。Docker提供了多种网络模式,使得容器可以相互通信,也可以与主机进行通信。

以下是Docker支持的网络模式:

  • 桥接模式:默认模式,每个容器都有自己的IP地址,并且可以通过容器名称或IP地址相互访问。
  • 主机模式:容器和主机共享同一个网络命名空间,容器使用主机的IP地址和端口。
  • none模式:容器没有网络接口,只能通过主机进行访问。
  • Overlay模式:用于跨主机容器通信的网络模式,使用VXLAN技术实现
Docker网络基础命令
docker network ls 列出所有 Docker 网络
docker network create 创建一个新的 Docker 网络
docker network connect 将容器连接到指定的 Docker 网络
docker network disconnect 将容器从指定的 Docker 网络中断开连接
docker network inspect 查看指定 Docker 网络的详细信息
docker network rm 删除指定的 Docker 网络
docker network prune 删除所有未被使用的 Docker 网络

evth-pair

evth-pair是Linux内核中的一种虚拟网络设备,它通常用于将两个网络命名空间连接起来,以便容器或虚拟机可以直接通信;evth-pair设备由一对虚拟网络接口组成,它们被视为一条虚拟电缆,数据可以从一个接口传输到另一个接口;当一个接口收到数据包时,它将数据包传输到它的对等接口,然后对等接口将数据包传输到目标设备;

–link

--link是Docker命令中的一个选项,用于连接两个容器并创建一个安全的隧道。使用--link选项,您可以将一个容器连接到另一个容器,并将源容器中的环境变量传递到目标容器中。这使得容器之间可以直接通信,而无需暴露它们的端口给外部网络

  • [服务名1] ping [服务名2]
docker run exec -it --link [服务名1] [服务名2] 

自定义网络

  • bridge:桥接 docker(默认,自己创建也使用bridge桥接模式)
  • none:不配置网络
  • host:和主机共享网络
  • container:容器网络连通
docker network connect [options] network container

Docker部署Redis集群

Docker部署Springboot微服务

  • 创建Springboot项目(运行成功Hello,World!)
  • 项目打包

docker基本命令学习 | Docker网络、Docker镜像发布

docker基本命令学习 | Docker网络、Docker镜像发布

  • 测试jar包是否可用(进入项目命令cmd执行)

docker基本命令学习 | Docker网络、Docker镜像发布

  • 拷贝jar包到Dokerfile同级目录;编写Dokerfile文件

docker基本命令学习 | Docker网络、Docker镜像发布

  • 使用xftp工具将Dockerfile和jar包传到服务器

docker基本命令学习 | Docker网络、Docker镜像发布

docker基本命令学习 | Docker网络、Docker镜像发布

  • 构建镜像
docker build -t weishuo .

docker基本命令学习 | Docker网络、Docker镜像发布

  • 运行镜像
[root@iZf8zdcobr3fw7vn0p3538Z idea]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
weishuo      latest    dd147b2cb2ea   3 minutes ago   661MB
[root@iZf8zdcobr3fw7vn0p3538Z idea]# docker run -d -P --name springboot-web weishuo
f6f184183f020a8e5033933bc716448318f0c352ba8eab832dc4c386fec66d31

docker基本命令学习 | Docker网络、Docker镜像发布

  • 测试
[root@iZf8zdcobr3fw7vn0p3538Z idea]# curl localhost:32771
Hello,World!

🌼 结语:创作不易,如果觉得博主的文章赏心悦目,还请——点赞👍收藏⭐️评论📝


docker基本命令学习 | Docker网络、Docker镜像发布文章来源地址https://www.toymoban.com/news/detail-469408.html

到了这里,关于docker基本命令学习 | Docker网络、Docker镜像发布的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【超全面】Docker使用:基本安装 + 常用命令 + 安装mysql、redis、clickhouse + 使用数据卷安装 + 制作镜像

    Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。 容器是完全使用沙箱机制,相互之间不会有任何接口(类似

    2024年02月01日
    浏览(66)
  • Docker | 发布镜像到镜像仓库

    ✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏:Docker系列 ✨特色专栏: MySQL学习 🥭本文内容:Docker | 发布镜像到镜像仓库 📚个人知识库: Leo知识库,欢迎大家访问 大家好,我是Leo哥🫣🫣🫣

    2024年02月03日
    浏览(50)
  • 群晖Docker套件注册Harbor私有镜像仓库,并下载运行自己发布的Docker镜像

    @[群晖Docker套件注册Harbor私有镜像仓库,并下载运行自己发布的Docker镜像] 在进行微服务开发时,一些基础服务组件(Nacos、Redis、Mysql)的运行以及越来越多的业务服务组件的开发,会导致开发者电脑的内存资源紧张,此时我们可以把一些基础服务组件和基本业务组件(认证中

    2024年02月05日
    浏览(51)
  • Visual Studio发布 Docker 镜像

    1.搭建一个ASP.NET Core Web API 项目,其他类型项目原理类似。 2.配置新项目,项目名称为DockerDemo *3. 配置信息勾选启用Docker,并选择Docker OS 环境为 Linux.(根据实际情况选择) 4.完成配置后,会发现生成的项目文件中有一个DockerFile 文件,代表Docker支持已经添加 5.添加测试代码 首先我

    2024年02月14日
    浏览(36)
  • Docker本地镜像发布到阿里云

    我们构建了自己的镜像后,可以发布到远程镜像提供给其他人使用,比如发布到阿里云 使用build/commit生成新的镜像,并生成自己镜像的版本标签tag,此新的镜像在自己的本地库中,使用push可以将镜像提交到阿里云公有库/私有库,使用pull从公有库/私有库中拉取镜像 1 编写D

    2024年02月16日
    浏览(43)
  • docker 本地镜像发布到私有库

    1、下载镜像 Docker Registry 2、运行私有库Registry,相当于本地有个私有Docker hub 默认情况,仓库被创建在容器的/var/lib/registry目录下,建议自行用容器卷映射,方便于宿主机联调 3、commit 提交自己制作的新镜像 4、curl验证私服库上有什么镜像 5、将新镜像 new-ubt:1.1 修改符合私服规

    2024年02月10日
    浏览(39)
  • Docker本地镜像发布到私有库

    使用Docker Registry,可以创建私有或公共的镜像仓库,以存储Docker镜像。私有仓库可以用于存储公司内部的镜像,或者用于个人项目的镜像。公共仓库则会将发布的镜像分享到全世界。 1 官方Docker Hub地址:https://hub.docker.com/,中国大陆访问太慢了且有被阿里云取代的趋势,不太

    2024年02月16日
    浏览(45)
  • Docker 本地镜像发布到私有仓库

      1 官方Docker Hub地址:https://hub.docker.com/,中国大陆访问太慢了且准备被阿里云取代的趋势,不太主流。 2 Dockerhub、阿里云这样的公共镜像仓库可能不太方便,涉及机密的公司不可能提供镜像给公网,所以需要创建一个本地私人仓库供给团队使用,基于公司内部项目构建镜像

    2024年02月13日
    浏览(40)
  • Docker打包镜像(三种方式)并发布到Docker Hub

             公司项目发生较大改动(添加表、重要文件备份、自动脚本上传),在原有的项目镜像基础下重新打包生成新的镜像,并发布到Docker Hub上,( 注意 :以下命令全程管理员操作,非管理员操作则在命令前自行添加sudo) 一、基于docker容器Commit命令打包 二、基于d

    2024年02月08日
    浏览(43)
  • 五、Docker镜像发布到阿里云/私有库

    学习参考:尚硅谷Docker实战教程、Docker官网、其他优秀博客(参考过的在文章最后列出) 我们可以把自己的镜像文件存放到阿里云,也可以存到自己的私服。 阿里云容器服务 登录阿里云—搜索容器镜像服务—创建个人实例–进入个人实例 创建明明空间 点击创建后会提示输入

    2024年02月11日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包