首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
函数参数与返回值
传递变长参数
defer 和追踪
内置函数
递归函数
将函数作为参数
闭包
应用闭包:将函数作为返回值
使用闭包调试
计算函数执行时间
通过内存缓存来提升性能
声明和初始化
切片
For-range 结构
切片重组(reslice)
切片的复制与追加
字符串、数组和切片的应用
声明、初始化和 make
测试键值对是否存在及删除元素
for-range 的配套用法
map 类型的切片
map 的排序
将 map 的键值对调
标准库概述
regexp 包
锁和 sync 包
精密计算和 big 包
自定义包和可见性
为自定义包使用 godoc
使用 go install 安装自定义包
自定义包的目录结构、go install 和 go test
通过 Git 打包和安装
Go 的外部包和项目
在 Go 程序中使用外部库
结构体定义
使用工厂方法创建结构体实例
使用自定义包中的结构体
带标签的结构体
匿名字段和内嵌结构体
方法
类型的 String() 方法和格式化描述符
垃圾回收和 SetFinalizer
当前位置:
首页>>
技术小册>>
go编程权威指南(二)
小册名称:go编程权威指南(二)
1. #### 端口映射 2. #### [](https://note.youdao.com/md/?defaultMode=view&fileId=WEBe5447531e5c3fb679e4b3db57a38bc86#%E6%95%B0%E6%8D%AE%E5%8D%B7%E6%8C%82%E8%BD%BD)数据卷挂载 3. #### [](https://note.youdao.com/md/?defaultMode=view&fileId=WEBe5447531e5c3fb679e4b3db57a38bc86#%E5%AE%B9%E5%99%A8%E4%BA%92%E8%81%94)容器互联 ##### [](https://note.youdao.com/md/?defaultMode=view&fileId=WEBe5447531e5c3fb679e4b3db57a38bc86#%E7%AB%AF%E5%8F%A3%E6%98%A0%E5%B0%84-2)端口映射 * * * 在启动容器的时候,如果不指定对应参数,在容器外部是无法通过网络来访问容器内的网络应用和服务的。 * 拉取一个apache+php的镜像: $ docker pull php:7.4-apache * 运行容器: $ docker run -d -P php:7.4-apache 用-P(大写)标记,Docker会随机映射一个49000~49900的端口到内部容器开放的网络端口 $ docker ps PORTS列: 0.0.0.0:49153->80/tcp * 登录容器,修改/var/www/html,新建index.html $ docker exec -it container-id /bin/bash * 访问宿主机ip+端口号返回apache页面: http://192.168.1.10:49153 * 指定端口映射-p(小写) $ docker run -d -p 8089:80 php:7.4-apache * * * ##### [](https://note.youdao.com/md/?defaultMode=view&fileId=WEBe5447531e5c3fb679e4b3db57a38bc86#%E6%95%B0%E6%8D%AE%E5%8D%B7%E6%8C%82%E8%BD%BD-2)数据卷挂载 把容器的数据卷映射到宿主机上: $ docker run -d -p 8090:80 -v /var/www/html:/var/www/html --name web php:7.4-apache \--name参数:给容器起一个别名 \-v参数:设置宿主机与容器的目录映射 做了目录映射后,宿主机的html目录下的文件将和容器保持同步 * * * ##### [](https://note.youdao.com/md/?defaultMode=view&fileId=WEBe5447531e5c3fb679e4b3db57a38bc86#%E5%AE%B9%E5%99%A8%E4%BA%92%E8%81%94-2)容器互联 容器互联语法: 1. 创建一个新的数据库容器: $ docker run -p 3306:3306 --name db -v /etc/mysql/conf:/etc/mysql/conf.d -v /var/logs/mysql:/var/logs/mysql -v /data/mysql/data:/var/lib/mysql --restart=always -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 2. 创建一个web容器并连接到db容器: $ docker run -p 8089:80 -v /var/www/html:/var/www/html --name web --link db:dbalias -d php:7.4-apache \--link参数的格式为--link name:alias,其中name是要链接的容器的名称(源容器),alias是别名。 3.这两个容器之间的关系: * web容器:接收容器 * db容器:源容器 4.测试互联结果: * 登录到web容器: $ docker exec -it web bash * 安装ping命令: $ apt install inetutils-ping $ ping db $ ping dbalias * * * php代码测试mysql连接: $ apt update && apt install vim 默认没有安容pdo\_mysql扩展 登录到web容器 $ docker exec -it web bash 安装pdo\_mysql扩展: php镜像提供了`docker-php-ext-install`快捷方式安装扩展: $ docker-php-ext-install pdo_mysql 开启pdo\_mysql扩展: $ cp /usr/local/etc/php/php.ini-productio /usr/local/etc/php/php.ini $ vim php.ini 重启apache: service apache2 restart将会导致退出容器。 采用下面两种方式可以不退出容器而更新 Apache: 1. 在容器内执行 $ service apache2 reload 2. exit 退出容器后,执行: $ docker restart [container name] 回到宿主机编辑index.php: $ vim /var/www/html/index.php <?php $servername = "db"; //这里填写docker中db容器名称 $username = "root"; $password = "123456"; try { $conn = new PDO("mysql:host=$servername;", $username, $password); echo "connect success."; }catch(PDOException $e){ echo $e->getMessage(); } ?> 访问宿主机ip+端口[http://192.168.31.58:8089/](http://192.168.31.58:8089/) ##### [](https://note.youdao.com/md/?defaultMode=view&fileId=WEBe5447531e5c3fb679e4b3db57a38bc86#%E6%80%8E%E4%B9%88%E6%9F%A5%E7%9C%8Bdocker%E6%97%A5%E5%BF%97%E5%92%8Capache%E6%97%A5%E5%BF%97)怎么查看docker日志和Apache日志 1. 查看apache容器container-id $ docker ps 2. 查看容器log $ docker logs container-id apache的access\_log和error\_log会被打印出来 3. Follow ? 类似tail -f $ docker logs container-id -f ##### [](https://note.youdao.com/md/?defaultMode=view&fileId=WEBe5447531e5c3fb679e4b3db57a38bc86#%E6%9B%B4%E6%94%B9%E5%AE%B9%E5%99%A8%E6%97%B6%E5%8C%BA)更改容器时区 Debian: $ ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime $ rm -rf /etc/localtime * * * ##### [](https://note.youdao.com/md/?defaultMode=view&fileId=WEBe5447531e5c3fb679e4b3db57a38bc86#php%E8%BF%90%E8%A1%8C%E7%8E%AF%E5%A2%83lxmp)PHP运行环境:Lxmp Lamp:(Apache+php+Mysql) $ docker search lamp 或者hub.docker.com搜索lamp查找 Lnmp:(Nginx+php+mysql) $ docker search lnmp * * * ##### [](https://note.youdao.com/md/?defaultMode=view&fileId=WEBe5447531e5c3fb679e4b3db57a38bc86#jenkins)Jenkins $ docker run -p 8092:8080 -p 50000:50000 jenkins 访问: [http://192.168.1.10:8092](http://192.168.1.10:8092/) * * * ##### [](https://note.youdao.com/md/?defaultMode=view&fileId=WEBe5447531e5c3fb679e4b3db57a38bc86#gitlab)GitLab 地址: [https://hub.docker.com/r/gitlab/gitlab-ce](https://hub.docker.com/r/gitlab/gitlab-ce) $ docker run --detach \ --hostname gitlab.example.com \ --publish 443:443 --publish 8093:80 --publish 23:23 \ --name gitlab \ --restart always \ --volume /srv/gitlab/config:/etc/gitlab \ --volume /srv/gitlab/logs:/var/log/gitlab \ --volume /srv/gitlab/data:/var/opt/gitlab \ gitlab/gitlab-ce:latest 运行后访问: [http://192.168.1.10:8093](http://192.168.1.10:8093/) * * * ##### [](https://note.youdao.com/md/?defaultMode=view&fileId=WEBe5447531e5c3fb679e4b3db57a38bc86#mongodb)MongoDB: $ docker run --name mongo-container -d mongo 连接容器: $ docker run -it --link mongo-container:mongodb php:7.4-apache /bin/bash
上一篇:
Docker容器
下一篇:
Docker 安装 Nginx
该分类下的相关小册推荐:
深入浅出Go语言核心编程(五)
Go开发权威指南(下)
深入浅出Go语言核心编程(七)
深入浅出Go语言核心编程(二)
Golang并发编程实战
深入浅出Go语言核心编程(六)
go编程权威指南(四)
深入浅出Go语言核心编程(一)
深入浅出Go语言核心编程(三)
从零写一个基于go语言的Web框架
Go进阶之分布式爬虫实战
深入解析go语言