docker及dockers-compose

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 (构建重启容器)

你可能感兴趣的:(docker及dockers-compose)