docker学习

基础命令

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 此镜像指定一些端口 设置    就成功部署环境。
posted @ 2021-09-03 11:33  DH余独不觉  阅读(71)  评论(0编辑  收藏  举报