Docker容器学习与分享0肆,docker数据卷与网络

docker分享03中创建了一个centos镜像,新的账号,使用-v标记来创建一个数据卷并挂在到容器中

图片 16

Docker容器的基本操作(二)

基于docker分享03的centos容器,接着学习docker容器的基本操作。
docker分享0三中开创了二个centos镜像,倘使想要查看容器的实际音讯将在选拔docker inspect命令:
图片 1
那般就足以看看那么些容器的详细音信了。
随之查看那几个容器的ip地址,第一种方法,在容器内查阅ip:
图片 2
其次种艺术通过docker inspect查看ip地址:
图片 3

学会这几个最基础的操作后,作者就试着用容器来安顿nginx服务。
图片 4
新创设八个centos容器,将容器的80端口映射到本机的65530端口,接着进入容器:
图片 5
安装的时候发掘找不到nginx的安装包,那是因为nginx位于第二方源里面不在官方源里面,所以举行以下操作:
图片 6
如此就足以开始安装nginx了。
图片 7
等候安装到位。
设置到位之后新建三个存放网址的目录并编写1个静态页面:
图片 8
图片 9
跟着编辑nginx的布局文件
图片 10
图片 11
将芙蓉红的1部分改成刚刚制造的目录。
图片 12
运维nginx服务,运营之后方可用ps命令查看nginx服务1度在运作。
接着按Ctrl+P+Q让centos容器在后台运行
下一场通过curl指令来查阅网页:
图片 13
能够观察获取页面成功,除了通过本机的ip获取网页外,还是能通过容器的ip地址来获得网页,首先先查看一下器皿的ip地址:
图片 14
收获到ip之后就能够透过ip来获得页面了,由于是置界用的容器ip所以没有须要加端口,私下认可使用80端口:
图片 15
获取成功!
那样就成功的在容器中创建了三个静态网页服务!

镜像能源

数据卷

咱俩理解Dokcer容器中只是包括镜像文件部分,容器结束,数据就能够丢掉。为了兑现对经过运维的数目或可变的数目实行永世保存,大家将数据存在数据卷中,Docker提供二种情势数据管理。

  • 数据卷(Data Volumes)
  • 数据卷容器管理(Data Volumn Containers)也叫容器共享卷

此处我们使用贰个nginx 官方镜像,来评释数据卷的采取。

docker login daocloud.io

拉取httpd镜像

[root@docker-daemon ~]# docker pull nginx

[root@docker-daemon ~]# docker images
REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
docker.io/nginx         latest              3f8a4339aadd        4 weeks ago         108.5 MB

 

数据卷

所谓创设数据卷,便是在行使docker run命令的时候,使用-v标识来创立贰个数目卷并挂在到容器中,这里大家创造一个/data目录,并在里面放贰个文书index.html,然后将其挂载到httpd镜像中。

格式

  • -v /data:将docker中的目录挂载到宿主机上
  • -v host_dir:container_dir:钦赐宿主机和容器中的目录

1.创办我们的web页面

[root@docker-daemon ~]# mkdir /data
[root@docker-daemon ~]# echo "<h1> Hello Docker </h1>"  > /data/index.html

二.将宿主目录挂载到容器的/usr/share/nginx/html目录

[root@docker-daemon ~]# docker  run -d -p 80:80 -v /data:/usr/share/nginx/html   --name my_nginx nginx:latest
451fe3283af42029b6ad685accdb204f834fc1e83db1987d16983e4bf17e1b10=

后日大家就能够直接在宿主机上修改容器内web页面了。

图片 16

图片.png

咱俩得以由此inspect命令查看挂载情形

[root@docker-daemon ~]# docker inspect -f "{{.Mounts}}" my_nginx
[{ /data /usr/share/nginx/html   true rprivate}]

zhangjianbin

容器共享卷

所谓容器共享卷正是七个容器使用同1个数量卷在运行时,我们经过--volumes-from来指定.

示范:此处大家再起3个器皿my_nginx2共享容器my_nginx的多寡卷

[root@docker-daemon ~]# docker  run -d -p 81:80 --volumes-from my_nginx   --name my_nginx2 nginx:latest
4885b0012882975ef8f73ace6ba9e037cf0d11da4621667a78175b466b0d4d04

zhangbin@163.com

网络

