docker笔记
images获取
拉取一个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/