(?)企业部分之docker
2016-07-26 22:48
956 查看
使用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
##加载平台镜像##
##运行docker容器##
ctrl+p+q ##退出,并使容器保持运行状态
ctrl+d/exit ##退出,并关闭容器
容器可通过docker ps来查看
再开启一个容器,起名为vm1
##挂载##
查看虚拟机的/mnt/data目录,可以看到data.tar文件
容器的四种连接方式:桥接 host none container
##修改容器的IP地址##
--bip 172.17.0.1/24
此时IP和虚拟机相同,容易导致资源的争抢与占用。(如端口的占用)
关闭虚拟机的80端口
开启虚拟机的nginx服务
此时虚拟机的80端口也开启,被容器占用
3.container
IP及端口情况同vm1
4.none
或
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"]
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"]
<h1>www.westos.org</h1>
http://172.25.254.145:8080/
【有网】
1.
方法一:
##误删ssh文件##
####
方法二:
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"]
2.
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"]
[supervisord]
nodaemon=true
[program:ssh]
command=/usr/sbin/sshd -D
[program:redis]
command=/usr/sbin/redis-server
PONG
redis 127.0.0.1:6379>stats
...
3.
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"]
[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
关闭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 ##安装docker
systemctl start docker
docker version ##查看docker版本
docker info ##显示docker系统的信息
##加载平台镜像##
docker load -i rhel7.tar ##加载镜像
docker images ##列出镜像
docker search rhel7 ##检索镜像(貌似连网检索)
docker rmi rhel7 ##删除镜像
docker history rhel7 ##显示一个镜像的历史
##运行docker容器##
docker run --rm rhel7 cat /etc/hosts ##一次性运行一个容器。非交互式在容器中运行命令,运行后删除容器
docker run -it rhel7 bash ##交互式运行容器
ctrl+p+q ##退出,并使容器保持运行状态
ctrl+d/exit ##退出,并关闭容器
容器可通过docker ps来查看
docker ps ##可查看正在运行的容器 docker ps -a ##可查看所有容器
docker start 09 ##启动容器。可以用ID,也可以用名字
docker stop loving_bhaskara ##关闭容器
#docker kill Name/ID ##杀死一个容器
docker rm 09 ##删除容器
docker rm `docker ps -a -q` ##删除所有容器
再开启一个容器,起名为vm1
docker run -it --name vm1 ubuntu bash
ip addr show
docker inspect vm1 | less ##显示容器信息
docker logs vm1 ##从一个容器中取日志,显示在容器中运行的命令及结果
docker stats vm1 ##显示容器CPU、内存的等状态
docker attach vm1 ##附加到一个运行的容器上面
docker diff vm1 ##它只显示初始状态与最终状态的变化,而不会显示中间过程的变化。列出一个容器里面被改变的文件或者目录,list列表会显示出三种事件,A 增加的,D 删除的,C 被改变的
docker restart vm1 ##重启容器
docker top vm1 ##显示一个运行的容器里面的进程信息
docker pause vm1 ##不允许交互
docker unpause vm1 ##允许交互
docker export vm1 > vm1.tar ##将容器导入到tar包
docker import vm1.tar vm1 ##将tar包导入到镜像中
docker cp vm1:/mnt . ##拷贝容器下的文件到本地
docker run -it --name vm1 centos bash ##配置一个yum源
docker commit -m "yum" -p vm1 centos:yum ##提交对容器的修改,保存对容器的修改
docker save centos:yum > yum.tar ##将镜像导入到包中
docker run -it --name yumtest centos:yum bash ##新建的容器有yum源
##挂载##
docker run -it --name vm1 -v /mnt/data1:/data1 rhel7 bash ##将/mnt/data1目录挂载在容器的/data1下,目录没有会自动建立
docker create --name data -v /mnt/sharedata:/sharedata rhel7 bash ##公共挂载
docker run -it --name vm1 --volumes-from data rhel7 bash
docker run -it --name vm1 -v /mnt/data1:/data1 -v /mnt/data2:/data2 rhel7 bash ##建立多个挂载点
docker run --rm --volumes-from data -v /mnt/data:/data rhel7 tar cf /data/data.tar /sharedata ##报错。是因为没有tar命令
docker run -it --name vm1 -v /etc/yum.repos.d/dvd.repo:/etc/yum.repos.d/dvd.repo:ro rhel7 bash ##将虚拟机的yum仓库配置共享给容器
yum install tar
docker commit -p vm1 rhel7:tar
docker 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 docker
ip link set dev docker0 down
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
cp /lib/systemd/system/docker.service /etc/systemd/system vim /etc/systemd/system/docker.service在[Service]下的ExecStart的最后添上以下内容:
--bip 172.17.0.1/24
systemctl daemon-reload systemctl start docker2.host
docker run -it --name vm1 --net host nginx bash
ip addr show ##没有此命令,需要装包iproute
此时IP和虚拟机相同,容易导致资源的争抢与占用。(如端口的占用)
关闭虚拟机的80端口
开启虚拟机的nginx服务
/etc/init.d/nginx start
此时虚拟机的80端口也开启,被容器占用
3.container
docker run -it --name vm1 ubuntu bash ##开启一个vm1容器
docker run -it --name vm2 --net container:vm1 ubuntu bash ##和vm1共享资源,共同占用端口
IP及端口情况同vm1
4.none
docker run -it --name vm1 --net none ubuntu bash ##无I
ip netns add test
ip netns list
cd /var/run/netns/
ip netns del test docker inspect vm1 | grep Pid
或
docker inspect -f '{{.State.Pid}}' vm1
cd /proc/7196/ns/ ll
ln -s /proc/7196/ns/net /var/run/netns/7196 ip netns list
ip link add veth0 type veth peer name veth1
brctl addif docker0 veth0
ip link set veth1 netns 7196 ip netns exec 7196 ip link set veth1 name eth0
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
docker run -P --name vm1 -d nginx ##后台运行容器vm1,-P随即指定端口
curl localhost:32769
iptables -t nat -nL
docker run -p 8080:80 -p 8081:443 --name vm1 -d nginx ##-p自主指定端口号
iptables -t nat -nL
curl 172.25.254.45:8080
docker load -i redis.tar docker run -d --name nosql redis docker run --name webserver -it --link nosql:db nginx bash
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
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 .
docker run -d --name vm1 -p 8080:80 centos:html
http://172.25.254.145:8080/
【有网】
1.
方法一:
docker run -it --name vm1 centos:6 bash ##有yum源
yum install -y openssh-server /etc/init.d/sshd start
netstat -antlp ##22号端口打开
echo root:westos | chpasswd
##误删ssh文件##
/etc/init.d/sshd stop cd /etc/ssh/ rm -f ssh_host_*
/usr/sbin/sshd -D ##缺什么文件
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/
####
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.html
vim 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:v1
docker run -d -p 8022:22 -p 6379:6379 --name redis centos:v1
ssh -p 8022 172.25.254.145 ##可以连接
redis-cliredis 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:v1
docker ps172.25.254.145:8080/wordpress/
相关文章推荐
- 把docker当做绿色打包工具
- Docker笔记
- docker 的安装
- [docker]Swarm、SwarmKit、Swarm mode 对比
- CentOS6.5安装Docker
- Kubernetes1.3新特性:集群联盟-在全球快速部署和管理应用
- Centos上Docker环境搭建及常用命令备忘
- docker的网络-Container network interface(CNI)与Container network model(CNM)
- 创建 多个 MySQL docker 出现错误时
- docker容器资源配额控制
- Docker上关于出现无法识别host的问题解决方案
- Jenkins+Docker搭建持续集成测试环境
- Docker成长之路(一) :Docker介绍安装
- 如何在生产环境中运行Docker容器
- 在不重启动容器的情况下,允许从外部访问到容器内部的端口
- Docker1.12 + Swarm 构建动态微服务应用
- Docker的安装配置及使用详解
- Docker数据管理:Named volume
- Haproxy+etcd+confd+Docker搭建节点自动发现的高可用负载均衡框架
- 利用docker-compose实现elk+redice的但宿主机环境搭建