Docker安装实现后默许会成立多个互联网,大家能够利用docker network ls命令查看。

网络类型 说明 用途
none 封闭式容器 不参与网络通信 ,运行此类容器中的进程仅能访问本地回环接口
bridge 桥接式容器 拥有两个接口,回环接口和连接至主机某桥设备的以太网接口
host 开放式容器 与宿主机使用同一个网络栈
container: WEB 联盟式容器 两个容器使用同一个网络协议栈

创制容器时,可以为docker run命令使用--network慎选有名要进入的互联网。

示例:
桥接式容器

# docker run -it --rm --name my_centos_bridge dengyou/centos:net-tools
[root@cb7ed2d16a20 /]# ifconfig |awk '/netmask/{print $2}'
172.17.0.2 //docker0分配的ip地址
127.0.0.1

咱们还是能够运用--hostname--dns来内定主机名和IP地址

# docker run -it --name my_centos_1 --rm --hostname c1.dengyou.com --dns 8.8.8.8  dengyou/centos:net-tools
[root@c1 /]# hostname    
c1.dengyou.com
[root@c1 /]# cat /etc/resolv.conf 
nameserver 8.8.8.8

--add-host:增加主机名解析

# docker run -it --name my_centos_1 --rm --hostname c1.dengyou.com --dns 8.8.8.8  --add-host "www.idx.com:192.168.1.93"  dengyou/centos:net-tools
[root@c1 /]# cat /etc/hosts|grep www
192.168.1.93    www.idx.com

封闭时容器

# docker run -it --rm --name my_centos_none --net none  dengyou/centos:net-tools
[root@c336560f7106 /]# ifconfig |awk '/netmask/{print $2}'
127.0.0.1  //只有回环地址

开放式容器

[root@docker-daemon ~]# docker run -it --rm --name my_centos_host --net host  dengyou/centos:net-tools
[root@docker-daemon /]# ifconfig |awk '/netmask/{print $2}'
172.17.0.1
192.168.1.224
127.0.0.1

配合时容器

容器centos_one

[root@docker-daemon ~]# docker run -it --name cenot_one --net bridge dengyou/centos:net-tools
[root@054189c3c767 /]# ifconfig |awk '/netmask/{print $2}'
172.17.0.2
127.0.0.1

容器centos_two

[root@docker-daemon ~]# docker run -it --name centos_two --net container:centos_one dengyou/centos:net-tools
[root@41a0e97ee9b9 /]# ifconfig  |awk '/netmask/{print $2}'
172.17.0.2
127.0.0.1

从上面能够见到,centos_one和centos_two共享同1个体协会议栈。

289792436@qq.com

端口映射

选择格式

  • -p <container Port>:将点名的器皿端口映射至主机的全体地方的贰个动态端口
  • - p <Host Port>:<containerPort>:映射钦定的主机端口
  • -p <ip>::<container Port>:将容器的钦定端口映射到主机钦定ip的动态端口
  • -p:<HostPost>:<containerPort>:将点名的器皿端口映射至主机钦命ip的端口
  • - P:动态端口:指堆叠端口,具体的投射结果可使用docker port命令查看

 

新的账号:

zhangjianbin1991

zhangbin@163.com

xyz9353@163.com

 

参考:

配置Docker加速器

[root@xiaoyuer zhang]#
service docker start

Redirecting to /bin/systemctl
start  docker.service

[root@xiaoyuer zhang]# sudo
sed -i
‘s|other_args=”|other_args=”–registry-mirror=
|g’ /etc/sysconfig/docker

[root@xiaoyuer zhang]# sudo
sed -i
“s|OPTIONS=’|OPTIONS=’–registry-mirror=
|g” /etc/sysconfig/docker

[root@xiaoyuer zhang]# sudo
sed -i
‘N;s|\[Service\]\n|\[Service\]\nEnvironmentFile=-/etc/sysconfig/docker\n|g’
/usr/lib/systemd/system/docker.service

[root@xiaoyuer zhang]# sudo
sed -i ‘s|fd://|fd:// $other_args |g’
/usr/lib/systemd/system/docker.service

[root@xiaoyuer zhang]# sudo
systemctl daemon-reload

[root@xiaoyuer zhang]# sudo
service docker restart

Redirecting to /bin/systemctl
restart  docker.service

[root@xiaoyuer zhang]#
docker pull ubuntu

 

