docker
自动化构建镜像,根据 dockerfile 打包镜像 ,启动时得到单独的container.
Dockerfile 编写
# 设置基础镜像
FROM nginx
# 定义作者
MAINTAINER xxx
# 将dist文件中的内容复制到 xxxx这个目录下面
COPY dist/ xxx
# COPY nginx.conf /etc/nginx/nginx.conf
COPY default.conf /etc/nginx/conf.d/default.conf
RUN echo 'ok'
打包镜像
sudo docker build -t star/eyebox_ui_settingpage:V1.0.3 .
运行镜像
sudo docker run -itd --network=host --restart=always star/eyebox_ui_settingpage:V1.0.3
删除运行中的容器和镜像
sudo docker stop containerId (停止一个运行中的容器)
sudo docker start containerId (启动一个或多个已经被停止的容器)
sudo docker restart containerId (重启容器)
sudo docker rm containerId (删除一个或多个 容器)
sudo docker rmi containerId ( 删除一个或多个 镜像)
sudo docker kill containerId (杀掉一个运行中的容器)
$ docker ps // 查看所有正在运行容器
$ docker stop containerId // containerId 是容器的ID
$ docker ps -a // 查看所有容器
$ docker ps -a -q // 查看所有容器ID
$ docker stop $(docker ps -a -q) // stop停止所有容器
$ docker rm $(docker ps -a -q) // remove删除所有容器
docker连接私有库
1.下载Docker Desktop 软件
2.启动Docker Desktop软件,若启动不起来,可能需要更新部分基础软件
3.进入 Docker Desktop 软件,右上角设置按钮,选择 Docker Engine按钮,在 insecure-registries 中填入私有库的地址(Window)
修改/etc/docker/daemon.json(),添加地址(Linux)
原因:仓库使用的自建TLS证书(权威机构发布的要钱),需要将仓库地址,添加到Docker的“非安全仓库列表”
4.在终端 登录私有库 sudo docker login '地址'
5.本地打包镜像必须要把私有库地址带上
docker tag imageID xxx.xxx.xxxx:8081/star/eyebox_ui_settingpage:V1.0.3
6.推送镜像到私有库: docker push xxx.xxx.xxxx:8081/star/eyebox_ui_settingpage:V1.0.3
拉取镜像到本地 : docker pull xxx.xxx.xxxx:8081/star/eyebox_ui_settingpage:V1.0.3
操作解析
Docker rm 命令
语法
dockerrm[OPTIONS] CONTAINER [CONTAINER...]
OPTIONS说明:
-f :通过SIGKILL信号强制删除一个运行中的容器
-l :移除容器间的网络连接,而非容器本身
-v :删除与容器关联的卷
Docker rmi 命令
语法
docker rmi [OPTIONS] IMAGE [IMAGE...]
OPTIONS说明:
-f :强制删除
--no-prune :不移除该镜像的过程镜像,默认移除
Docker prune 命令
删除 所有未被 tag 标记和未被容器使用的镜像:
docker image prune
删除 所有未被容器使用的镜像:
docker image prune -a
删除 所有停止运行的容器:
docker container prune
删除所有未被挂载的卷:
docker volume prune
删除所有网络:
docker network prune
删除 docker 所有资源:
docker system prune
docker run 命令
-d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
--name="nginx-lb": 为容器指定一个名称;
--network=host : 网络使用 host 模式,和主机共用ip
--restart=always :重启时,能自动重启
例:sudo docker run -itd --network=host --restart=always --name="docker_name" star/docker_name
注意:
docker停止镜像-Dockerstop或者Dockerkill为何不能停止容器
因为你启动时加了参数dockerrun--restart=always,这个意思是无论容器时正常还是非正常手动关闭都会重启,
可以修改为dockerrun--restart=on-failure,异常关闭时重启容器,还有其他几个参数自己查看。
docker-compose
自动化编排容器,根据 docker-compose.yml 启动时是一个服务,由多个container 共同组成,并且端口、配置等由 docker-compose 定义好.
Docker Compose 将所管理的容器分为三层,分别是工程(project)、服务(service)、容器(container)
Docker Compose 运行目录下的所有文件(docker-compose.yml)组成一个工程,一个工程包含多个服务,每个服务中定义了容器运行的镜像、参数、依赖,一个服务可包括多个容器实例
Docker Compose 常用命令
docker-compose ps (列出所有运行容器)
docker-compose logs (查看服务日志输出)
docker-compose port (打印绑定的公共端口)
docker-compose start / stop / rm xxx (启动/停止/删除 指定服务已存在的容器)
docker-compose down ( 删除所有容器,镜像)
docker-compose build (构建或者重新构建服务)
docker-compose up (构建重启容器)