`
hpgary
  • 浏览: 82015 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

docker && dockerfile

阅读更多

# docker

 

一、简介

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

 

 二、安装

 

# Centos 7
yum install -y docker
 
#启动
/etc/init.d/docker start

 

 

三、日常操作

#a、下载镜像
docker pull centos
#b、查看本地镜像
docker images
# 从docker仓库搜索docker镜像
docker search centos
# 启动一个容器
docker run -it centos /bin/bash
#退出容器,关闭容器
exit
# 退出容器,不关闭
Ctrl+d
# 查看正在运行的容器,-a 停止的容器也显示
docker ps -a 
# 停止容易
docker stop 容器id
# 登录一个容器
docker exec -it 容器id /bin/bash
# 删除一个容器
docker rm 容器id
# 保存一个容器镜像
docker commit -m "说明信息" -a '作者信息' 容器id gary234:latest
 
# 创建容器直接启动 
docker run -itd centos bash
下载镜像地址
http://download.openvz.org/template/precreated/centos-6-x86_64.tar.gz

 

 

 四、磁盘数据管理

-- 特别注意要关闭selinux权限,不然没有权限修改目录,

启动一个容器,挂载机器的目录到Docker容器的一个目录中

 

docker run -itd -v /data/:/data/ centos bash

 

在启动一个容器,共享上一个docker容器的目录,实现两台docker容器数据共享

 

docker run -itd --volumes-from big_shirley centos bash
# big_shirley容器名称,最后一个字段
# centos 镜像名

 

 

五、将物体机器端口映射到docker容器

 

docker run -p 5123:80 -itd gary_centos bash
# 多端口映射
docker run -itd -p 123-155:123:155 gary_centos bash

 

 

六、备份容器和镜像

备份镜像

 

docker save -o mysql.tar mysql
# mysql.tar 保存的文件
# mysql 镜像名称

 

导出容器

 

docker export 7e8a0dc1cb88 > mysql.tar

 

恢复镜像

 

cat mysql.tar | docker import - mysql:latest

 

 

七、docker桥接网络( 桥接操作会断开暂时端口网络,建议写成脚本 运行 或者 在虚拟机内操作)

7.1 Centos 7

 

 

# 停止docker服务器
systemctl stop docker
# 使用ifconfig查看docker是否有网卡,如果有网卡就先删除
ip link set dev docker0 down
brctl delbr docker0
## brctl要安装
# 新建桥接虚拟网卡br0
brctl addbr br0
ip link set dev br0 up
ip addr add 192.168.1.210/24 dev br0 #为br0分配宿主机的ip地址
ip addr del 192.168.184.123/24 dev ens0 #清空宿主机的Ip地址
brctl addif br0 ens0 # 将宿主机网卡挂到br0上
ip route add default via 192.168.1.1 dev br0 #为br0设置路由
# 修改docker配置文件,Centos7的在/etc/sysconfig/docker,其他服务器到这个网址找 https://docs.docker.com/installation/#installation
 
vim /etc/sysconfig/docker 
#在OPTIONS='--selinux-enabled'这行中修改为OPTIONS='--selinux-enabled -b=br0'即让docker服务启动时使用br0网卡进行桥接
 
#启动docker
systemctl start docker
# 下载 pipework 命令,进行桥接
git clone https://github.com/jpetazzo/pipework
cp pipework/pipework /usr/local/bin/
# 启动一个无网络的docker容器
docker run -itd --net=none --name=gar123 centos bash
# 桥接 192.168.1.211 容器IP,192.168.1.210 宿主机IP
pipework br0 gar123 192.168.1.211/24@192.168.1.210
### 到这里也就完成了容器桥接,可以通过其他机器直接访问docker容器
 
# 安装sshd服务
## 安装软件
yum -y install openssh-server
## 生成启动sshd服务器需要的密钥文件
ssh-keygen -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key
ssh-keygen -t rsa -b 2048 -f /etc/ssh/ssh_host_ecdsa_key
ssh-keygen -t rsa -b 2048 -f /etc/ssh/ssh_host_ed25519_key
## 启动sshd服务器
/usr/sbin/sshd

 

重要:dockerfile创建redis容器

##############
# DockerFile
##############
from centos
MAINTAINER gary hpgary@qq.com
RUN yum install -y  gcc make openssl-devel automake make
ADD redis /opt/soft/redis
WORKDIR /opt/soft/redis
RUN tar xvzf redis-3.2.8.tar.gz 
WORKDIR redis-3.2.8
# 安装redis
RUN make
#RUN make PREFIX=/usr/local/redis install
RUN make install
RUN cp redis.conf /etc/
RUN sed -i 's/daemonize no/daemonize yes/g' /etc/redis.conf
EXPOSE 6379
ENTRYPOINT ["redis-server"]
#CMD "/usr/local/redis/bin/redis-server" "/etc/redis.conf"

 运行dockerfile

docker build -t gary_centos /usr/local/sbin/docker/

 启动容器

docker run -d -p 3004:6379 hp --bind 0.0.0.0

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics