docker 初探 读书笔记 《docker 经典实例》
因为众所周知的原因,在国内访问某些网站的时候体验非常不好,所以docker安装源建议采用本地的安装包。daocloud.io这个公司做了dockerhub的镜像。
安装脚本:
curl -sSL https://get.daocloud.io/docker | sh
这儿比较麻烦的是,需要从上面的那个网站注册一个账号,才能获得一个加速地址
参加网站:https://www.daocloud.io/mirror#accelerator-doc
修正脚本:
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://5403ff34.m.daocloud.io
或者配置阿里的镜像加速器也可以(前提也需要注册阿里云的账户哎):
#您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://etycivjq.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
配置工作就完成了,是不是很简单。下面开始一些实例:
传统的搭建可能比较费时,先配置MySQL数据库,然后配置Nginx或者Apache,然后下载安装文件,进行安装。老司机的话估计也得半个小时,如果用docker的化,不到十分钟就搞定。
[root@#localhost ~]# docker pull wordpress:latest
latest: Pulling from library/wordpress
6d827a3ef358: Pull complete
87fe8fbc743a: Pull complete
f6d1a8d304ab: Pull complete
caf3547d9b73: Pull complete
1004db2760ff: Pull complete
66e2d66a547e: Pull complete
bbfaa62c234a: Pull complete
19ce8807f4d1: Pull complete
65dc0142d59b: Pull complete
a95f4fa43ae2: Pull complete
f4edd48c3730: Pull complete
d58fc629c9d1: Pull complete
c75a71ebb7f4: Pull complete
92667bd16dd2: Pull complete
158b965a06fc: Pull complete
cdbb556ec528: Pull complete
79dd5209b5a0: Pull complete
c390e42be10f: Pull complete
Digest: sha256:980dcdf0c66aa863f309f1d2bb618f4981dcb926a43bc0f65f5d2a0c3be81149
Status: Downloaded newer image for wordpress:latest
[root@#localhost ~]# docker pull mysql:latest
latest: Pulling from library/mysql
6d827a3ef358: Already exists
ed0929eb7dfe: Pull complete
03f348dc3b9d: Pull complete
fd337761ca76: Pull complete
7e6cc16d464a: Pull complete
ca3d380bc018: Pull complete
3fe11378d5c0: Pull complete
2b5dfd325645: Pull complete
b54281d17fbe: Pull complete
7eae4db8eea5: Pull complete
76cf68e17b09: Pull complete
Digest: sha256:49b7d6d8d45f8c3300cba056e8cdf36c714d99e0b40f7005b9e6e75e64ecdf7c
Status: Downloaded newer image for mysql:latest
#数据库安装配置
[root@#localhost ~]# docker run --name mysqlwp -e MYSQL_ROOT_PASSWORD=wordpressdocker -d mysql
a57a3cc492b7df62c3ae84b0297f272408f6a0b25b084c3545a58e49f76f6f45
[root@#localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a57a3cc492b7 mysql "docker-entrypoint..." About a minute ago Up About a minute 3306/tcp mysqlwp
#配置WordPress和MySQL的链接,用了docker的--link技术
[root@#localhost ~]# docker run --name wordpress --link mysqlwp:mysql -p 80:80 -d wordpress
81a879a36bd3de6df0427060f06fd710b1cdfd9647992216eec937749d13e968
#查看进程
[root@#localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
81a879a36bd3 wordpress "docker-entrypoint..." 28 seconds ago Up 26 seconds 0.0.0.0:80->80/tcp wordpress
a57a3cc492b7 mysql "docker-entrypoint..." 2 minutes ago Up 2 minutes 3306/tcp mysqlwp
#打开浏览器进行配置
前面安装MySQL的时候用了默认的root用户,生产环境不推荐这样做。下面的例子是创建个性化的数据库。
个性安装:
docker run --name mysqlwp -e MYSQL_ROOT_PASSWORD=mypass \ #配置root密码
-e MYSQL_DATABASE=mydbname \ #数据库名称
-e MYSQL_USER=mymuser \ #数据库用户
-e MYSQL_PASSWORD=mypass_myuser \ #数据库库用户的密码
-d mysql #以守护进程的方式进行运行mysql
#将宿主机的文件夹绑定到容器中的文件夹上
docker run --name mysqlwp -e MYSQL_ROOT_PASSWORD=mypass \ #配置root密码
-e MYSQL_DATABASE=mydbname \ #数据库名称
-e MYSQL_USER=mymuser \ #数据库用户
-e MYSQL_PASSWORD=mypass_myuser \ #数据库库用户的密码
-v /home/docker/mysql:/var/lib/mysql \ #宿主机的/home/docker/mysql文件夹对应容器中后者文件夹
-d mysql #以守护进程的方式进行运行mysql
backup:
[root@#localhost ~]# docker exec -it mysqlwp mysqldump --all-databases --password=wordpressdocker > wordpress.backup
[root@#localhost ~]# ll
total 3824
-rw-------. 1 root root 1020 Nov 2 22:16 anaconda-ks.cfg
-rw-r--r--. 1 root root 3907748 Apr 4 15:41 wordpress.backup
docker run --name wordpress --link mysqlwp:mysql -p 80:80 \
-e WORDPRESS_DB_NAME=wordpress
-e WORDPRESS_DB_USER=wordpress
-e WORDPRESS_PASSWORD=mypress \
-d wordpress
Docker-Compose是Docker的一种编排服务,是一个用于在Docker上定义并运行复杂应用的工具,可以让用户在集群中部署分布式应用。
通过Docker-Compose用户可以很容易地用一个配置文件定义一个多容器的应用,然后使用一条指令安装这个应用的所有依赖,完成构建。Docker-Compose解决了容器与容器之间如何管理编排的问题。
#创建一个Wordpress应用,首先建立一个应用的目录
$ mkdir wordpress
$ cd wordpress
#创建 docker-compose.yml
$ vim docker-compose.yml
version: '2'
services:
db:
image: mysql:5.7
volumes:
- "./data/db:/var/lib/mysql"
restart: always
environment:
MYSQL_ROOT_PASSWORD: wordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
links:
- db
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_PASSWORD: wordpress
#MySQL的数据目录挂载到当前目录下,./.data/db不存在时会自动创建。
#启动应用
$ docker-compose up -d
Starting wordpress_db_1
Starting wordpress_wordpress_1
#确认启动成功
$ docker-compose ps
675777c33fdb wordpress:latest "docker-entrypoint.sh" About an hour ago Up About a minute 0.0.0.0:8000->80/tcp wordpress_wordpress_1
6edfe3786798 mysql:5.7 "docker-entrypoint.sh" About an hour ago Up About a minute 3306/tcp wordpress_db_1
#访问应用
http://localhost:8000/
参考文档:
/mysql/”>https://hub.docker.com//mysql/
/wordpress/”>https://hub.docker.com//wordpress/
使用Docker-Compose编排容器