设为首页 收藏本站
查看: 1092|回复: 0

[经验分享] (?)企业部分之docker

[复制链接]

尚未签到

发表于 2018-5-29 09:08:32 | 显示全部楼层 |阅读模式
  使用redhat7.2的镜像更新内核至3.10.0-327.el7.x86_64        ##版本相差过大可能需要yum update 更新所有才可以成功更新
  
关闭SElinux和防火墙
所需软件包:docker-engine-1.10.3-1.el7.centos.x86_64.rpm  docker-engine-selinux-1.10.3-1.el7.centos.noarch.rpm

rpm -ivh docker-engine-1.10.3-1.el7.centos.x86_64.rpm  docker-engine-selinux-1.10.3-1.el7.centos.noarch.rpm     ##安装dockersystemctl start dockerdocker version    ##查看docker版本
DSC0000.png

  

docker info    ##显示docker系统的信息  
##加载平台镜像##

docker load -i rhel7.tar    ##加载镜像docker images    ##列出镜像
DSC0001.png

  

docker search rhel7    ##检索镜像(貌似连网检索)docker rmi rhel7    ##删除镜像docker history rhel7    ##显示一个镜像的历史  
##运行docker容器##

docker run --rm rhel7 cat /etc/hosts    ##一次性运行一个容器。非交互式在容器中运行命令,运行后删除容器docker run -it rhel7 bash    ##交互式运行容器
DSC0002.png

  

  ctrl+p+q    ##退出,并使容器保持运行状态
ctrl+d/exit    ##退出,并关闭容器
容器可通过docker ps来查看

docker ps    ##可查看正在运行的容器
docker ps -a    ##可查看所有容器
DSC0003.png

  

docker start 09     ##启动容器。可以用ID,也可以用名字
DSC0004.png

  

docker stop loving_bhaskara    ##关闭容器
DSC0005.png

#docker kill Name/ID    ##杀死一个容器docker rm 09    ##删除容器docker rm `docker ps -a -q`    ##删除所有容器  
再开启一个容器,起名为vm1

docker run -it --name vm1 ubuntu baship addr show
DSC0006.png

docker inspect vm1 | less    ##显示容器信息docker logs vm1        ##从一个容器中取日志,显示在容器中运行的命令及结果docker stats vm1    ##显示容器CPU、内存的等状态docker attach vm1    ##附加到一个运行的容器上面
DSC0007.png

docker diff vm1        ##它只显示初始状态与最终状态的变化,而不会显示中间过程的变化。列出一个容器里面被改变的文件或者目录,list列表会显示出三种事件,A 增加的,D 删除的,C 被改变的docker restart vm1    ##重启容器docker top vm1        ##显示一个运行的容器里面的进程信息docker pause vm1    ##不允许交互
DSC0008.png

  

docker unpause vm1    ##允许交互docker export vm1 > vm1.tar    ##将容器导入到tar包
DSC0009.png

  

docker import vm1.tar vm1    ##将tar包导入到镜像中
DSC00010.png

  

docker cp vm1:/mnt .    ##拷贝容器下的文件到本地docker run -it --name vm1 centos bash    ##配置一个yum源
DSC00011.png

  

docker commit -m "yum" -p vm1 centos:yum    ##提交对容器的修改,保存对容器的修改
DSC00012.png

  

docker save centos:yum > yum.tar    ##将镜像导入到包中
DSC00013.png

  

docker run -it --name yumtest centos:yum bash    ##新建的容器有yum源
DSC00014.png

  
##挂载##

docker run -it --name vm1 -v /mnt/data1:/data1 rhel7 bash    ##将/mnt/data1目录挂载在容器的/data1下,目录没有会自动建立
DSC00015.png

  

docker create --name data -v /mnt/sharedata:/sharedata rhel7 bash    ##公共挂载
DSC00016.png

  

docker run -it --name vm1 --volumes-from data rhel7 bash
DSC00017.png

  

docker run -it --name vm1 -v /mnt/data1:/data1 -v /mnt/data2:/data2 rhel7 bash    ##建立多个挂载点
DSC00018.png

docker run --rm --volumes-from data -v /mnt/data:/data rhel7 tar cf /data/data.tar /sharedata    ##报错。是因为没有tar命令
DSC00019.png

  

