昨天莫名其妙把deeping整崩了,花了一下午去抢救,但是最后还是重装了。。然后从昨天晚上开始配环境,结果php依赖出了问题,一些插件就装不上。看deepin论坛很多人都回复用docker吧,加上学长也是说docker很好用,然后今天就开始了dockerの初体验

安装

wget -qO- https://get.docker.com/ | sh   
#首先安装docker  
[email protected]:~/Desktop$ cd /run/
[email protected]:/run$ ls -al docker.sock 
srw-rw---- 1 root docker 0 3月  14 16:15 docker.sock
#可以看到docker组的用户是拥有w权限的,而其他用户没有任何权限,所以我们运行docker的时候就会需要sudo
sudo usermod -aG docker $USER 
#我们可以直接把当前用户加入docker用户组,这样就会省了很多事。
newgrp - docker
#如果添加群组后没有重启,就会需要手动切换用户组

这里也可以切换为国内的镜像源
编辑/etc/docker/daemon.json文件
写入配置:

{
  "registry-mirrors": ["http://hub-mirror.c.163.com"]
}

使用

做完以上的事情就相当于安装好了docker,可以看下效果了

[email protected]:~/Desktop$ sudo service docker start
#启动docker服务
[email protected]:~/Desktop$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete 
Digest: sha256:2557e3c07ed1e38f26e389462d03ed943586f744621577a99efb77324b0fe535
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

hello-world是我们从镜像源拉取的第一个docker,毫无疑问当我们需要运行docker的时候,就用 docker run “xxx” ,这个XX是我们需要用到的docker名字,如果本地没有,就会从镜像源拉取

配置LAMP服务

当然,这才是我的最终目的。

[email protected]:~/Desktop$ docker search lamp
NAME                                   DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
linode/lamp                            LAMP on Ubuntu 14.04.1 LTS Container            167                                     
tutum/lamp                             Out-of-the-box LAMP image (PHP+MySQL)           114                              
#首先搜索lamp,下面选一个最高stars的用吧
[email protected]:~/Desktop$ docker pull linode/lamp

接下来我们需要配置好lamp的相关文件

[email protected]:/var/www/docker/lamp$ ls -al
总用量 20
drwxr-xr-x 5 yumu yumu 4096 3月  14 15:41 .
drwxr-xr-x 3 yumu yumu 4096 3月  14 16:18 ..
drwxr-xr-x 8 yumu yumu 4096 3月  14 15:40 apache2
drwxr-xr-x 4 yumu yumu 4096 3月  14 15:40 mysql
drwxr-xr-x 3 yumu yumu 4096 3月  14 15:41 www
#这里我直接复制的/etc/apache2、/etc/mysql、www目录下是example.com

docker run -p 81:80 -p 3307:3306 -v ${PWD}/lamp/apache2/apache2.conf:/etc/apache2.conf 
-v ${PWD}/lamp/mysql:/etc/mysql -v ${PWD}/lamp/www/:/var/www --name lamptest -i -t linode/lamp
#-p 为映射端口、-v 为映射目录、--name 应该算是一个备注吧、-i -t 为打开shell,

$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                                        NAMES
1ad009c31dc0        linode/lamp     "/bin/bash"         30 seconds ago      Up 28 seconds       0.0.0.0:81->80/tcp, 0.0.0.0:3307->3306/tcp   lamptest
#在别的shell窗口查看这个docker的信息

docker comment 1ad009c31dc0(上面的ID) yumu/dockerlamp
#等自己做一些必要的改动以后(比如添加php模块,修改mysql密码 等等。。),就可以定制自己的专属镜像了
$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
yumu/dockerlamp     latest              5ad4d2deea0c        15 seconds ago      482MB
#这里就可以查看到自己的镜像了,下次就可以用这个快速启动lamp服务,省下了配置的时间,然后也可以用脚本一键启动。

本文只是草草的记录下,以备作者本人查阅,如果需要更详细的命令等过程,还请自行查资料学习一番= =。


请相信你的指尖拥有改变世界的力量。