# Docker基本使用方式

- [Window 使用 Docker 创建lnmp环境 ](#introduction)

- [常用docker命令 ](#command)

### [安装详情](https://www.cnblogs.com/wyt007/p/10656813.html)

<a name="introduction"></a>

## Window 使用 Docker 创建lnmp环境

####  创建mysql 容器

```shell script

docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=wqg951122 --name woann_mysql mysql:5.6

```

####  参数说明

- -d 让容器在后台运行

- -p 添加主机到容器的端口映射

- -e 设置环境变量,这里是设置 mysql 的 root 用户的初始密码 *

- –name 容器的名字,随便取,但是必须唯一

#### 进入容器

```shell script

docker exec -ti woann_mysql /bin/bash

```

##### 参数说明

- -t 在容器产生一个伪终端

- -i 对容器内的标准输入 (STDIN) 进行交互

#### 安装VM(每个创建的容器都要执行此步骤,后续忽略)

```shell script

apt update

```

##### 再执行

```shell script

apt-get install vim

```

####  安装完成

#### 创建php容器

```shell script

docker run -d -v /home/wwwroot:/home/wwwroot -p 9000:9000 --link woann_mysql:mysql --name woann_phpfpm php:7.2-fpm

```

####  参数说明

- -d 让容器在后台运行

- -p 添加主机到容器的端口映射

- -v 添加目录映射,即主机上的 `/home/wwwroot` 和容器中 `/home/wwwroot` 目录是同步的

- –name 容器的名字

- –link 与另外一个容器建立起联系,这样我们就可以在当前容器中去使用另一个容器里的服务。这里如果不指定–link 参数其实也是可以得,因为容器本身也是有 ip 的且唯一,所以我们也可以直接利用 ip 去访问容器。

#### 添加 php 测试文件

#####  在 `/home/wwwroot` 目录下添加测试 php 文件 `index.php`

```php

<?php phpinfo();

```

#### 创建 nginx 容器 并挂载到本地目录 `注意`:本地想访问容器必须通过-p去添加端口映射 容器中项目应该挂载在本地目录房子丢失

```shell script

docker run -d -p 80:80  -v /home/wwwroot:/home/wwwroot --link woann_phpfpm:phpfpm --name woann_nginx nginx

```

####  参数说明

- d 让容器在后台运行

- -p 添加主机到容器的端口映射

- -v 添加目录映射,这里最好 nginx 容器的根目录最好写成和 php 容器中根目录一样。但是不一点非要一模一样,如果不一样在配置 nginx 的时候需要注意

- –name 容器的名字

- –link 与另外一个容器建立起联系

####  进入到 nginx 容器修改配置文件[#](https://learnku.com/articles/21950#070bf6)

- nginx 配置文件目录在 `/etc/nginx/` 目录下

- 主配置文件为 `/etc/nginx/nginx.conf`

- 引用配置文件为 `/etc/nginx/conf.d/*.conf`

- nginx 默认创建了一个引用配置文件 (/etc/nginx/conf.d/default.conf)

执行

```shell script

vim /etc/nginx/conf.d/default.conf

```

##### 添加如下代码,让 nginx 接收到 php 请求时自动转发到 phpfpm 容器

```shell

location ~ \.php$ {

root          /home/wwwroot;

fastcgi_pass  phpfpm:9000;

fastcgi_index  index.php;

fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

include        fastcgi_params;

}

```

#### 查看刚才创建的所有容器

```shell script

docker ps

```

####  用浏览器访问 `http://127.0.0.1/index.php`, 即可看到 phpinfo 的信息页面。至此 lnmp 搭建完毕

<a name="command">

## 常用docker命令

#### 查看当前镜像

```shell script

docker images

```

#### 查看运行过的镜像

```shell script

docker ps -a

```

#### 卸载镜像

```shell script

docker rmi xxxxx (当前镜像id) || docker rm c3065afc73c4(容器ID)

```

#### 启动docker

```shell script

docker start c3065afc73c4(容器ID)

```

#### 终止容器

```shell script

docker stop c3065afc73c4(容器ID)

```

#### 进入docker容器

```shell script

docker attach c3065afc73c4(容器ID) 或者 docker exec -it  nginx(容器名) /bin/bash

```

#### 重启docker容器

```shell script

docker restart c3065afc73c4(容器ID)

```

#### 上传文件到docker容器

> 例如:将当前路径`/root/test.txt`文件 映射到id为`ecef8319d2c8`的容器`/root/`下

> docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH

```shell script

docker cp ecef8319d2c8:/root/test.txt /root/

```

docker入门基操~~~的更多相关文章

  1. Docker——入门实战

    I. Docker简介Docker是一种新兴的虚拟化技术,能够一定程度上的代替传统虚拟机.不过,Docker 跟传统的虚拟化方式相比具有众多的优势.我也将Docker类比于Python虚拟环境,可以有 ...

  2. 【转载】大白话Docker入门(二)

    原文:https://yq.aliyun.com/articles/63517?spm=a2c4e.11153940.blogcont63035.15.12011c3fddklk0 上篇的大白话Doc ...

  3. 第三章 Docker 入门

    第三章 docker 入门 3.1 确保docker已经就绪 首先查看docker程序是否存在,功能是否正常 [#3#cloudsoar@cloudsoar-virtual-machine ~]$su ...

  4. Docker入门教程(九)10个镜像相关的API

    Docker入门教程(九)10个镜像相关的API [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第九篇,重点介绍了镜像相关的Docker Remote ...

  5. Docker入门教程(八)Docker Remote API

    Docker入门教程(八)Docker Remote API [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第八篇,重点介绍了Docker Remote ...

  6. Docker入门教程(七)Docker API

    Docker入门教程(七)Docker API [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第七篇,重点介绍了Docker Registry API和 ...

  7. Docker入门教程(六)另外的15个Docker命令

    Docker入门教程(六)另外的15个Docker命令 [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第六篇,继续介绍Docker命令.之前的第二篇文章 ...

  8. Docker入门教程(五)Docker安全

    Docker入门教程(五)Docker安全 [编者的话]DockOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第五篇,介绍了Docker的安全问题,依然是老话重谈,入门者可以通 ...

  9. Docker入门教程(四)Docker Registry

    Docker入门教程(四)Docker Registry [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第四篇,介绍了Docker Registry,它 ...

  10. Docker入门教程(三)Dockerfile

    Docker入门教程(三)Dockerfile [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第三篇,介绍了Dockerfile的语法,DockerOn ...

随机推荐

  1. AI可解释性 II | Saliency Maps-based 归因方法(Attribution)论文导读(持续更新)

    AI可解释性 II | Saliency Maps-based 归因方法(Attribution)论文导读(持续更新) 导言 本文作为AI可解释性系列的第二部分,旨在以汉语整理并阅读归因方法(Attr ...

  2. 条件锁存在的意义:用生活中的例子秒懂线程间的"暗号系统"

    条件锁存在的意义:用生活中的例子秒懂线程间的"暗号系统" 引子: 在学习linux下c语言中的互斥锁和条件锁的时候,我的大脑哦逻辑进入了"条件锁到底锁了什么"的 ...

  3. 洛谷P4198 楼房重建 题解

    Part1.自己一开始是怎么想的 我一开始的想法是先考虑什么情况下是看不见的. 如果是 \(i < j\) 的话可以直接看 \(j\) 的斜率和 \(i\) 的斜率就是比较 \(\frac{h_ ...

  4. 使用Python计算并可视化长直导线产生的磁场

    引言 大家好,今天我们来探讨一个有趣的话题--长直导线产生的磁场,并通过 Python 来进行计算和可视化.你可能会问,为什么要研究这个问题?其实,这是电磁学中的一个基础问题,理解了它,我们就能更好地 ...

  5. Rocketmq 如何保证消息的可用性/可靠性/不丢失呢 ?

    如何保证消息的可用性/可靠性/不丢失呢 ? 消息可能在哪些阶段丢失呢?可能会在这三个阶段发生丢失:生产阶段.存储阶段.消费阶段 生产阶段 在生产阶段,主要通过请求确认机制,来保证消息的可靠传递 1.同 ...

  6. Mybatis-Plus中的@TableId

    简介 在 MyBatis Plus 中,@TableId 注解是用于标记实体类中的主键字段.它可以更方便地处理主键相关的操作,如自动填充主键值或识别主键字段. 用法 public class User ...

  7. 我与 ChatGPT 讨论了面向对象语言 中,关于动态调用的问题

    你好,支持面向对象的语言中,"方法表" 是用来处理什么的? 在面向对象的语言中,"方法表"通常指一个类或对象中定义的方法列表.这些方法定义了该类或对象可以做什么 ...

  8. office for mac 16.79 破解版安装教程

    教程声明 本人电脑系统:macOS Sonoma,安装版本为office for mac 16.79.本教程旨在学习分享.资源均为从网络处下载,安装破解版有风险,请自己权衡.不会安装的朋友可评论区探讨 ...

  9. python-docx设置标题颜色

    from docx import Document from docx.enum.text import WD_PARAGRAPH_ALIGNMENT from docx.shared import ...

  10. 参考用例之“本地Excel导入系统测试方案”

    本地Excel导入系统测试方案 Excel 代码 @Test public void importperson() throws FileNotFoundException { FileInputSt ...