返回顶部

Docker

docker linux 安装配置

linux安装

sudo wget -qO- https://get.docker.com | sh 

安装成功

 遇到以下问题

sudo apt-get -f install

  

 

执行

 docker安装成功后默认只允许root用户运行,所以我们要把普通的用户添加docker用户组中 

sudo usermod -aG docker python

更新用户组  

newgrp docker

检测docker 信息  

docker info

  

 

 

配置国内镜像加速

在/etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件)

{
  "registry-mirrors": [
    "https://registry.docker-cn.com"
  ]
}

重新启动服务

sudo systemctl daemon-reload

sudo systemctl restart docker

    

                             docker架构介绍

 

 

查看当前有哪些镜像

docker images

运行当前镜像中的 ubuntu 输入 hello world

docker run ubuntu echo hello world

输出结果如下

docker 实战第一步

运行nginx镜像

docker run --name webserver -d -p 8080:80 nginx

本地没有的话会远程下载

输入自己ip地址

http://192.168.228.135:8080/

  

 

这条命令会以Nginx为镜像创建并启动一个容器,映射了80端口,这样我们可以在浏览器中访问这个Nginx服务器!假设,我们现在不喜欢这个欢迎页面的样式,

想把它改为“Hello Docker!”

创建index.html

<html>

<h1>hello docker</h1>

</html>  

 运行以下命令

docker cp index.html d94ddbd2ee54://usr/share/nginx/html/ 

 刷新浏览器

查看当前运行的容器

docker ps

  

停止当前运行的nginx

docker container stop a930e6cfafdd
或者
docker stop a930e6cfafdd

再次查看 当前运行的容器

 docker ps  

 

再次启动nginx

docker run -p 8080:80 -d nginx

我们发现不是原来我们改动的页面,这是因为docker在内部的改动都是暂时的,没有被保存下来

我们可以在修改后进行提交

docker cp index.html 21567621f574://usr/share/nginx/html/ 

提交

docker commit -m 'fun' 21567621f574  nginx-fun1

  

这时候会创建一个新的容器 

 docker images

下次可以使用这个新的容器运行,返回的是我们修改后的页面

docker run -p 8080:80 -d nginx-fun1

 

列出所有的容器运行的记录  

docker ps -a

 挨个删除历史记录

 

 常用命令

 dockerfile

 通过编写简单的文件自创docker镜像

第一个dockerfile 案例

创建Dockerfiler 文件 写入以下内容 ,apliner 专门针对docker做的极小的linux 环境。 MAINTAINER 维护人员的名字  CMD 命令 

FROM alpine:latest
MAINTAINER zhangbiao
CMD echo 'hello docker'

使用docker build命令进行构建 构建容器  

 -t : 标签的名字

 docker build -t hello_docker .

 

查看所有容器

 

运行这个容器

docker run hell0_docker

输出结果如下

 

 

创建 dockerfiles目录

在dockerfiles目录下创建 Dockerfile 

FROM ubuntu
MAINTAINER zhangbiao
RUN sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
RUN apt-get update
RUN apt-get install -y nginx
COPY index.html /var/www/html
ENTRYPOINT ["/usr/sbin/nginx", "-g", "daemon off;"]
EXPOSE 80

在dockerfiles目录下创建index.html

今天是周日

 

 使用docker build命令进行构建 构建容器 

docker build -t zb/hello-niginx .

查看所有的容器   

  

 要没安装nginx的话要先安装

apt-get install -y nginx

停止nginx  

sudo nginx -s stop

运行新创建的容器

docker run -d -p 80:80 zb/hello-niginx 

访问80

curl http://localhost

 

dockflie语法

镜像分层

dockerfile中每一行都产生一个新层

存储 Volume(数据卷)

第一种挂起一个数据卷

Volume 提供独立于容器之外的持久化存储 

运行一个nginx容器 ,-v 挂起一个卷,nginx用来访问网页的地址 , -d 以守护进程来运行,--name 给一个名字

docker run -d --name nginx -v /usr/share/nginx/html/ nginx

  

检查容器的运行状态

docker inspect nginx

  

以下可以看到把宿主机的Source 地址,挂载到了容器Destination地址

查看宿主机Source 中的文件,需要进入超级管理员

su

cd /var/lib/docker/volumes/c964bf96a762050a1414d42ca5da49f12596ff05929b0ce28d940f3efda06ee3/_data

ls

  

 

对index.html文件做一些改动

echo "it's 2018" > index.html 

 

进入nginx容器中查看,有没有被修改  

docker exec -it nginx /bin/bash

cd /usr/share/nginx/html/

ls

cat index.html

 

输出结果如下

第二种通过本地目录挂载到容器里面的数据卷中去

把当前运行的的容器关掉

 

把当前目录下的 html 挂载到nginx容器里面的数据卷中去

html/index.html

<html>

