docker开发
docker运行
docker的安装
1 | 一个大写的略过 |
docker 登陆
1 | sudo docker login --username=xxxxx@qq.com registry.cn-hangzhou.aliyuncs.com |
docker自动构建gitHub项目(阿里云为例子)
先github或者阿里云git创建项目:以下为例子
进入阿里云开发者;登陆,创建我的镜像进入我的镜像仓库
选择创建镜像仓库
这里会要求建立一个密码,用于登陆docker使用,这里会先以账户名建立一个namespace。
下面选择阿里云Code创建,构建设置可以设置:代码自动构建,不使用缓存
1
自动构建是在代码有变动的时候会重新编译镜像。
使用代码构件,最顶层要有一个Dockerfile文件,会按照该文件进行构件
进入详细信息,里面就会列举下载地址,包括如下下载,并且重新发布
配置固定的ip
第一步:安装最新版的Docker
备注:操作系统自带的docker的版本太低,不支持静态IP,因此需要自定义安装。
root@localhost:# apt-get update# apt-get install curl
root@localhost:
root@localhost:# curl -fsSL https://get.docker.com/ | sh# docker -v
root@localhost:
Docker version 1.10.3, build 20f81dd
第二步:创建自定义网络
备注:这里选取了172.18.0.0网段,也可以指定其他任意空闲的网段
docker network create –subnet=172.18.0.0/16 shadownet
注:shadown为自定义网桥的名字,可自己任意取名。
第三步:在你自定义的网段选取任意IP地址作为你要启动的container的静态IP地址
备注:这里在第二步中创建的网段中选取了172.18.0.10作为静态IP地址。这里以启动shadowsocks为例。
docker run -d -p 2001:2001 –net shadownet –ip 172.18.0.10 oddrationale/docker-shadowsocks -s 0.0.0.0 -p 2001 -k 123456 -m aes-256-cfb
其他
备注1:这里是固定IP地址的一个应用场景的延续,仅作记录用,可忽略不看。
备注2:如果需要将指定IP地址的容器出去的请求的源地址改为宿主机上的其他可路由IP地址,可用iptables来实现。比如将静态IP地址172.18.0.10出去的请求的源地址改成公网IP104.232.36.109(前提是本机存在这个IP地址),可执行如下命令:
iptables -t nat -I POSTROUTING -o eth0 -d 0.0.0.0/0 -s 172.18.0.10 -j SNAT –to-source 104.232.36.109
1 | 1. 获取docker容器的IP使用命令:docker inspect 容器ID |
容器修改后创建镜像推送,阿里云为例
sudo docker commit [容器的名字] [nameSpace]/[名字]:[版本]
1
注: 这里已经创建了一个新的image镜像文件
推送到阿里云上面,需要重新命名
1
2
3
4$ sudo docker login --username=xxx xxx
$ sudo docker tag [ImageId] xxx:[镜像版本号]
$ sudo docker push xxx:[镜像版本号]
其中xxx请参考自己的仓库的信息
docker容器和主机互相拷贝文件
1 | 1.容器到主机 docker cp <containerId>:/file/path/within/container /host/path/target |
docker容器启动
1 | 1. docker run -dti -p 11:11 -v E:/worke:/data --name nginx --restart always nginxId |
docker mq启动
1 | docker run --name='activemq' -d \ |
容器挂载目录权限不够
1 | 加上 --privileged=true 参数,给与容器特殊权限 |
docker pull镜像很慢
- 因为pull直接是国外的镜像,docker hub在中国没有cdn分发。
- 阿里云开发者
- 使用阿里云的镜像加速,在阿里云开发者注册帐号。在控制台->docker镜像仓库->加速器
- 在这里会有每个人的专属加速的url网址,下面有介绍如何使用
docker镜像
容器转成镜像:
1
sudo docker commit <CONTAINER ID> imagename01
容器转成文件:
1
sudo docker export <CONTAINER ID> > /home/export.tar
镜像转成文件:
1
2sudo docker save imagename01 > /home/save.tar
注:一般情况下,save.tar比export.tar大一点点而已,export比较小,因为它丢失了历史和数据元metadata文件转成镜像:
1
cat /home/export.tar | sudo docker import - imagename02:latest
save.tar文件转成镜像:
1
docker load < /home/save.tar
注: save和export的区别是 save会记录历史,export只记录当前的镜像
查看转成的镜像:sudo docker images