docker1

1.

Java jdk

环境不一致

虚拟机

linux 容器

 

docker

容器的封装

将所需的环境打包给你

秒级启动

不用考虑cpu 是否支持虚拟化

 

单项目打包

整套项目打包

新开源技术

环境一致性

持续集成 jenkins ci cd

微服务 接口拆封 分别调用

弹性伸缩 服务器的量 按量付费

docker就是用来生成镜像的

https://docs.docker.com/install/linux/docker-ce/centos/

docker官网

yum list | grep docker

启动:systemctl start docker

 

镜像容器

镜像加速器

容器镜像加速器

https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

mkdir -p /etc/docker

 

tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://oi55stdg.mirror.aliyuncs.com"] } EOF

 

镜像更新

systemctl daemon-reload

systemctl restart docker

镜像是容器的模板

 

docker image ls

列出所有镜像

docker search ubuntu

// 查看镜像版本

官方发布的 和非官方提供的

https://hub.docker.com

 

 

docker image history ubuntu

docker image pull centos

docker image pull centos:6 指定6版本

docker image push

docker image rmi ubuntu

 

docker image prune 移除

docker image tag centos guozimo123/centos7:latest

docker image export

docker image import

docker image save

docker image load

docker image build

 

docker账号:guozimo123

docker login

docker push guozimo123/centos7:latest

必须和你的账号对应才能提交成功

docker container run hello-world

从一个镜像运行一个容器

docker container ls -a

docker image inspect 查看容器内容

docker container run -it centos /bin/bash

// 进入容器中

docker container ps -a

查看所有容器

// nginx 映射80端口 宿主机8080映射容器的80端口 nginx暴露80端口

docker run -p 8080:80 nginx

// 后台运行

docker run -d -p 8080:80 nginx

curl http://39.105.91.188:8080

docker logs 容器id 查看容器日志

一个容器起一个服务

docker container stop xxx

docker container rm xxx

docker container ps -a 查看所有的容器

删除所有容器

docker container rm $(docker ps -a -q)

打印id

镜像增加层:

docker commit -a "guozimo" -m"add myroot.text" + 容器id myroot:latest

docker commit -a "guozimo" -m"add myroot.text" 82aa65e32253 myroot:latest

docker image ls

可以查看到myroot

docker image inspect myroot

结果如下

"RootFS": {

"Type": "layers",

"Layers": [

"sha256:af0b15c8625bb1938f1d7b17081031f649fd14e6b233688eea3c5483994a66a3"

]

},

 

 

docker container logs 34e3d0f600b5

docker container kill xxx 停止容器

 

 

从指定容器中导出一个文件到locahost

docker export -o centos.star xxx 容器id

导回去

docker import centos.star

// 没有指定容器 prune 会把镜像删除 删除没有tag的

 

docker run -it -e name='guozimo' centos /bin/bash

// 指定环境变量

echo $name 可以看到环境变量

exec 进入一个正在运行的docker

 

 

 

制作个性化镜像

docker run -it ubuntu /bin/bash

cd /root

touch love.txt

// 把容器变为镜像 组合新镜像

docker container commit -m"我的个性化ubuntu" -a"guozimo" xxx guozimo/myubuntu:v1

docker image ls

docker run -it xxxx /bin/bash

 

Dockerfile 制作个性化容器 将express项目定制化成一个镜像暴露出3000端口让外面访问

mkdir nodeapp

cd nodeapp

ls

vi .dockerignore

npm install express-generator -g

// express 项目生成器

express app

ls

vi Dockerfile

Dockerfile重的内容如下

FROM node FROM 继承的镜像 这个镜像的上层镜像来源

COPY ./app /app 把我本地文件app文件拷贝到镜像的app文件中

WORKDIR /app 指定当前的目录为app

RUN npm install 镜像中执行shell脚本

EXPOSE 3000 向外暴露3000端口

CMD npm start

 

ls

docker build -t express-demo .

docker image ls 可以查看到express-demo这个镜像

docker run -it de01d81c6539 /bin/bash

ls

npm start

exit

// 3000为监听的项目的端口号

docker run -it -p 8090:3000 de01d81c6539 /bin/bash

npm start // 希望命令自动输入 希望后台运行

curl http://localhost:8090

修改Dockerfile文件

exit

vi Dockerfile

增加CMD npm start // 启动容器时执行

docker build -t express-demo .

docker image ls 查看最新的id

docker run -d -p 8090:3000 9cdcf367050e

或者docker run -d -p 8090:3000 9cdcf367050e npm start

另一个窗口登录服务器 curl http://localhost:8090

 

 

数据盘

容器删除掉 日志不能丢掉 保留 放到宿主机上

volumn

停掉所有的容器

docker container stop $(docker container ps -a -q)

docker container kill $(docker container ps -a -q)

docker container rm $(docker container ps -a -q)

docker container ls

创建数据卷

docker volume create nginx-logger

在宿主机上

docker volume ls

docker volume inspect nginx-logger

从根目录cd 进入cd /var/lib/docker/volumes/nginx-logger/_data

docker volume create nginx-html

docker run -d --name nginx1 --mount src=nginx-html,dst=/usr/share/nginx/html nginx

新开窗口根目录 宿主目录小 cd /var/lib/docker/volumes/nginx-html/_data

ll

查看nginx记录

宿主机和容器内容同步

进入容器

docker container exec -it 3e2e0dd9d312 /bin/bash

cd /usr/share/nginx/html

ls

第二种方法

docker run -d --name nginx2 -v nginx-html:/usr/share/nginx/html nginx

// a82befe8966c9062253ec637e1ca1229375648b6149219b543135bdd9a05f954 输出内容的前12位是id

删除数据卷

// 停掉容器 rm掉然后删除数据卷

docker volume rm nginx-html

docker volume ls -f dangling=true

docker volume prune

docker volume ls

 

 

bind-mount 挂在宿主机任何位置 任意目录 都可以

docker run -v /mnt:/mnt -it --name logs centos bash

cd /mnt

touch mnt.txt

exit

/mnt 切到宿主机

cd /mnt

ls

 

 

 

多个nginx 写到一个数据盘中

继承数据盘

 

 

 

 

 

 

 

 

 

 

 

docker search node 查找node镜像

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值