昨天莫名其妙把deeping整崩了,花了一下午去抢救,但是最后还是重装了。。然后从昨天晚上开始配环境,结果php依赖出了问题,一些插件就装不上。看deepin论坛很多人都回复用docker吧,加上学长也是说docker很好用,然后今天就开始了dockerの初体验
安装
代码语言:javascript复制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文件 写入配置:
代码语言:javascript复制{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
使用
做完以上的事情就相当于安装好了docker,可以看下效果了
代码语言:javascript复制[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服务
当然,这才是我的最终目的。
代码语言:javascript复制[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的相关文件
代码语言:javascript复制[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服务,省下了配置的时间,然后也可以用脚本一键启动。