docker命令
参考资源
常用命令
拉取镜像
javac
run
以安装jenkins为例。
docker run -u root --rm -d -p 8080:8080 -p 50000:50000 -v jenkins-data:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock jenkinsci/blueocean
– rm 容器停止时,会删除
-p 8080:80 将主机的8080端口,映射到,docker暴露的80端口上
-v 主机目录跟虚拟docker目录映射关系。 Docker Volume
-v /var/run/docker.sock:/var/run/docker.sock
上面通过sock文件的映射,达到与docker服务进程通信的目的。
-v jenkins-data:/var/jenkins_home
使用jenkins-data 来映射/var/jenkins_home目录,如果没有,会自动创建该卷。
–name demo 名字
–rm 临时使用,用完就删除容器。
Docker的数据持久化主要有两种方式: 1、bind mount 2、volume.
host机器的目录路径必须为全路径(准确的说需要以
/或~/开始的路径),不然docker会将其当做volume而不是volume处理如果host机器上的目录不存在,docker会自动创建该目录
如果container中的目录不存在,docker会自动创建该目录
如果container中的目录已经有内容,那么docker会使用host上的目录将其覆盖掉
–network 指定网络
相关可参考networkd
使用python的临时环境
使用docker非常方便建立临时的开发环境。如下命令,利用-v 将当前开发目录映射到 容器中,然后执行文件。
sudo docker run -it --rm -v ~/go:/go python:3.6 python /go/a.py
使用golang临时环境
直接编译~/go下面的a.go 文件。
sudo docker run -it --rm -v ~/go:/go golang go build a.go
构建镜像的策略
构建镜像,可以docker commit ,docker build 两种方式构建。前者,是相当于,保存运行中的容器,为镜像。
build的方式,需要有Dockerfile文件。推荐编写该文件的方式是:
先启动一个镜像,运行bash命令占住镜像。
docker run --name centos -itd centos:7.9.2009 bash # 如果需要用到本地文件, 使用docker cp到容器内 # 或为了加速下载,本地其一个简单的http服务进入容器,执行命令构建
docker exec -it centos bash # 一步步执行命令构建 # 当所有都操作妥当,然后保存一下操作历史 history > /tmp/docker.his.txt # 拷贝出操作历史 docker cp centos:/tmp/docker.his.txt . #然后挑选出合理的步骤,将命令放到RUN 后 # 清理操作 见安装后清理操作善用多阶段构建。
将经常使用到的基础镜像,先构建出来,然后在此镜像之上,构建。收集多阶段构建的Dockerfile到一起。
安装后清理操作
rm -rf intel-compute-runtime # 删除安装使用到的临时文件
apt-get remove gnupg wget apt-transport -https -y # 删除安装的不必要的垃圾文件
apt-get clean autoclean -y # 清理
apt-get autoremove -y
rm -rf /var/lib/apt/lists/* # 删除apt缓存到的文件