Docker简明使用教程
本文章主要记录笔者一天对Docker命令使用的初级探究,记录常用命令的使用方式及其含义以做备忘。
一些概念
以下只是列出仓库、镜像和容器的简单解释。
仓库
用于存放镜像的地方,最大的仓库为Docker Hub,类比于Github。
镜像
用于创建容器的模板,可以理解为面向对象的类。
容器
真实用来跑应用的实体,可以理解为面向对象的对象。
命令操作
镜像
创建
镜像的创建方式有多种,可以:
直接从官方仓库拉取,比如:docker pull ubuntu:16.04,其中ubuntu为library/ubuntu的缩写,表示官方维护的;16.04表示镜像的标签,如果省掉则为latest表示最近的标签。
通过Dockerfile创建,比如:docker build -t ifpelset/test .,注意最后的有一个.代表Dockerfile的路径为当前路径,要保持当前路径没有其他文件,不然docker会拷贝这些文件到镜像。Dockerfile案例如下:
|
|
关于ENTRYPOINT:存在CMD与其有相同的作用,但是笔者使用没有达到效果,推荐使用ENTRYPOINT;因为一旦一个容器没有存活的进程,docker容器进程也将退出,如果你是启动服务或者使用后台运行,请在后面加上&& bash。如:ENTRYPOINT service ssh start && bash 在容器启动的时候直接启动sshd服务。
可以直接使用docker run -d –name container_name image_name[app params] 实现创建一个容器,并且在启动容器时候自动运行app。从而达到与ENTRYPOINT相同的效果且不需要去单独编写Dockerfile并build。
通过tar文件创建,比如:docker load -i xxxx.tar,其中xxxx.tar文件为通过docker save导出的。
通过从容器commit创建,比如:docker commit -m “message” container_name image_name:tag,类比于git commit。
导出
由于DockerHub的访问速度很慢,一般将私有的镜像导出为tar文件,部署到目标机器。使用命令:docker save -o xxxx.tar image_name:tag。
删除
删除镜像可以使用命令docker rmi image_name:tag,如果遇到删除失败,请使用-f选项。
查看
查看本机有哪些镜像,可以使用命令docker images,即可列出。
容器
创建
创建容器可以使用命令docker run达到效果,这里简单列出几个使用案例:
- 创建一个容器并提供一个交互的shell以及做一个端口映射,命令如下:
|
|
其中:
|
|
- 创建一个容器并后台执行,对于已经指定容器启动就运行应用来说很适用,命令如下:
|
|
其中:
|
|
如果遇到容器中的应用需要mount之类的操作,请在命令中加入–privileged选项。
删除
删除容器可以使用命令docker rm container_name,如果遇到删除失败,请使用-f选项。
查看
查看本机存在哪些容器,可以通过docker ps -a,其中-a会列出所有的容器(包括没用运行的)。
启动
可以通过命令docker start container_name启动容器。
停止
可以通过命令docker stop container_name停止容器。
自动启动
要实现容器在主机重启之后自动重启,可以将该容器作为systemd服务,并加入开机启动。service样例如下:
|
|
然后通过命令systemctl enable imsc-nodes-container.service即可加入开机自启。
参考链接
- Docker Tutorial,runoob
- How to automatically start a service when running a docker container?,mtmacdonald
- CHAPTER 3. USING SYSTEMD WITH CONTAINERS,redhat
2017-9-22 于 成都