docker run -it --name vm1 -v /etc/yum.repos.d/dvd.repo:/etc/yum.repos.d/dvd.repo:ro rhel7 bash    ##将虚拟机的yum仓库配置共享给容器
DSC00020.png

yum install tar  

docker commit -p vm1 rhel7:tardocker run --rm --volumes-from data -v /mnt/data:/data rhel7:tar tar cf /data/data.tar /sharedata    ##将/sharedata目录打包在虚拟机/mnt/data/下,命名为data.tar  
查看虚拟机的/mnt/data目录,可以看到data.tar文件
容器的四种连接方式:桥接 host none container
##修改容器的IP地址##

systemctl stop dockerip link set dev docker0 down
DSC00021.png

  

ip addr del 172.17.0.1/16 dev docker0
ip addr add 172.17.0.1/24 dev docker0
ip link set dev docker0 up
DSC00022.png

  

cp /lib/systemd/system/docker.service /etc/systemd/system
vim /etc/systemd/system/docker.service  在[Service]下的ExecStart的最后添上以下内容:
--bip 172.17.0.1/24
DSC00023.png
  

systemctl daemon-reload
systemctl start docker  2.host

docker run -it --name vm1 --net host nginx baship addr show         ##没有此命令,需要装包iproute
DSC00024.png

  

  此时IP和虚拟机相同,容易导致资源的争抢与占用。(如端口的占用)
关闭虚拟机的80端口
开启虚拟机的nginx服务

/etc/init.d/nginx start  
此时虚拟机的80端口也开启,被容器占用

DSC00025.png

  

  

DSC00026.png

  
3.container

docker run -it --name vm1 ubuntu bash    ##开启一个vm1容器docker run -it --name vm2 --net container:vm1 ubuntu bash    ##和vm1共享资源,共同占用端口
DSC00027.png

  IP及端口情况同vm1
  

  
4.none

docker run -it --name vm1 --net none ubuntu bash    ##无I
DSC00028.png

ip netns add testip netns listcd /var/run/netns/
DSC00029.png

ip netns del test
docker inspect vm1 | grep Pid
DSC00030.png

  

  或
docker inspect -f '``.`State`.`Pid`' vm1
DSC00031.png

  

cd /proc/7196/ns/
ll
DSC00032.png

  

ln -s /proc/7196/ns/net /var/run/netns/7196
ip netns list
DSC00033.png

  

ip link add veth0 type veth peer name veth1  
DSC00034.png

brctl addif docker0 veth0
DSC00035.png

ip link set veth1 netns 7196
ip netns exec 7196 ip link set veth1 name eth0
DSC00036.png

  

ip netns exec 7196 ip link set eth0 up
ip netns exec 7196 ip addr add 172.17.0.45/24 dev eth0
ip netns exec 7196 ip route add default via 172.17.0.1
ip link set veth0 up
DSC00037.png

DSC00038.png

DSC00039.png

  

DSC00040.png

  

docker run -P --name vm1 -d nginx    ##后台运行容器vm1,-P随即指定端口
DSC00041.png

curl localhost:32769
DSC00042.png

iptables -t nat -nL
DSC00043.png

  

docker run -p 8080:80 -p 8081:443 --name vm1 -d nginx    ##-p自主指定端口号
DSC00044.png

iptables -t nat -nL
DSC00045.png

curl 172.25.254.45:8080
DSC00046.png

docker load -i redis.tar
docker run -d --name nosql redis
docker run --name webserver -it --link nosql:db nginx bash
DSC00047.png

  

DSC00048.png

  

DSC00049.png

  

cd ~/Desktop
mkdir test    ##该目录下不要有其他的文件vim Dockerfile  编辑以下内容:
FROM centos:yum
MAINTAINER wjl1994@163.com
ENV HOSTNAME server1
EXPOSE 80
RUN yum install -y httpd & yum clean all
CMD ["/usr/sbin/httpd","-D","FOREGROUND"]

docker build -t centos:apache .docker run -d --name web -p 8080:880 centos:apache
DSC00050.png

  

DSC00051.png

  

