Docker入门_docker,containner(1)

FROM alpine:latest
MAINTAINER fzp
CMD echo ‘hello docker’


这个镜像的基础镜像是alpine:latest,所有者是fzp,容器启动的时候会执行echo命令。


执行:



docker build -t hello-img .

docker run hello-img


控制台输出: hello docker


##### 第二个Dockerfile



FROM ubuntu
MAINTAINER fzp
RUN sed -i ‘s/archive.ubuntu.com/mirrors.ustc.edu.cn/g’ /etc/apt/sources.list
RUN apt-get update
RUN apt-get install -y nginx
COPY index.html /var/www/html
ENTRYPOINT [“/usr/sbin/nginx”,“-g”,“daemon off;”]
EXPOSE 80


这个镜像稍微复杂点,基础镜像是ubuntu,镜像所属者fzp,再一下一层是设置镜像加速的地址。将index.html拷贝到镜像的目录下。最后以前台进程的形式启动。


index.html



today i’m happy


执行命令:



docker build -t forezp/hello.nginx .

docker run forezp/hello.nginx


curl localhost


控制台输出:today i’m happy


#### Docker存储


独立于容器之后的独立化存储


第一种方式:



docker run -p 80:80 -d -v $PWD/code:/var/www/html nginx


-v指令 宿主的路径:容器路径


将容器的路径的文件夹或者文件挂载到宿主机的路径。


第二种方式:


docker run -volumes-from …



docker create -v $PWD/data:/var/mydata --name data_container ubuntu

docker run -it --volumes-from data_container ubuntu /bin/bash

cd /var/mydata

touch what.txt

exit

cd data

ls


可以查看宿主机的data目录有what.txt文件


#### 镜像仓库


Regiestry,使用官方的docker hub。



docker search whalesay

docker pull dokcer/whalesay

docker run dokcer/whalesay cowsay docker is fun

docker tag dokcer/whalesay forezp/whalesay

dcoker push forezp/whalesay

docker login


#### Docker Compose


docker compose是Docker 官方的一个容器编排工具,现在以一个简单的搭建博客的例子来讲解。


##### 安装


所以的例子都是在linux系统下完成的,docker compose在linux下的安装:



curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-uname -s-uname -m > /usr/local/bin/docker-compose
chmod a+x /usr/local/bin/docker-compose


验证安装成了没:



docker-compose --version


##### Docker Compse常用命令


* docker-compose build
* docker-compose up
* docker-compose stop
* docker-compose rm


##### 案例实战


工程架构:


![WX20180903-233019@2x.png](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8yMjc5NTk0LTA1YmNkNDllOWUxYWZkZTgucG5n?x-oss-process=image/format,png)


分为3个容器,最外层一个服务为ngixn,下一层服务为ghost app,最底层容器是Mysql


在工作目录ghost下,有三个文件夹分别为ngix、ghost、db和一个docker-compose.yml文件,目录结构为:



-ghost

  • nginx
    • Dockerfile
    • nginx.conf
  • ghost
    • Dockerfile
      • config.js
  • db
  • docker-compose.yml

**docker-compose.yml编写**



version: ‘2’
networks:
ghost:
services:
ghost-app:
build: ghost
networks:
- ghost
depends_on:
- db
ports:
- “2368:2368”
nginx:
build: nginx
networks:
- ghost
depends_on:
- ghost-app
ports:
- “80:80”
db:
image: “mysql:5.7.15”
networks:
- ghost
environment:
MYSQL_ROOT_PASSWORD: mysqlroot
MYSQL_USER: ghost
MYSQL_PASSWORD: ghost
volumes:
- $PWD/data:/var/lib/mysql
ports:
- “3306:3306”


**nginx相关**


dockerfile编写:



FROM nginx
COPY nginx.conf /etc/nginx/nginx.conf
EXPOSE 80


配置文件文件编写nginx.conf



worker_processes 4;
events {
worker_connections 1024;
}
http {
server {
listen 80;
location / {
proxy_pass http://ghost-app:2368;
}
}
}


**ghost app相关**


Dockerfile编写:



FROM ghost
COPY ./config.js /var/lib/ghost/config.js
EXPOSE 2368


配置文件config.js:



var path = require(‘path’),
config;
config = {
production: {
url: ‘http://mytestblog.com’,
mail: {},
database: {
client: ‘mysql’,
connection: {
host: ‘db’,
user: ‘ghost’,
password: ‘ghost’,
database: ‘ghost’,
port: ‘3306’,
charset: ‘utf8’
},
debug: false
},
paths: {
contentPath: path.join(process.env.GHOST_CONTENT,‘/’)
},
server: {
host: ‘0.0.0.0’,
port: ‘2368’
}
}
};
module.exports = config;


docker-compose打镜像,打完镜像之后运行.



docker-compose buid
docker-compose up


运行之后在浏览器上访问:<http://119.23.221.204/>


显示界面如下:


![在这里插入图片描述](https://img-blog.csdnimg.cn/20190601120220259.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9mb3JlenAuYmxvZy5jc2RuLm5ldA==,size_16,color_FFFFFF,t_70)


**代码位置**


/usr/dockerstudy/ghost


#### 常用命令


* docker stop $(docker ps -q) & docker rm $(docker ps -aq) 删除所有容器


#### 参考资料


<https://www.imooc.com/video/15735>


![img](https://img-blog.csdnimg.cn/img_convert/f72bcf1f4cae497ba5faf59ae831f39c.png)
![img](https://img-blog.csdnimg.cn/img_convert/1b5afcb38a5a65a53ece3061643e18f8.png)
![img](https://img-blog.csdnimg.cn/img_convert/655095befcacfa4c3fde0b3899e01cbb.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!**


/usr/dockerstudy/ghost


#### 常用命令


* docker stop $(docker ps -q) & docker rm $(docker ps -aq) 删除所有容器


#### 参考资料


<https://www.imooc.com/video/15735>


[外链图片转存中...(img-o2Lj93Xo-1719212384744)]
[外链图片转存中...(img-WkS8zeES-1719212384745)]
[外链图片转存中...(img-vJPpINAR-1719212384746)]

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!**

  • 24
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值