<h1>hello docker</h1>

</html>

 

docker run -p 80:80 -d -v $PWD/html:/usr/share/nginx/html nginx 

访问结果如下 

修改index.html中的内容

<html>

1+1=2

</html>  

  

刷新网页后,发现页修改了

第三种创建一个仅仅提供数据的容器,把这个容器当做volume挂载到其它容器里面去

mkdir vol3

cd vol3/

mkdir data

# -v 表示的是volume(数据卷)  --name 名字 ubuntu 是这个容器的基础镜像
docker create -v $PWD/data:/var/mydata --name data_container ubuntu

 

运行一个新的容器,把上面提供数据的容器当做数据卷挂载到当前的容器中运行,-it表示交互的方式运行,会直接进入到这个容器中

docker run -it --volumes-from data_container ubuntu /bin/bash

 

创建一个文件 

cd /var/mydata/

touch whatever.txt
# 退出
ctrl +d 

 

查看data 目录我们可以看到这里面多了一个whatever.txt的文件,说明了 data_container 这个容器被当做了数据卷,被多个容器共享 

cd data

ls

 

Registry

 

 搜索镜像

docker search whalesay

 

按照starts 从大到小排序

 

拉取镜像

 docker pull docker/whalesay

 

查看下载的镜像  

docker images

运行该镜像

docker run docker/whalesay cowsay 你好啊

 

 把一个存在的镜像用自己的用户名,产生一个新的镜像,1273844671是自己的pid

docker tag docker/whalesay 1273844671/whalesay

  

把自己的镜像共享到dockerhub上去

docker push 1273844671/whalesay/

  

上传成功后,登陆dockerhub官网

https://hub.docker.com/u/1273844671

 

查看个人信息中就要自己上传的镜像

  

compose  

compose windows和Mac自带

linux 需要自己安装

sudo curl -L https://github.com/docker/compose/releases/download/1.9.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

修改权限变为可执行的文件

sudo chmod a+x /usr/local/bin/docker-compose

检查版本

docker-compose --version

 

 

 

使用Docker安装FastDFS

 

1. 获取镜像

可以利用已有的FastDFS Docker镜像来运行FastDFS。

获取镜像可以通过下载

docker image pull delron/fastdfs 

2. 运行tracker

执行如下命令开启tracker 服务  

docker run -dti --network=host --name tracker -v /var/fdfs/tracker:/var/fdfs delron/fastdfs tracker 

我们将fastDFS tracker运行目录映射到本机的 /var/fdfs/tracker目录中。 

执行如下命令查看tracker是否运行起来  

docker container ls 

如果想停止tracker服务,可以执行如下命令

docker container stop tracker 


停止后,重新运行tracker,可以执行如下命令

docker container start tracker

3. 运行storage

执行如下命令开启storage服务

docker run -dti --network=host --name storage -e TRACKER_SERVER=10.211.55.5:22122 -v /var/fdfs/storage:/var/fdfs delron/fastdfs storage 

* TRACKER_SERVER=本机的ip地址:22122 本机ip地址不要使用127.0.0.1 

* 我们将fastDFS storage运行目录映射到本机的/var/fdfs/storage目录中 

执行如下命令查看storage是否运行起来  

docker container ls 

如果想停止storage服务,可以执行如下命令

docker container stop storage 

停止后,重新运行storage,可以执行如下命令

docker container start storage 

4.此时两个服务都以启动,进行服务的配置。  

进入storage容器,到storage的配置文件中配置http访问的端口,配置文件在/etc/fdfs目录下的storage.conf  

默认端口是8888,也可以不进行更改

5.配置nginx,在/usr/local/nginx目录下,修改nginx.conf文件 

默认配置如下:

 

也可以更改为如下所示:

location /group1/M00 {
        alias  /var/fdfs;
    }

6.此时文件系统以搭建完毕,使用web模块进行文件的上传,将文件上传至FastDFS文件系统,此处不详细解释,可以问度娘,Python中有相应的扩展包,可直接使用。此处我往文件系统的目录中放置一张照片进去,然后通过url地址进行访问。  

此处展示了FastDFS文件系统的存储结构,在服务器中storage目录下的data中创建了这么多的文件夹进行文件的存储。

将一张照片(cumt.png)放置在/var/fdfs/storage目录下,进入storage容器,进入/var/fdfs目录,运行下面命令:

/usr/bin/fdfs_upload_file /etc/fdfs/client.conf cumt.png

此时将该图片已上传至文件系统,并在执行该语句后返回图片存储的uri:  

通过url访问http://ip:8888/group1/M00/00/00/wKgBcFvTv86AOwckAAFbd_uukFc519.png,即可查看到图片(图片为透明背景,所以如此显示)。  

 

 

 

posted @ 2018-12-16 22:39  Crazymagic  阅读(415)  评论(1)    收藏  举报