docker学习笔记

安装docker

Docker 的用途

  1. 一次编译,多次执行

  2. 提供弹性云服务,随开随关

  3. 组建微服务,一台机器跑多个服务

    Docker 命令

    需要注意的是,docker需要用户具有sudo 权限,为了避免麻烦,可以加入docker用户组

sudo groupadd docker
sudo usermod -aG docker $USER

验证docker安装成功 可以 docker version

docker imge 文件

image是二进制文件,docker把程序和依赖打包为镜像,之后生成Docker 容器,image 文件是容器的模板

docker env # 查看docker的环境配置
docker image ls # 列出所有 image 文件,可简写为 docker images
docker pull centos  # 获取 centos 镜像
docker tag [id] docker/getting-started:dev  # 添加tag
docker image rm [imageName]

image-20211207151652432

而image 的pull 都是从doker hub上获取的,用户可自行上传,同github

docker container 文件

container 容器,镜像的第二阶段,大部分的操作是在容器上

docker container ls
docker container ls --all #包括终止运行的容器
docker container run -it centos:latest /bin/bash # 启动这个容器的基本命令
# -it 参数是让命令行运行,/bin/bash 是指定shell
# 可加 -d 参数 处于后台运行
# -p 可以指定映射端口 
docker run -d -p 5000:5000 training/webapp python app.py # 
docker atttach [id]  # 进入 exit 后的容器
docker exec -it [id] /bin/bash # exit后不停止
docker container rm -f [containerID]
docker container kill [containerID] 
docker ps -a # 查看运行容器
docker comtainer prune # 清理所有处于终止的容器

docker 默认对容器操作,container 可以省略

docker import and export

docker export [id] > ./docker/[name].tar
cat docker/ubuntu.tar | docker import - test/ubuntu:v1
docker import http://example.com/exampleimage.tgz example/imagerepo
# 在URL导入镜像

Dockerfile

Dockerfile 类比 shell脚本,是制作docker容器的脚本,在项目的根目录touch .dockerignore ,里面可以添加你不想打包到 image 中的文件

.git
node_modules
npm-debug.log

touch Dockerfile

FROM node:8.4  #指定image
COPY . ./app  #拷贝项目到app路径
WORKDIR /app
RUN npm install --registry=https://registry.npm.taobao.org #安装依赖
EXPOSE 3000 #容器端口

创建 image file

docker image build -t name .   #-t指定name . 为Dockfile路径

image 建好后,可以生成容器,

docker container run -p 8000:3000 -it name /bin/bash
# -p 3000端口映射到本地8000端口

发布 image 文件

可以在 docker 官网 注册 一个账户发布你的 image

docker login 
docker image tag [imagename] [username]/[repository]:[tag]
# 为本地 image 标注用户名和版本
docker image push [username]/[repository]:[tag] # 推送

归纳

一个容器名为lihong的centos image

# 启动,停止,重启容器:
docker start container_name/container_id
docker stop ~
docker restart ~

例子:用于flask开发的python 环境

docker run -it centos:latest /bin/bash
在容器中,安装python3,git,flash等依赖包,exit
docker commit -m "flask" -a 'lihong' container_id lihong/flask:v1
docker push lihong/flask:v1