vim Dockerfile  编辑以下内容:
FROM centos:yum
MAINTAINER wjl1994@163.com
ENV HOSTNAME server1
EXPOSE 80
RUN yum install -y httpd & yum clean all
ADD index.html /var/www/html
CMD ["/usr/sbin/httpd","-D","FOREGROUND"]

vim index.html  编辑以下内容:
<h1>www.westos.org</h1>

docker build -t centos:html .
DSC00052.png

  

docker run -d --name vm1 -p 8080:80 centos:html
DSC00053.png

  
http://172.25.254.145:8080/
DSC00054.png
【有网】
1.
方法一:

docker run -it --name vm1 centos:6 bash     ##有yum源yum install -y openssh-server
/etc/init.d/sshd startnetstat -antlp     ##22号端口打开echo root:westos | chpasswd  
##误删ssh文件##

/etc/init.d/sshd stop
cd /etc/ssh/
rm -f ssh_host_*/usr/sbin/sshd -D    ##缺什么文件
DSC00055.png

  

ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -q -N ""
ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -q -N ""ls /etc/ssh/
DSC00056.png

  
####

rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6.8.noarch.rpm
yum install -y redis
yum install -y supervisor  

  方法二:

cd ~/Desktop/test
rm -f index.htmlvim Dockerfile        ##可能有错,二次运行  将内容修改为以下:
FROM centos:6
MAINTAINER wjl1994@163.com
RUN rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6.8.noarch.rpm
ADD index.html /var/www/html
CMD ["/usr/sbin/httpd","-D","FOREGROUND"]

docker build -t centos:rpm .  
2.

cd ~/Desktop/test
vim Dockerfile        ##可能有错,二次运行  将内容修改为以下:
FROM centos:rpm
MAINTAINER wjl1994@163.com
EXPOSE 22 6379
RUN echo root:westos | chpasswd
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -q -N ""
RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -q -N ""
CMD ["/usr/sbin/supervisord"]

vim supervisord.conf  添加以下内容:
[supervisord]
nodaemon=true
[program:ssh]
command=/usr/sbin/sshd -D
[program:redis]
command=/usr/sbin/redis-server

docker build -t centos:v1 .docker inspect centos:v1docker run -d -p 8022:22 -p 6379:6379 --name redis centos:v1ssh -p 8022 172.25.254.145        ##可以连接redis-cli  redis 127.0.0.1:6379>ping
PONG
redis 127.0.0.1:6379>stats
...
3.

cd ~/Desktop/test
vim Dockerfile  将内容修改为以下:
FROM centos:lamp
MAINTAINER wjl1994@163.com
EXPOSE 22 80 3306
#这里使用的centos:lamp已进行了包的安装等,故注释掉此句
#RUN rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6.8.noarch.rpm
#RUN yum install -y openssh-server supervisor wordpress php php-mysql httpd mysql-server && yum clean all
RUN echo root:westos | chpasswd
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -q -N ""
RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -q -N ""
RUN service mysqld start && mysqladmin -uroot password westos && mysql -uroot -pwestos -e "create database wordpress;" && mysql -uroot -pwestos -e "grant all on wordpress.* to wjl@localhost identified by 'westos';" && service mysqld stop
RUN sed -i 's/database_name_here/wordpress/g' /etc/wordpress/wp-config.php
RUN sed -i 's/username_here/wjl/g' /etc/wordpress/wp-config.php
RUN sed -i 's/password_here/westos/g' /etc/wordpress/wp-config.php
RUN sed -i 's/127.0.0.1/all/g' /etc/httpd/conf.d/wordpress.conf
COPY supervisord.conf /etc/supervisord.conf
CMD ["/usr/bin/supervisord"]

vim supervisord.conf  将内容修改为以下:
[supervisord]
nodaemon=true
[program:ssh]
command=/usr/sbin/sshd -D
[program:httpd]
command=/usr/sbin/httpd
[program:mysqld]
command=/usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock

docker build -t centos:v1 .docker run -d --name lamp -p 8080:80 -p 8022:22 centos:v1docker ps  172.25.254.145:8080/wordpress/

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-482395-1-1.html 上篇帖子: docker1.12.0创建配置文件 下篇帖子: 谈Docker安全合规建设
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表