docker常用命令

基本命令

docker images:查看镜像
docker create –name -p : -v : : 创建容器
docker start -a :启动容器
docker rmi : 删除镜像,如果强制删除增加-f
docker load –input <镜像文件>:加载镜像
docker save -o <文件名> <镜像>
docker inspect 容器名称: 查看详情
docker exec -it 容器id bash

Docker镜像保存

创建Docker镜像后,可以发布到Docker Hub进行共享,可如果我们只希望在组织内部署,不希望生成的镜像公开,这时可以将镜像保存为本地文件,使用下面的命令:
docker save -o test-image.tar test-image
这样镜像test-image就被保存到文件test-image.tar中。将这个文件拷贝到需要部署的机器,执行:
docker load –input test-image.tar
可以将镜像进行加载。

容器开机启动

对于数据库、消息队列等服务,我们希望开机可以启动,如果这些服务安装在docker容器中,我们希望开机自动启动docker容器。

docker 容器如果设置开机自动启动,可以使用参数–restart=always,如果修改现存的容器,可以使用docker update 命令增加参数:
docker update –restart=always。

一个镜像创建多个容器

docker可以使用一个镜像创建多个容器,使用docker create可以创建容器,然后映射不同的端口和配置,代码示例如下:
sudo docker create –name testdocker -p 5000:80 zhenlei1970/testdockernew
上面的代码创建镜像名称为zhenlei1970/testdockernew的容器,名称为testdocker,将端口80映射为本地端口5000。
然后可以运行这个容器:
sudo docker start -a testdocker
使用同样的语句模式可以创建另一个容器:
sudo docker create –name testdocker1 -p 5002:80 zhenlei1970/testdockernew
使用的镜像一样,只是名称和端口不一样,启动方法相同:
sudo docker start -a testdocker1
这样我们就同时运行了一个镜像的两个容器,使用浏览器可以分别访问这两个实例。

Docker文件映射注意事项

Docker 可以映射文件,需要注意,文件路径必须完整,并且映射的文件必须存在,如果不存在,会认为是目录。映射的文件内容会传递到容器,并不是将镜像中现有的文件复制出来。所以,如果需要映射单个文件,需要先编辑好并放置在目录中。

查看container创建命令

在docker创建完contaienr之后,如果出现问题,只能删除重建(比如,在创建之初经常忘记映射日志目录,数据库的初始密码不合适导致无法运行等等),这时希望查看一下创建的命令,可是docker本身似乎没有这个命令。在网上查了一下,有个python工具好像可以,在ubuntu中安装试了一下,还可以使用。安装过程如下。
首先安装pip:

1
apt install python-pip

然后使用pip安装runlike:

1
pip install runlike

最后,可以使用runlike查看docker容器的创建命令了:

1
runlike 容器名

Docker虚拟网络

在docker容器中访问数据库,配置文件中不能使用Localhost或者127.0.0.1,因为数据库不在容器内部,需要使用外部ip地址,如果数据库也使用docker部署,那么需要创建一个虚拟网络,使数据库与使用它的docker容器在一个网络中。创建网络的命令如下:
docker network create linkmongdb
创建容器时使用这个网络:
docker create –name flowdata –network linkmongdb -p 5678:80 webflowdatacenter
在配置文件中需要使用这个网络的ip地址,使用下面的命令查看:
docker network inspect linkmongdb