基础命令
docker pull 镜像名称
docker search 查找远程镜像仓库
已有镜像:docker images
运行镜像 docker run -d (非阻塞) -p(指定端口映射 80:80) 镜像名称
docker run -d -p 80:80 --name mynginx -v(映射,外部文件修改就可以影响内部文件修改) ‘pwd’:/usr/share/nginx/html
当前容器状态 docker ps
进入容器: docker exec -it 容器id (eg-》nginx: docker exec -it 98jj bash)
delete 容器 docker rm -f 容器id
提交容器成为一个新的镜像 docker commit 容器id 镜像名称
Dockerfile方式
dockerfile文件 vim dockerfile
docker build -t m2(镜像名称) ./
docker 镜像保存为tar文件
docker save m2 > 1.tar
docker 删除镜像 docker rmi 镜像名 需要讲已经运行的该镜像容器删除掉
docker load < tar文件名 加载镜像,到自己的镜像中
生产环境使用
docker run -dit --name mynginx nginx
docker run -dit --link mynginx:mynginx alpine
dockercomposer 方式写。yml文件 集成nginx php mysql
实际使用中是先(比如git项目管理)项目写好dockercompose在项目代码中, 然后项目中的人运行此yml文件,集成以及映射项目代码,生成一个统一的环境。
docker 所需例子
安装 centos
docker pull centos:centos7
docker images
docker run -itd --name centos-test centos:centos7
docker exec -it centos-test /bin/bash
准备镜像
首先当前目录可以先创建好镜像 docker images (nginx php docker.io/mysql docker.io/centos)
编写docker-compose.yml
当前目录下docker-compose.yml
创建本地挂载的目录
nginx目录
mkdir -p /data/nginx/{conf,html,logs}
mysql目录
mkdir -p /data/mysql/{conf,data}
由于mysql容器的/etc/mysql/my.cnf里的配置内容为:(注意感叹号)
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/
#注意!includedir /etc/mysql/conf.d/包含/etc/mysql/conf.d/目录下的*.cnf配置内容
#实现验证为# cat /data/mysql/conf/my.cnf
[mysqld]
skip-grant-tables
启动mysql容器可以实现在mysql容器内直接用mysql命令登录数据库
用docker-compose运行并管理lnmp环境
docker-compose命令必须在存在docker-compose.yml目录下输入:启动lnmp
docker-compose up -d
常用的dockercompose操作
docker-compose up -d #后台docker-compose.yml所有容器
docker-compose down #关闭docker-compose.yml所有容器
docker-compose ps #查看所有容器的状态
docker-compose restart 容器名 #重启启动某个容器
更多的docker-compose命令的话,请查看docker-compose -h
验证
[root@dingzhi ~]# vi /data/nginx/html/test.php
<?php
echo "Hello lituxiu<br/>";
echo "Hello PHP<br/>";
$conn = mysqli_connect("mysql","test","123456");
if(!$conn){
echo "连接数据库失败";
}else{
echo "连接数据库成功";
}
phpinfo();
?>
浏览器访问:http://192.168.21.140/test.php
参考网址
https://blog.csdn.net/lituxiu/article/details/89338569
docker安装centos
1:镜像:docker pull hub.c.163.com/public/centos:7.2-tools
2.创建容器: docker run -d -p 5000:22 --name centos-test --privileged=true hub.c.163.com/public/centos:7.2-tools /usr/sbin/init
3:进入容器:docker exec -it centos-test /bin/bash
4:修改密码:passwd root
5:然后就可以连接终端5000端口
docker安装lnmp
镜像:docker pull winstonpro/lnmp
源不行可以换源 vi /etc/docker/daemon.json
"registry-mirrors": ["https://758dkarj.mirror.aliyuncs.com"]
systemctl daemon-reload
systemctl restart docker
docker run -d -p 50001:80 -p 50002:443 -p 50003:3306 -p 50004:22 --name lnmp winstonpro/lnmp
直接访问ip:50001端口
当存在docker容器不符合需求需要在基础上加一些东西的时候
比如端口映射少了一些,目录映射少了一些,可以先把容器保存为镜像,然后再次使用新镜像添加-p,-v 映射新的端口和目录。如此保持原本容器不变
docker commit -a "king西阳" -m "a new image" [容器名称或id] [打包的镜像名称]:[标签]
常用OPTIONS说明:
-a :提交的镜像作者
-c :使用Dockerfile指令来创建镜像
-m :提交时的说明文字
-p :在commit时,将容器暂停
查看宿主机端口是否和容器内端口映射成功,在容器外执行
netstat -an |grep 宿主机的映射端口
服务器
安装docker
无网服务器安装部署整个环境
在有网的服务器下面,使用docker,将环境配置好,项目放置部署好,打包容器成自己的镜像(commit),然后(save)为一个安装包tar,
在无网环境下,ftp等 传入docker安装包以及此镜像tar包,docker load 此tar包称谓新的镜像, run 此镜像指定一些端口 设置 就成功部署环境。