TIPS:本文只作个人记录,后续空闲时间会整理文章逻辑,更新内容。
1、docker的运行过程
到仓库下载拉取对应的image,启动一个容器,类似镜像的一个实例,项目代码运行在容器中。
使用docker服务,首先启动docker服务sudo service docker start
2、docker的基本命令
1)查看已经运行的容器:docker ps
2)登录容器,执行bash命令:docker exec -it container_name /bin/bash
3)显示本地的镜像:docker images
4)查看docker的网络桥接详情:docker network inspect bridge
5)迁移docker镜像:
docker save webapp:1.0 > webapp-1.0.tar
或者:
docker save -o ./webapp-1.0.tar webapp:1.0
6)导入镜像:
docker load < webapp-1.0.tar
或者:
docker load -i webapp-1.0.tar
7)提交已经修改的容器:docker commit -a "username" -m "add project_name env" 287e84d84ceb projectName-net-image:1.0
8)host 向 docker 容器内复制文件,(容器内文件放置的路径最后要加“/”):
docker cp file_name container_id:/opt/workspace/
我的运行环境:
使用的基础镜像为:anthonymonori/android-ci-image
已有环境:pyton2.7,jdk1.8,nodejs,android sdk
启动命令:
gnome-terminal -t "bd3ea87f" -x bash -c "appium --command-timeout 1000 -p 4723 -U bd3ea87f;exec bash;"
TIPS:
1、向docker中写入数据需要注意:
按照 Docker 最佳实践的要求,容器不应该向其存储层内写入任何数据 ,容器存储层要保持无状态化。所有的文件写入操作,都应该使用数据卷(Volume)、或者绑定宿主目录,在这些位置的读写会跳过容器存储层,直接对宿主(或网络存储)发生读写,其性能和稳定性更高。数据卷的生存周期独立于容器,容器消亡,数据卷不会消亡。因此, 使用数据卷后,容器可以随意删除、重新 run ,数据却不会丢失。
2、Docker Registry 公开服务 是开放给用户使用、允许用户管理镜像的 Registry 服务。一般这类公开服务允许用户免费上传、下载公开的镜像,并可能提供收费服务供用户管理私有镜像。
最常使用的 Registry 公开服务是官方的 Docker Hub ,这也是默认的 Registry,并拥有大量的高质量的官方镜像,网址为:hub.docker.com/ 。在国内访问Docker Hub 可能会比较慢国内也有一些云服务商提供类似于 Docker Hub 的公开服务。比如 时速云镜像库、网易云镜像服务、DaoCloud 镜像市场、阿里云镜像库等。
3、若遇到docker内无法发现手机设备,解决方法如下:
先关闭host的adb 服务,命令:adb kill-server
然后在容器内部启动adb 服务
本文参考以下文档:
https://juejin.im/post/5b260ec26fb9a00e8e4b031a
https://hub.docker.com/r/anthonymonori/android-ci-image 相似镜像
https://hub.docker.com/r/appium/appium appium接入设备