Centos中Docker的基本操作、镜像创建、数据管理、私有仓库的建立、端口映射和容器互联

2023-05-16

文章目录

  • 一、Docker概述
    • 1.1 Docker概述
    • 1.2 Docker的核心概念及安装方式
  • 二、Docker的基本操作
    • 2.1 环境准备及优化
    • 2.2 镜像的基本操作
    • 2.3 容器的操作
  • 三、Docker镜像
    • 3.1 Docker镜像的分层
    • 3.2 Docker镜像的创建
    • 3.3 基于已有镜像创建
    • 3.4 基于本地模板创建
    • 3.5 基于Dockerfile创建
  • 四、Docker的数据管理
    • 4.1 数据卷
    • 4.2 数据卷容器
  • 五、私有仓库建立
  • 六、端口映射
  • 七、容器互联

一、Docker概述

1.1 Docker概述

Docker是什么?、

  • 是一种轻量级的“虚拟机”
  • 在Linux容器里运行应用的开源工具

Docker与虚拟机的区别

  • Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
  • 虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。

Docker的使用场景

  • 打包应用程序简化部署
  • 可脱离底层硬件任意迁移,例如:将服务器从腾讯云迁移到阿里云

1.2 Docker的核心概念及安装方式

Docker核心概念

  • 镜像:一个面向Docker容器引擎的只读模板
  • 容器:从镜像创建的运行实例
  • 仓库:集中保存镜像的地方

Centos安装Docker的两种方式

  • 使用URL获得Docker的安装脚本进行安装
  • 使用YUM仓库来安装Docker

二、Docker的基本操作

2.1 环境准备及优化

安装依赖包

[root@docker ~]# yum install yum-utils device-mapper-persistent-data lvm2 -y
'yum-utils提供了yum-config-manager'
'device mapper存储驱动程序需要device-mapper-persistent-data和lvm2'
'Device Mapper是Linux2.6内核中支持逻辑卷管理的通用设备映射机制,它为实现用于存储资源管理的块设备驱动提供了一个高度模块化的内核架构'

设置阿里云镜像源

