Docker学习笔记

docker笔记

images获取

  1. dockerfile

  2. docker hub

拉取一个ubuntu18镜像
docker pull ubuntu

取消sudo

将用户添加到docker组中
sudo gpasswd -a hyn docker

将docker重启
sudo service docker restart

重新登录

docker images

root@hyn-pc:~/dockerfile/basefile# vi Dockerfile 
FROM scratch
ADD HelloWorld.class /
CMD ["/HelloWorld.class"]
root@hyn-pc:~/dockerfile/basefile# docker build -t hyn625/hello-docker .
Sending build context to Docker daemon  4.096kB
Step 1/3 : FROM scratch
 ---> 
Step 2/3 : ADD HelloWorld.class /
 ---> 2b1c9ff6e2e1
Step 3/3 : CMD ["/HelloWorld.class"]
 ---> Running in da562e90fde0
Removing intermediate container da562e90fde0
 ---> fbc9447a6ebc
Successfully built fbc9447a6ebc
Successfully tagged hyn625/hello-docker:latest

docker container

列出当前正在运行容器
docker container ls
交互式运行
docker run -it centos

只列出ID
docker container ls -aq

docker container commit

docker commit focused_agnesi hyn625/centos-vim

将容器转换成镜像

Dockerfile
----------------
FROM centos
RUN yum install -y vim
----------------

docker build -t hyn625/centos-vim-new  .

Dockerfile 语法

FROM (构建基础的镜像)
------
FROM scratch #制作base image
FROM centos #制作base image
FROM ubuntu:18.04

LABEL(定义了metadata,类似注释)
-------
LABEL VERSION="v1.0.0"

RUN(安装命令)
-------
RUN yum install -y vim \
mkdir -p /home

WORKDIR(设定当前文件夹类似于CD)
-------------
- 不要是用RUN cd
- WORKDIR使用绝对目录

WORKDIR /root

ADD or COPY
------
ADD hello /
ADD 有解压的功能
添加远程文件使用curl或者wget

ENV(环境变量)
-----
ENV VERSION v0.0.1

RUN:执行命令并创建新的Image Layer(安装软件)

CMD:设置容器启动后默认的命令和参数

ENTRYPOINT:设置容器启动时运行的命令

docker发布

docker tag local-image:tagname new-repo:tagname

docker push new-repo:tagname

docker repository 搭建

https://hub.docker.com/_/registry

docker pull registry

运行registry

docker run -d -p 5000:5000 --restart always --name registry registry:2

创建信任文件

root@hyn-pc:/lib/systemd/system# ls /etc/docker
daemon.json  key.json
root@hyn-pc:/lib/systemd/system# cat /etc/docker/daemon.json 
{"insecure-registries":["127.0.0.1:5000"]}
root@hyn-pc:/lib/systemd/system# cat /lib/systemd/system/docker.service 

....
EnvironmentFile=-/etc/docker/daemon.json
....

API调用查看当前的images
https://docs.docker.com/registry/spec/api/

root@hyn-pc:/lib/systemd/system# curl http://127.0.0.1:5000/v2/_catalog
{"repositories":["hello-world"]}

构建一个dockerfile

FROM python:2.7
LABEL MAINTAINER = "625385032@qq.com"
RUN pip install flask
COPY app.py /app
WORKDIR /app
EXPOSE 5000
CMD ["python", "app.py"]

app.py

from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
    return "hello docker"
if __name__ == '__main__':
    app.run
docker build -t heyanan/app:V0.0.1 .

docker debug

docker run -it 临时的容器ID .

docker 删除停止容器

docker rm $(docker ps -aq)

docker 交互运行

docker exec -it [容器ID] /bin/bash

docker 后台运行

docker run -d --name=[启动容器命名] [镜像命名]

docker 显示docker详细信息

docker inspect [容器ID]
docker inspect 6c9223db27c6

docker 日志

docker logs 6c9223db27c6

docker 网络

单机网络

Bridge network
Host network
None network

多机网络

Overlay network

单机网络连接

docker run -d ==--link redis== --name flask-redis -p 5000:5000 -e REDIS_HOST=redis heyanan/flask-redis:V0.0.3 

-e REDIS_HOST=redis
传递参数

多级网络连接

VXLAN

端口映射 port mapping

docker run --name heyanan-web -d -p 8000:80 nginx

左边为目标映射端口 右边为源映射端口

docker 数据持久

方法一:
docker
Volume 执行持久化目录

docker run -v [本地路径]:[docker路径]

docker run -d -v ${pwd}:/usr/share/nginx/html -p 8000:80 --name heyanan/nginx:V0.0.4 nginx

docker-compose

一个service代表一个容器

https://docs.docker.com/compose/install/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值