最近由于工作上又用到了Docker,所以在此重新整理了下整体Docker的入门基础知识
Docker install
以ubuntu下的安装方式为例:
- 更新软件源
sudo apt-get update
- 下载Docker
sudo apt-get install docker.io
- 把当前用户加入到docker用户组中(Docker默认只能以root用户运行)
sudo gpasswd -a ${USER} docker
-
当前用户退出系统重新登录
su root
su ${USER} - 验证Docker是否安装成功
service docker status
- 看到命令行中显示Docker是running状态则证明安装成功!
Docker image
- 查询目前有多少个镜像源
docker images
- 从官方镜像仓库中拉取镜像
docker pull ${image name}:${version} 不写版本默认是latest
如:docker pull ubuntu 或者 docker pull ubuntu:16.04
- 从本地镜像仓库导出镜像
docker save -o [file path/filename] [image name]
- 从某个文件中导入镜像
docker load > [file path/filename]
Docker container
- 查询目前有多少个容器运行
docker ps
- 根据某个镜像开启一个容器
docker run [Options] -it ${image name} [command] [args...]
Options:增加的一些额外参数,可不要,如 docker run -it ubuntu /bin/bash
-p:容器端口与宿主主机的端口映射关系,后面的是容器的端口,如docker run -p 10.23.1.198:18888:18888 -it achain-wallet /bin/bash
-d:是否以后台进程的方式运行该容器
-v:挂在宿主主机的目录到对应的容器目录中,注意只能是绝对路径的,如 docker run -v /home/yujian:/data/soft -it /bin/bash
Dockerfile
Dockerfile命令
- ADD
ADD命令有两个参数,源和目标。它的基本作用是从源系统的文件系统上复制文件到目标容器的文件系统。如果源是一个URL,那该URL的内容将被下载并复制到容器中.
ADD [source directory or URL] [destination directory]
如:ADD /my_app_folder /my_app_folder
- CMD
和RUN命令相似,CMD可以用于执行特定的命令。和RUN不同的是,这些命令不是在镜像构建的过程中执行的,而是在用镜像构建容器后被调用.
CMD application "argument", "argument", ..
CMD "echo" "Hello docker!"
- EXPOSE
用来指定端口,使容器内的应用可以通过端口和外界交互
EXPOSE [port] 多个之间以空格隔开
如:EXPOSE 8080
- ENTRYPOINT
配置容器启动后执行的命令,并且不可被 docker run 提供的参数覆盖.每个 Dockerfile 中只能有一个 ENTRYPOINT,当指定多个时,只有最后一个起效.ENTRYPOINT 帮助你配置一个容器使之可执行化,如果你结合CMD命令和ENTRYPOINT命令,你可以从CMD命令中移除“application”而仅仅保留参数,参数将传递给ENTRYPOINT命令。
ENTRYPOINT application "argument", "argument", ..
如:# Remember: arguments are optional. They can be provided by CMD or during the creation of a container.
ENTRYPOINT echo
#Usage example with CMD:
#Arguments set with CMD can be overridden during run
#Arguments set with CMD can be overridden during run
CMD "Hello docker!"
ENTRYPOINT echo
- RUN
RUN命令是Dockerfile执行命令的核心部分。它接受命令作为参数并用于创建镜像。不像CMD命令,RUN命令用于创建镜像(在之前commit的层之上形成新的层)。
RUN [command]
如:RUN apt-get install -y vim
- FROM
FROM命令必须是Dockerfile的首个命令,用于指定使用哪个基础镜像作为构建流程,该基础镜像一般是要能从官方仓库中找得到的
FROM [image name]
如:FROM ubuntu
- ENV
ENV命令用于设置环境变量。这些变量以”key=value”的形式存在,并可以在容器内被脚本或者程序调用
ENV key value
如:ENV SERVER_WORKS 4
- VOLUME
VOLUME命令用于让你的容器访问宿主机上的目录
VOLUME ["/dir_1", "/dir_2" ..]
如:VOLUME ["/my_files"]
- WORKDIR
WORKDIR命令用于设置CMD指明的命令的运行目录
WORKDIR /path
如:WORKDIR ~/