部署一个R应用,用到了docker。
在mac上安装Docker Desktop,安装后可在终端上用docker version查看docker版本。
搜索镜像:
docker search nginx
拉取镜像:
docker pull nginx
查看本地镜像:
docker images
image id标记一个镜像。repository:tag也标记一个镜像,repository相同,但是tag可能有多个,其image id是不一样的。
删除本地镜像:
docker rmi nginx:latest
或者docker rmi image_id
创建一个引用本地某一个镜像的新镜像:
docker tag image_id 新repository:新tag
或者docker tag repository:tag new_repository:new_tag
如:docker tag openresty/openresty:latest openresty:latest
重命名镜像:
没有直接的命令,操作思想是先用docker tag命令复制原镜像,docker tag可以对新镜像重命名,然后在删掉原来的镜像。
docker tag openresty/openresty:latest openresty:latest
docker rmi openresty/openresty
保存镜像:
docker save -o XXX.tar image_id
如docker save -o openresty.tar 3c5b5f6743d4
什么时候保存镜像呢?在A机器上build了一个镜像,是在nginx镜像上做的,自己装了一些常用的基础组件,如vim、procps、lsof、curl、net-tools、iputils-ping、telnet,这样在新镜像的容器中就可以用vi、ps、lsof、curl、ping、telnet等命令了。很多pull下来的镜像是不预装这些基础组件的,导致这些常用命令用不了,需要自己安装。想要在B机器上用这个我们预装好的镜像启动一个容器,则需要在A机器上保存此镜像,下载,然后上传到B机器上,在B机器上安装docker,然后载入此镜像,再启动容器即可。
载入镜像:
docker load -i XXX.tar
之后,可以用docker images命令查看是否载入成功,载入成功的话,就可以正常使用了。
启动容器:
docker run -p 10000:80 nginx
宿主机占用10000端口,容器占用80端口。tag省略的话,默认是latest。等同于docker run -p 10000:80 nginx:latest。注意,此时是前台启动,执行ctrl+c后,容器就挂掉了。
docker run -d -p 11000:80 nginx
-d表示后台启动。
查看当前存活的容器:
docker ps
一个container id标记一个容器。
查看所有的容器,包括挂掉的:
docker ps -a
进入容器:
先docker ps 查看容器id,假如是775c7c9ee1e1,则继续执行 docker exec -it 775c7c9ee1e1 /bin/bash
docker命令设计的很有规范,不记得后面参数的话,可以用--help查看,如docker images --help。