上篇文章提到了一些简单的docker命令,这里主要展示一下我们如何将我们需要的服务利用docker一步一步把它跑起来,文章内容不够全面,仅供学习参考使用。
穿梭门:Docker之常用命令

尝鲜

我们可以从最简单的Hello World开始,感受一下Docker的运行效果,直接在命令行执行下面的命令,就能从官方仓库中拉取指定名字的镜像。如果拉取的是自己或其他渠道提供的镜像,pull后面带指定路径即可。

docker pull hello-world

拉取成功后执行docker images可以看到拉下来的镜像列表,然后我们直接跑起来

docker run hello-world

docker_run
输出这段提示后,hello world就会停止运行,容器自动终止。有些容器不会自动终止,因为提供的是服务,比如我们常部署的服务等。

注:
docker run命令具有自动抓取image文件的功能,如果发现本地没有指定的image,就会从仓库中自动抓取,也就是前面的docker pull并不是必须的。

正餐

上面的hello-world明显不能满足我们的欲望,我们的实际需求是将我们自己原本跑在VM或物理机上的服务能部署在Docker上面,那我们现在就开始吧。

Dockerfile

要达到我们的目的,不能离开的就是这个Dockerfile文件,Docker是根据该文件来生成二进制的image文件。我们直接使用一个实际的样例来进行讲解,新建一个文件并命名Dockerfile

FROM centos

RUN  curl -O 'https://dl.google.com/go/go1.11.5.linux-amd64.tar.gz' && \
        tar -C /usr/local -zxvf go1.11.5.linux-amd64.tar.gz && \
        echo 'export PATH=$PATH:/usr/local/go/bin' >> /etc/profile && \
        source /etc/profile

上面文件的内容写的很简单,主要实现的功能就是在centos环境搭建一个golang环境,当然其中省掉了GOPATH的配置,需要的话可以直接参照上面的步骤。

注:
FROM是指从需要的镜像源,可以是本地的,也可以是远端的,他的优先级是:本地获取->远端
RUN是指执行命令

编译

在Dockerfile文件所在路径下进行我们的docker构建,构建命令如下:

docker build -t centos-go:1.11.5 .

其中-t是指定镜像名称centos-go1.11.5是打的tag,详细参考docker build --help。命令最后的点.表示Dockerfile的路径。使用

docker images

就能看到我们刚编译好的本地镜像了
docker_images

运行

一个最基本的镜像就这么编译好了,我们把它跑起来并进入容器内部

$ sudo docker run -it centos-go:1.11.5 bash
[root@c2713b0babbe /]# cat /etc/profile
# /etc/profile

# System wide environment and startup programs, for login setup
# Functions and aliases go in /etc/bashrc

# It's NOT a good idea to change this file unless you know what you
# are doing. It's much better to create a custom.sh shell script in
# /etc/profile.d/ to make custom changes to your environment, as this
# will prevent the need for merging in future updates.

...

unset i
unset -f pathmunge
export PATH=$PATH:/usr/local/go/bin

此时你已经发现运行的镜像中已经将我们配置的golang配置加载进去了。运行到这里,其实我们完成了重要的一步了,很多服务的运行基础环境就是这么来的,打一个基础镜像版本,然后将基础镜像推送到自己的镜像仓库中,比如腾讯云或阿里云仓库,下次构建项目服务的时候就基于此基础版本来进行编译。

Dockerfile语法

See More:官方文档

FROM node:8.4
COPY . /app
WORKDIR /app
RUN npm install --registry=https://registry.npm.taobao.org
EXPOSE 3000

注:
FROM node:8.4:该 image 文件继承官方的 node image,冒号表示标签,这里标签是8.4,即8.4版本的 node
COPY . /app:将当前目录下的所有文件(除了.dockerignore排除的路径),都拷贝进入 image 文件的/app目录
WORKDIR /app:指定接下来的工作路径为/app
RUN npm install:在/app目录下,运行npm install命令安装依赖。注意,安装后所有的依赖,都将打包进入 image 文件
EXPOSE 3000:将容器 3000 端口暴露出来, 允许外部连接这个端口
其它命令如下
dockerfile_cmd

其它

常用运行命令

运行

docker run -d -p 8888:80 nginx

运行nginx服务,并将本机端口8888与nginx的80端口进行绑定。

查看日志

docker logs --help

里面可以列表很多命令,如指定时间返回内的日志等,大家各自执行以下,各取所需。

进入终端

docker exec -it cfc49596eedf /bin/bash

注:
更多有效命令可以多多执行--help,里面看一下就能解惑了

© 2019·蜀ICP备18036663号-1 · 本页总阅读量 · 本站总访问量 · 本站总访客数