使用registry镜像创建私有仓库
默认情况下,仓库会被创建在容器的/var/lib/registry目录下. 可以通过-v参数将镜像文件存放在本地的指定路径. 例如下面的例子将上传的镜像放到/opt/data/registry目录:
docker run -d -p 5000:5000 -v /opt/data/registry:/var/lib/registry registry:2
此时, 在本地将启动一个私有仓库服务, 监听端口为5000.
管理私有仓库
在虚拟机上, 就查看虚拟机的ip地址, 为172.16.166.130:5000
首先使用tag命令将镜像标记为172.16.166.130:5000/test(:TAG)
dokcer tag ubuntu:18.04 172.16.166.130:5000/test
使用docker push 上传标记镜像
docker push 172.16.166.130:5000/test
出现下面情况
[root@localhost ~]# docker push 172.16.166.130:5000/test
The push refers to repository [172.16.166.130:5000/test]
Get https://172.16.166.130:5000/v2/: http: server gave HTTP response to HTTPS client
修改daemon.json文件, 如下所示
{
"registry-mirrors": [
"https://bji0ynbx.mirror.aliyuncs.com",
"https://registry.docker-cn.com",
"https://docker.mirrors.ustc.edu.cn",
"http://hub-mirror.c.163.com"
],
"insecure-registries": ["172.16.166.130:5000"], //添加这里
"dns": ["8.8.8.8","8.8.4.4"]
}
重新加载文件, 并重启docker
systemctl daemon-reload
systemctl restart docker
再次执行push命令
下载已经上传的镜像
当我们使用另一台计算机pull镜像的时候也需要修改/etc/docker/daemon.json文件
"insecure-registries": ["172.16.166.130:5000]"
修改Docker daemon的启动参数, 添加如下参数, 表示信任这个私有仓库, 不进行安全证书检查:
DOCKER_OPTS="--insecure-registry 172.16.166.130:5000"
之后重启docker服务, 并从私有仓库中下载镜像到本地
:
docker pull 172.16.166.130:5000/test
linux + apache2 + mysql + php
当我们下载镜像的时候, 一定要到
官网查看一下详细信息, 例如当前我们下载的镜像, mysql的默认root密码是Admin2015
, php版本是5.6,
下载镜像
docker pull linode/lamp
建立docker卷
docker volume create lamp_www # apache的web根目录
docker volume create lamp_apache_conf # apache的配置目录
docker volume create lamp_mysql_conf # MySQL的配置目录
docker volume create lamp_mysql_data # MySQL的数据目录
已经建立好的docker卷,在宿主机的目录为:
/var/lib/docker/volumes/
启动镜像
docker run -it -p 80:80 -p 3306:3306 -v lamp_www:/var/www -v lamp_apache_conf:/etc/apache2 -v lamp_mysql_conf:/etc/mysql -v lamp_mysql_data:/var/lib/mysql --name lamp linode/lamp /bin/bash
按照官方镜像的说明,我们使用了-i和-t两个参数,直接进入到了容器内.
如果想退出容器,请不要使用exit或ctrl+d.这样会将容器直接关闭.
退出请使用ctrl + p , ctrl + q
进入终端
docker exec -it lamp bash
启动apache2和mysql
service apache2 start
service mysql start
# 可以通过netstat -pant 命令查看80和3306端口有没有开启成功
设置mysql允许root远程登录,及设置root的密码
mysql -u root -p
#密码:Admin2015
#修改root可远程登录:
mysql>use mysql;
mysql>update user set host = '%' where user = 'root' and host='127.0.0.1';
#修改密码:
mysql>update user set password=password("your_password") where user='root';
#刷新权限
FLUSH PRIVILEGES;
安装php扩展
apt-get update
apt-get install -y php5-mysql
apt-get install -y php5-gd
...
service apache2 restart
netstat -pant
apt-cache search php5-*
最后测试是否可用
运行镜像(会自动下载)
docker run -d -p 80:80 -p 3306:3306
容器启动之后, 打开浏览器, 访问demo页面.
部署自定义PHP应用
默认的应用启动了一个helloWorld应用
...
# 指定容器开启自启
docker update --restart=always 容器名
# 指定容器关闭自启
docker update --restart=no 容器名