[root@docker ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安装Docker-CE

[root@docker ~]# yum install docker-ce -y

镜像加速

默认使用公有仓库进行下载,在国内,我们需要进行镜像加速来提高镜像下载速度,这里我用的阿里云的镜像加速
在这里插入图片描述
在这里插入图片描述

[root@docker ~]# systemctl start docker
[root@docker ~]# tee /etc/docker/daemon.json <<-'EOF'
'复制上面那段就可以'
[root@docker ~]# systemctl daemon-reload 
[root@docker ~]# systemctl restart docker

网络优化

[root@docker ~]# vim /etc/sysctl.conf 
net.ipv4.ip_forward=1
[root@docker ~]# sysctl -p
[root@docker ~]# systemctl restart network
[root@docker ~]# systemctl restart docker

2.2 镜像的基本操作

查看docker版本

[root@docker ~]# docker -v
Docker version 19.03.13, build 4484c46d9d

[root@docker ~]# docker version 
Client: Docker Engine - Community
 Version:           19.03.13
 API version:       1.40
 Go version:        go1.13.15
 Git commit:        4484c46d9d
 Built:             Wed Sep 16 17:03:45 2020
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.13
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.13.15
  Git commit:       4484c46d9d
  Built:            Wed Sep 16 17:02:21 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.3.7
  GitCommit:        8fba4e9a7d01810a393d5d25a3621dc101981175
 runc:
  Version:          1.0.0-rc10
  GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dd
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

搜索镜像(公有仓库)

例如:搜索Nginx镜像
[root@docker ~]# docker search nginx
NAME                               DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
nginx                              Official build of Nginx.                        13745               [OK]                
jwilder/nginx-proxy                Automated Nginx reverse proxy for docker con…   1874                                    [OK]
richarvey/nginx-php-fpm            Container running Nginx + PHP-FPM capable of…   787                                     [OK]
linuxserver/nginx                  An Nginx container, brought to you by LinuxS…   128
......             

下载镜像

例如:下载Nginx镜像
[root@docker ~]# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
d121f8d1c412: Pull complete 
ebd81fc8c071: Pull complete 
655316c160af: Pull complete 
d15953c0e0f8: Pull complete 
2ee525c5c3cc: Pull complete 
Digest: sha256:c628b67d21744fce822d22fdcc0389f6bd763daac23a6b77147d0712ea7102d0
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest

下载的文件信息路径

/var/lib/docker/image/overlay2
[root@docker overlay2]# cat repositories.json 
{"Repositories":{"nginx":{"nginx:latest":"sha256:7e4d58f0e5f3b60077e9a5d96b4be1b974b5a484f54f9393000a99f3b6816e3d","nginx@sha256:c628b67d21744fce822d22fdcc0389f6bd763daac23a6b77147d0712ea7102d0":"sha256:7e4d58f0e5f3b60077e9a5d96b4be1b974b5a484f54f9393000a99f3b6816e3d"}}}

查看镜像列表

[root@docker overlay2]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              7e4d58f0e5f3        7 days ago          133MB

获取镜像信息

[root@docker overlay2]# docker inspect 7e4d58f0e5f3  '镜像的image id'

给镜像添加新标签

[root@docker overlay2]# docker tag nginx:latest nginx:web
[root@docker overlay2]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              7e4d58f0e5f3        7 days ago          133MB
nginx               web                 7e4d58f0e5f3        7 days ago          133MB

删除标签

[root@docker overlay2]# docker rmi nginx:web 
Untagged: nginx:web
[root@docker overlay2]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              7e4d58f0e5f3        7 days ago          133MB

删除镜像
通过IMAGE ID删除镜像时,必须只有一个相同的镜像存在,别名标签的镜像和源镜像同时存在时无法删除

[root@docker overlay2]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              7e4d58f0e5f3        7 days ago          133MB
nginx               web                 7e4d58f0e5f3        7 days ago          133MB
[root@docker overlay2]# docker rmi 7e4d58f0e5f3  '此时无法删除镜像'
Error response from daemon: conflict: unable to delete 7e4d58f0e5f3 (must be forced) - image is referenced in multiple repositories
[root@docker overlay2]# docker rmi nginx:web 
Untagged: nginx:web
[root@docker overlay2]# docker rmi 7e4d58f0e5f3
Untagged: nginx:latest
Untagged: nginx@sha256:c628b67d21744fce822d22fdcc0389f6bd763daac23a6b77147d0712ea7102d0
Deleted: sha256:7e4d58f0e5f3b60077e9a5d96b4be1b974b5a484f54f9393000a99f3b6816e3d
Deleted: sha256:eedfd37abc0b05520a719addf6675b372687fe9a2ed1746fa988335720d4376c
Deleted: sha256:4f052ddd517f6dc5b74d2f7d881838b8ec6a5e67ec7a1da8bbbe91e1e068ad3a
Deleted: sha256:5f78154d356577280e4ac0d9bf0d021d488828e57f953b011dcbadaecd539ce4
Deleted: sha256:db5783668220e16186080f3e9d69ad748aab8c72abb8e457f6fc45369461634b
Deleted: sha256:07cab433985205f29909739f511777a810f4a9aff486355b71308bb654cdc868
[root@docker overlay2]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

存出镜像

[root@docker opt]# docker save -o nginx nginx:latest 
[root@docker opt]# ls
containerd  nginx

载入镜像

[root@docker opt]# docker rmi nginx:latest
[root@docker opt]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
[root@docker opt]# docker load < nginx 
07cab4339852: Loading layer  72.49MB/72.49MB
f431d0917d41: Loading layer  64.31MB/64.31MB
60c688e8765e: Loading layer  3.072kB/3.072kB
eabfa4cd2d12: Loading layer  4.096kB/4.096kB
908cf8238301: Loading layer  3.584kB/3.584kB
Loaded image: nginx:latest
[root@docker opt]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              7e4d58f0e5f3        7 days ago          133MB

2.3 容器的操作

创建容器

[root@docker opt]# docker create -it nginx:latest /bin/bash
85a39a03e16ddca25725aabe6f6cf47a15d4a63b88dd53ec0aac6af9470eb39e

容器创建后会自动生成一个docker0网卡充当docker的网关

[root@docker opt]# ifconfig 
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
        inet6 fe80::42:13ff:fe39:d9b  prefixlen 64  scopeid 0x20<link>
        ether 02:42:13:39:0d:9b  txqueuelen 0  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 13  bytes 1776 (1.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

查看容器状态

[root@docker opt]# docker ps -a     '此时状态为created'
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
85a39a03e16d        nginx:latest        "/docker-entrypoint.…"   46 seconds ago      Created 

启动容器

[root@docker opt]# docker start 85a39a03e16d
85a39a03e16d
[root@docker opt]# docker ps -a     '此时状态为up'
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS               NAMES
85a39a03e16d        nginx:latest        "/docker-entrypoint.…"   About a minute ago   Up 9 seconds        80/tcp              goofy_mcnulty

登陆正在运行的容器
docker exec -it 容器id 环境

[root@docker opt]# docker exec -it 85a39a03e16d /bin/bash
root@85a39a03e16d:/# ls
bin   docker-entrypoint.d   home   media  proc	sbin  tmp
boot  docker-entrypoint.sh  lib    mnt	  root	srv   usr
dev   etc		    lib64  opt	  run	sys   var

执行完成直接关闭状态时exited

[root@docker opt]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                        PORTS               NAMES
3787c9d253e4        nginx:latest        "/docker-entrypoint.…"   3 minutes ago       Exited (0) 3 minutes ago                          fervent_hellman

持续在后台执行

[root@docker opt]# docker run -d nginx:latest /bin/bash -c "while true;do echo hello;done"
b74463cd00c8e7ab4ebbb6007277bd52cdb6d36286130f74246bc23348a6b60d
[root@docker opt]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                        PORTS               NAMES
b74463cd00c8        nginx:latest        "/docker-entrypoint.…"   10 seconds ago      Up 10 seconds                 80/tcp              practical_kare

终止运行

[root@docker opt]# docker stop 85a39a03e16d
85a39a03e16d

容器导出

[root@docker opt]# docker export 85a39a03e16d > /opt/nginx_bak
[root@docker opt]# ls
containerd  nginx  nginx_bak

容器导入(会生成镜像,而不会创建容器)

[root@docker opt]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              7e4d58f0e5f3        7 days ago          133MB
[root@docker opt]# cat nginx_bak | docker import - nginx:web
sha256:c15c32bf74bb10a4592002a55131d64757ece28b9c94dfea19bc530230432aa2
[root@docker opt]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               web                 c15c32bf74bb        1 second ago        131MB
nginx               latest              7e4d58f0e5f3        7 days ago          133MB

容器在运行状态时时不能删除它的镜像,必须停止容器运行才可以删除镜像

[root@docker opt]# docker rmi 7e4d58f0e5f3
Error response from daemon: conflict: unable to delete 7e4d58f0e5f3 (cannot be forced) - image is being used by running container 85a39a03e16d

同样的容器在运行时也不可以直接删除容器

[root@docker opt]# docker rm 85a39a03e16d
Error response from daemon: You cannot remove a running container 85a39a03e16ddca25725aabe6f6cf47a15d4a63b88dd53ec0aac6af9470eb39e. Stop the container before attempting removal or force remove

删除容器

[root@docker opt]# docker stop 85a39a03e16d
85a39a03e16d
[root@docker opt]# docker rm 85a39a03e16d
85a39a03e16d
[root@docker opt]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                        PORTS               NAMES
b74463cd00c8        nginx:latest        "/docker-entrypoint.…"   12 minutes ago      Exited (137) 11 minutes ago                       practical_kare
cae6ca90998f        nginx:latest        "/docker-entrypoint.…"   13 minutes ago      Exited (0) 13 minutes ago                         vigilant_aryabhata
3787c9d253e4        nginx:latest        "/docker-entrypoint.…"   18 minutes ago      Exited (0) 18 minutes ago                         fervent_hellman
6d8fbd7ab7a0        nginx:latest        "/docker-entrypoint.…"   37 minutes ago      Exited (0) 37 minutes ago                         stoic_kowalevski
ad495f083fd0        nginx:latest        "/docker-entrypoint.…"   37 minutes ago      Exited (0) 37 minutes ago                         elastic_bassi
670c48d4aa6b        nginx               "/docker-entrypoint.…"   38 minutes ago      Exited (0) 38 minutes ago                         pensive_boyd
34ca5e0090df        nginx               "/docker-entrypoint.…"   38 minutes ago      Exited (0) 38 minutes ago                         blissful_satoshi
256a91dc6aa5        nginx               "/docker-entrypoint.…"   39 minutes ago      Exited (0) 39 minutes ago                         magical_solomon
d7336679a55c        nginx               "/docker-entrypoint.…"   39 minutes ago      Exited (0) 39 minutes ago                         brave_bose
b74f159e3b0b        nginx               "/docker-entrypoint.…"   39 minutes ago      Exited (127) 39 minutes ago                       gifted_sinoussi
c69b0b591ac3        nginx               "/docker-entrypoint.…"   39 minutes ago      Exited (127) 39 minutes ago                       exciting_bhabha

批量删除容器

[root@docker opt]# docker ps -a | awk '{print "docker rm "$1}' | bash
Error: No such container: CONTAINER
b74463cd00c8
cae6ca90998f
3787c9d253e4
6d8fbd7ab7a0
ad495f083fd0
670c48d4aa6b
34ca5e0090df
256a91dc6aa5
d7336679a55c
b74f159e3b0b
c69b0b591ac3
[root@docker opt]# docker ps -a  '容器全部删除'
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

三、Docker镜像

3.1 Docker镜像的分层

在这里插入图片描述

3.2 Docker镜像的创建

Docker镜像

  • 应用发布的标准格式
  • 支撑一个Docker容器的运行

Docker镜像的创建方法

  • 基于已有镜像创建
  • 基于本地模板创建
  • 基于Dockerfile创建

3.3 基于已有镜像创建

将容器里面运行的程序及运行环境打包生成新的镜像

docker commit [选项] 容器ID/名称 仓库名称:[标签]
-m 说明信息
-a 作者信息
-p 生成过程中停止容器的运行
[root@docker ~]# docker commit -m "new" -a "cllt" d5bcd6bba1fb cllt:test
sha256:82785b809795a9928c57968d5137dcd1dda2de0853eeddf6f9c5c2b69ac258cd
[root@docker ~]# docker images |grep cllt
cllt                test                82785b809795        17 seconds ago      203MB

3.4 基于本地模板创建

通过导入系统模板文件可以生成镜像,模板可以从OPENVZ开源项目下载地址为:https://wiki.openvz.org/Download/template/precreated
或者使用wget下载:wget http://download.openvz.org/template/precreated/debian-7.0-x86-minimal.tar.gz

导入成功后可查看本地镜像信息

docker images |grep new
[root@docker ~]# cat debian-7.0-x86-minimal.tar.gz | docker import - cllt:new
sha256:8d6c9b6c757f46b580ae952f3ba23af1ec3da300f5419f82736ee74d4b028727
[root@docker ~]# docker images |grep new
cllt                new                 8d6c9b6c757f        10 seconds ago      215MB

3.5 基于Dockerfile创建

Dockerfile是由一组指令组成的文件
Dockerfile结构四部分

  • 基础镜像信息
  • 维护者信息
  • 镜像操作指令
  • 容器启动时执行指令

Dockerfile每行支持一条指令,每条指令可携带多个参数,支持使用以“#”号开头的注释

Dockerfile常用操作指令

指令含义
FROM 镜像指定新镜像所基于的镜像,第一条指令必须为FROM指令,每创建一个镜像就需要一条FROM指令
MAINTAINER 名字说明新镜像的维护人信息
RUN 命令在所基于的镜像执行命令,并提交到新的镜像中
CMD [ “要运行的程序”,“参数1”,“参数2”]指令启动容器时要运行的命令或者脚本,Dockerfile只能有一条CMD命令,如果指定多条则只能执行最后一条
EXPOSE 端口号指定新镜像加载到Docker时要开启的端口
ENV 环境变量 变量值设置一个环境变量的值,会被后面的RUN使用
ADD 源文件/目录 目标文件/目录将源文件复制到目标文件,源文件要与Dockerfile位于相同目录中,或者是一个URL
COPY 源文件/目录 目标文件/目录将本地主机上的文件/目录复制到目标地点,源文件/目录要与Dockerfile在相同的目录中
VOLUME [“目录”]在容器中创建一个挂载点
USER 用户名/UID指定运行容器时的用户
WORKDIR 路径为后续的RUN、CMD、ENTRYPOINT指定工作目录
ONBUILD 命令指定所生成的镜像作为一个基础镜像时所要运行的命令
HEALTHCHECK健康检查
[root@docker opt]# mkdir apache
[root@docker opt]# cd apache
[root@docker apache]# vim Dockerfile 
FROM centos:7              '基于的基础镜像'
MAINTAINER This is cllt    '维护镜像的用户信息'
RUN yum -y update          '镜像操作指令更新yum源'
RUN yum -y install httpd   '镜像操作指令安装apache软件'
EXPOSE 80                  '开启80端口'
ADD index.html /var/www/html/index.html  '复制网站首页'
ADD run.sh /run.sh       '将执行脚本复制到镜像中'
RUN chmod 755 /run.sh    '添加执行权限'
CMD ["/run.sh"]          '启动容器时执行脚本'
[root@docker apache]# vim run.sh 
#!/bin/bash
rm -rf /run/httpd/*   '删除可能存在的apache文件'
exec /usr/sbin/apachectl -D FOREGROUND  '启动apache软件'
[root@docker apache]# vim index.html  '编辑首页'
<h1>this is cllt web</h1>

生成镜像

[root@docker apache]# docker build -t httpd:centos:7 .

新镜像运行容器

[root@docker apache]# docker run -d -p 8080:80 httpd:centos

测试
在这里插入图片描述

四、Docker的数据管理

数据管理操作

  • 方便查看容器内产生的数据
  • 多容器间实现数据共享

两种管理方式

  • 数据卷
  • 数据卷容器

4.1 数据卷

数据卷是一个提供容器使用的特殊目录

宿主目录/var/www挂载容器中的/data1

[root@docker apache]# docker run -v /var/www:/data1 --name web1 -it centos:7 /bin/bash
[root@1e0d02f2caa2 /]# ls
anaconda-post.log  data1  etc   lib    media  opt   root  sbin  sys  usr
bin                dev    home  lib64  mnt    proc  run   srv   tmp  var
[root@docker ~]# cd /var/www/
[root@docker www]# ls
[root@docker www]# touch 123    '在宿主目录创建新的文件'
[root@docker www]# ls
123
[root@1e0d02f2caa2 /]# cd data1/
[root@1e0d02f2caa2 data1]# ls    '容器中同步'
123

4.2 数据卷容器

创建数据卷容器web100

[root@docker www]# docker run --name web100 -v /data1 -v /data2 -it centos:7 /bin/bash
[root@cf4baea85eae /]# ls
anaconda-post.log  data1  dev  home  lib64  mnt  proc  run   srv  tmp  var
bin                data2  etc  lib   media  opt  root  sbin  sys  usr

新容器挂载数据卷容器web100

[root@docker apache]# docker run -it --volumes-from web100 --name db1 centos:7 /bin/bash
[root@d5bcd6bba1fb /]# ls
anaconda-post.log  data1  dev  home  lib64  mnt  proc  run   srv  tmp  var
bin                data2  etc  lib   media  opt  root  sbin  sys  usr

在web100共享的两个目录中分别创建文件

[root@cf4baea85eae /]# touch data1/123.txt
[root@cf4baea85eae /]# touch data2/456.txt

新容器db1同步数据

[root@d5bcd6bba1fb /]# ls data1/
123.txt
[root@d5bcd6bba1fb /]# ls data2/
456.txt

五、私有仓库建立

下载registry镜像

[root@docker opt]# docker pull registry

客户端设置daemon.json文件,指定私有仓库位置

[root@docker opt]# vim /etc/docker/daemon.json 

{
  "insecure-registries": ["192.168.179.129:5000"],
  "registry-mirrors": ["https://阿里云镜像加速地址"]
}
[root@docker opt]# systemctl restart docker.service 

生成registry容器,开放5000端口

[root@docker opt]# docker create -it registry /bin/bash
4db6840d6b4eb2c12a8fdf8da1656420ad9e47b849fe3540e484d6da9c2ebc38
[root@docker opt]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                        PORTS               NAMES
4db6840d6b4e        registry            "/entrypoint.sh /bin…"   8 seconds ago       Created                                           peaceful_keldysh
[root@docker opt]# docker start 4db6840d6b4e
[root@docker opt]# docker run -d -p 5000:5000 -v /data/registry:/tmp/registry registry

镜像打标签

[root@docker opt]# docker tag nginx:latest 192.168.179.129:5000/nginx

上传镜像,docker push

[root@docker opt]# docker push 192.168.179.129:5000/nginx

获取私有仓库列表

[root@docker opt]# curl -XGET http://192.168.179.129:5000/v2/_catalog
{"repositories":["nginx"]}

将原有的Nginx镜像删除进行测试

[root@docker opt]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
cllt                new                 8d6c9b6c757f        13 minutes ago      215MB
cllt                test                82785b809795        19 minutes ago      203MB
httpd               centos              3107272e5a13        7 hours ago         419MB
centos              7                   7e6257c9f8d8        5 weeks ago         203MB
registry            latest              2d4f4b5309b1        3 months ago        26.2MB

下载镜像,docker pull

[root@docker opt]# docker pull 192.168.179.129:5000/nginx
Using default tag: latest
latest: Pulling from nginx
d121f8d1c412: Pull complete 
ebd81fc8c071: Pull complete 
655316c160af: Pull complete 
d15953c0e0f8: Pull complete 
2ee525c5c3cc: Pull complete 
Digest: sha256:794275d96b4ab96eeb954728a7bf11156570e8372ecd5ed0cbc7280313a27d19
Status: Downloaded newer image for 192.168.179.129:5000/nginx:latest
192.168.179.129:5000/nginx:latest
[root@docker opt]# docker images
REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE
cllt                         new                 8d6c9b6c757f        14 minutes ago      215MB
cllt                         test                82785b809795        19 minutes ago      203MB
httpd                        centos              3107272e5a13        7 hours ago         419MB
192.168.179.129:5000/nginx   latest              7e4d58f0e5f3        10 days ago         133MB
centos                       7                   7e6257c9f8d8        5 weeks ago         203MB
registry                     latest              2d4f4b5309b1        3 months ago        26.2MB

六、端口映射

在启动容器时,如果不配置宿主机器与虚拟机的端口映射,外部程序是无法访问虚拟机的,因此我们需要手动进行设置端口映射

'-P(大p):随机指定端口号'
[root@docker opt]# docker run -d -P httpd:centos 
0b59dacc0f5e5e9f954a885bd048eefb2b45b711449a1ccbff5d51397b72a013
[root@docker opt]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                       PORTS                    NAMES
0b59dacc0f5e        httpd:centos        "/run.sh"                6 seconds ago       Up 5 seconds                 0.0.0.0:32768->80/tcp    angry_ki

在这里插入图片描述

'-p(小p):手动设置端口号'
[root@docker opt]# docker run -d -p 44366:80 httpd:centos

在这里插入图片描述

七、容器互联

创建并运行web10容器,端口号自动映射

[root@docker opt]# docker run -itd -P --name web10 centos:7 /bin/b

创建并运行web20容器,连接到web10和其通信,端口号自动映射

[root@docker opt]# docker run -itd -P --name web20 --link web10:web10 centos:7 /bin/bash

测试,进入web20,ping web10

[root@40223199da2a /]# ping web10
PING web10 (172.17.0.5) 56(84) bytes of data.
64 bytes from web10 (172.17.0.5): icmp_seq=1 ttl=64 time=0.077 ms
64 bytes from web10 (172.17.0.5): icmp_seq=2 ttl=64 time=0.047 ms
64 bytes from web10 (172.17.0.5): icmp_seq=3 ttl=64 time=0.097 ms
64 bytes from web10 (172.17.0.5): icmp_seq=4 ttl=64 time=0.044 ms
64 bytes from web10 (172.17.0.5): icmp_seq=5 ttl=64 time=0.118 ms
^C
--- web10 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4000ms
rtt min/avg/max/mdev = 0.044/0.076/0.118/0.030 ms
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Centos中Docker的基本操作、镜像创建、数据管理、私有仓库的建立、端口映射和容器互联 的相关文章

  • JavaScript 其他的进制的数字

    目录 其他的进制的数字将其他的数字类型转换为Boolean值运算符算术运算符 其他的进制的数字 在JS中 xff0c 1 如果需要表示16进制的数字 xff0c 则需要以0x开头 2 如果需要表示8进制的数字 xff0c 则需要以0开头 3
  • 自制STLink

    前段时间 xff0c 由于芯片大涨价 xff0c 手上又没有STLink xff0c 只有STM32F103c8t6的芯片 xff0c 在网上借鉴了很多大佬的DIY xff0c 就自己动手画了一个 xff0c 好像有两个版本 xff0c 好
  • 电力电子技术笔记-逆变电路

    逆变的概念 逆变 与整流相对应 xff0c 直流电变成交流电 交流侧接电网 xff0c 为有源逆变 交流侧接负载 xff0c 为无源逆变 逆变与变频 变频电路 xff1a 分为交 交变频和交 直 交变频两种 交 直 交变频由交 直变换 xf
  • C++ 中cin的输入原理及字符串(string、char[])输入问题

    目录 一 cin 是 C 43 43 封装的一个类对象 二 对字符数组的输入方法 xff08 char str N xff09 xff1a 1 cin 使用空白字符作为一次输入的结尾 xff0c 并忽略该空字符 2 使用 getline g
  • 图像分割常见性能指标的计算方法(python)

    分割常见性能指标的计算方法 xff08 python xff09 混淆矩阵 对于很多指标的计算 xff0c 第一步就是计算混淆矩阵 混淆矩阵实际上就是总结分类结果的矩阵 对于k元分类 xff0c 其实它就是一个k k的表格 xff0c 用来
  • 手把手教你怎么搭建自己的ChatGPT(含源码)

    这篇文章教你怎么不懂技术也可以搭建自己的chatGPT xff0c 内容都是一个字一个字的手打的 xff0c 可能要错别字 xff0c 需要技术支持私信老王 提供本文你可以学到 xff1a 1 如何挑选 购买自己的服务器 2 如何注册自己的
  • 一个体验超级好的chatgpt国产镜像

    镜像网址 xff1a https chatgpt 6om net 1 xff0c 首页的ui xff0c 基本与chatgpt官方一致 2 xff0c 聊天窗 xff0c 反馈很好 3 xff0c 写代码 xff0c 体验也很棒哟
  • ChatGPT国内初次体验:聊天、Python代码生成等

    ChatGPT国内镜像站初体验 xff0c 聊天 Python代码生成 ChatGPT官网 xff1a https ai com ChatGPT 最近ChatGPT传得沸沸扬扬 xff0c 红得发紫 由于主站在国外 xff0c 我没有资源和
  • 马云回国,首谈ChatGPT

    马云今天回国了 xff0c 这是一个备受关注的消息 作为中国最具代表性的企业家之一 xff0c 马云在过去的二十多年里 xff0c 带领阿里巴巴从一个小小的创业公司 xff0c 发展成为全球最大的电商平台之一 xff0c 同时也推动了中国互
  • 下一代的新操作系统就是ChatGPT!

    什么是CHatgpt xff1f ChatGPT是人工智能研究实验室OpenAI在2022年11月30日推出的聊天机器人模型 xff0c 它使用Transformer神经网络架构 xff0c 训练数据来自包括维基百科 xff0c 以及真实对
  • ChatGPT云桌面:无需科技挂载,即点即用

    ChatGPT是一个由OpenAI开发的人工智能对话语言模型 它被设计为对话式人工智能代理 xff0c 用于客户服务 个人助理和文娱等任务 它可以理解并生成多种语言的文本 xff0c 包括中文 英语 西班牙语 德语等 但从某些地方访问Cha
  • 不写代码、靠“玩” ChatGPT 年入百万,提示工程师正变成硅谷新宠

    以下文章转发自来源于硅星人 xff0c 作者章姝敏 随着 ChatGPT 等 AI 工具的风靡 xff0c 越来越多人将其作为日常生活和工作的助手 为了能更好地与它对话 xff0c 一个新兴职业 提示工程师应运而生 用自然语言对话 xff0
  • 有个周入百万的项目:教人用ChatGPT。

    第一批靠 ChatGPT 赚大钱的人 xff0c 既不是研发人员 xff0c 也不是国内大厂 xff0c 又是这群卖课的 xff1f 不知道大家有没有刷到过下面这张图 xff0c 有人统计了知识星球上 xff0c 这段时间跟 GPT 相关课
  • 用ChatGPT搭建公司内部ChatGPT服务器

    一 前言 我是ChatGPT xff0c 一个由OpenAI训练的大型语言模型 我被设计用于回答各种问题并生成文本 xff0c 可以处理多种自然语言任务 xff0c 例如问答 摘要和翻译等 在我的学习过程中 xff0c 我阅读了数百万篇文本
  • 通过串口波特率计算数据传输速率(每秒字节数)

    这个是个古老的问题 上次用串口还是本科时候 xff0c 最近面试被问到了这个问题竟然整蒙了 xff0c 大致是 xff1a 面试老师问 xff1a 9600的波特率每秒可以传输多少个字节 xff1f 我 xff1a e 直接除以8 emmm
  • ChatGPT搭建AI网站实战

    1 概述 ChatGPT是一款基于GPT 3 5架构的大型语言模型 xff0c 它能够进行自然语言处理和生成对话等任务 作为一款智能化的聊天机器人 xff0c ChatGPT有着广泛的应用场景 xff0c 如在线客服 智能助手 个性化推荐等
  • Midjourney关键词分享!附输出AI绘画参考图

    Midjourney 关键词是指用于 Midjourney 这个 AI 绘画工具的文本提示 xff0c 可以影响生成图像的风格 内容 细节等 Midjourney 关键词有一些基本的语法规则和套用公式 xff0c 也有一些常用的风格词汇和描
  • 【AI绘画】——Midjourney关键词格式解析(常用参数分享)

    目前在AI绘画模型中 xff0c Midjourney的效果是公认的top级别 xff0c 但同时也是相对较难使用的 xff0c 对小白来说比较难上手 xff0c 主要就在于Mj没有webui xff0c 不能选择参数 xff0c 怎么找到
  • ChatGPT总是答非所问?如何使用chatgpt定义角色

    一 x1f4dd 定义角色 xff1a ChatGPT 的角色设定 背景信息 xff1a 提供详细 准确的背景信息和前提条件 xff0c 以便 ChatGPT 提供有针对性的回答和建议 任务目标 xff1a 清晰地描述希望 ChatGPT
  • 免费ChatGPT接入-国内怎么玩chatGPT

    免费ChatGPT中文版 OpenAI 的 GPT 模型目前并不提供中文版的免费使用 xff0c 但是有许多机器学习平台和第三方服务提供商也提供了基于 GPT 技术的中文版模型和 API 下面是一些常见的免费中文版 ChatGPT xff1

随机推荐