配置 Docker 加速器

该脚本能够将
–registry-mirror 到场到你的 Docker 配置文件 /etc/default/docker

curl
-sSL | sh
-s 

 

相互运行容器

docker run -i -t ubuntu
/bin/bash

 

翻开容器

docker ps
 正在运维的器皿

       -a
:全数容器

     
 -l:最后多个器皿

 

ctrl + d
:退出当前容器

 

容器的配备新闻

docker inspect
容器id

 

自定义容器名:

docker run –name=ubuntu-docker
-i -t ubuntu

 

重新启航结束的器皿

docker start -i 容器名

 

docker stop 容器名

 

剔除甘休的器皿

docker rm 容器id

 

守护式容器

docker run -i -t 

 

ctrl+p  ctrl+q :将交互式的器皿转为后台运营

 

进去正在运作的守护容器

docker attach ubuntu-docker

 

启航守护式容器

1、能够海誓山盟运行
二、未有交互式会话
三、适合运转应用程序和劳动

docker run -d

例:docker
run -i -t -d –name=centos7 docker.io/centos 

 

查阅容器内的日志:

docker logs -tf ubuntu-docker

    -t:加时间戳

    -f:一贯跟踪

 

翻开容器内经过

docker top 容器名

 

在运维中的容器内开发银行新历程

docker exec 容器名

docker exec -t -i ubuntu-docker /bin/bash

 

停下守护式容器

docker stop 容器名

docker kill 容器名

 

删去镜像文件:

docker rmi docker.io/ubuntu

 

 

容器端口映射:

    run [-P][-p]

    docker run -P -i -t centos /bin/bash   映射全体端口

    docker run -p 80 -i -t centos /bin/bash   映射单壹端口

一、只钦定容器的端口,宿主机端口随机
docker run -p 80 -i -t centos /bin/bash

二、钦赐宿主机到容器的端口映射
docker run -p 8088:80 -i -t centos /bin/bash

三、内定宿主机ip到容器的端口
dokcer run -p 0.0.0.0:80 -i -t centos /bin/bash

肆、钦命宿主机ip和端口到容器的端口映射
docker run -p 0.0.0.0:8088:80 -i -t centos /bin/bash

 

docker容器中装置软件

docker 容器中配备静态网站

给容器映射端口为80

docker run -p 80 -i -t ubunt

报错:

 

root@f9e3e466599d:/# apt-get install -y ping
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package ping

## 执行更新命令才能安装软件
root@f9e3e466599d:/# apt-get update

 

安装 nginx

apt-get install -y nginx

安装 vim

apt-get install -y vim

 

翻开nginx安装地点

whereis nginx

 

查看nginx 目录

ls /etc/nginx/

 

跻身nginx 静态网址目录

/etc/nginx/sites-enabled/

 

创设静态网址目录和页面

mkdir -p /var/www/html 创建index.html 页面

 

编写制定 nginx 配置,设置静态网址目录

vim /etc/nginx/sites-enabled/default

 

docker ps 查看正在周转的器皿,包罗端口新闻

也可以

docker port web

也能够 查看容器中的进度有关音讯

docker top web

 

验证nginx 页面

[root@www ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f玖e三e46659九d docker.io/ubuntu “/bin/bash” 3贰 minutes ago Up 3二 minutes
0.0.0.0:3276八->80/tcp web  访问宿主机的 3276八端口,就能够映射到容器中的
80端口上,也等于造访到nginx上

走访 nginx中的页面
[root@www ~]# curl -v

也可以透过宿主机的浏览器来访问

ifconfig 查看宿主机ip

   那样才足以访问到nginx 上啊

 

也能够访问容器的ip地址来拜会nginx

翻看容器的ip地址

docker inspect web

[root@www ~]# curl -v   暗中认可就是80端口

 

当关闭容器时,再起步容器,nginx 是关门状态的

关门容器

docker stop web

初始容器

docker start -i web

容器转为后台运转 ctrl+p ctrl+q

翻看容器进程 

docker top web   nginx 没在后台运转

在后台运维的器皿中运行 nginx

docker exec web nginx   运维后台运转容器的 nginx
,也正是对后台容器张开新进程

 

当3个器皿关闭后,再运转时,ip地 和宿主机的端口映射 恐怕会时有产生改动

 

来源: 

 

 

systemctl替代了service命令