Centos中Docker的基本操作、镜像创建、数据管理、私有仓库的建立、端口映射和容器互联
文章目录一、Docker概述1.1 Docker概述1.2 Docker的核心概念及安装方式二、Docker的基本操作2.1 环境准备及优化2.2 镜像的基本操作2.3 容器的操作一、Docker概述1.1 Docker概述Docker是什么?、是一种轻量级的“虚拟机”在Linux容器里运行应用的开源工具Docker与虚拟机的区别Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以
文章目录
一、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
更多推荐
所有评论(0)