docker、docker-compose常用命令

初学者使用的docker、docker-compose常用命令,日常练习,环境简单搭建。

一、docker

1.1、安装docker

1.1.1、yum安装

#安装docker的数据存储驱动包

yum install -y yum-utils device-mapper-persistent-data lvm2

#设置新的安装源、下载配置文件到本地

yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

#修改配置文件中的docker-ce官网地址

sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo

yum -y install docker-ce

systemctl start docker

1.1.2、二进制安装

mkdir /data  /etc/docker

wget https://download.docker.com/linux/static/stable/x86_64/docker-20.10.0.tgz

tar -zxvf docker-20.10.0.tgz -C /data

#二进制文件拷贝

cd  /data/docker

cp  *  /usr/bin

docker.service 写入:

cat > docker.service << EOF

[Unit]

Description=Docker Application Container Engine

Documentation=https://docs.docker.com

After=network-online.target firewalld.service

Wants=network-online.target

Requires=docker.socket

[Service]

Type=notify

ExecStart=/usr/bin/dockerd --graph /data/service/docker

ExecReload=/bin/kill -s HUP $MAINPID

TimeoutSec=0

RestartSec=2

Restart=always

StartLimitBurst=3

StartLimitInterval=60s

LimitNOFILE=infinity

LimitNPROC=infinity

LimitCORE=infinity

TasksMax=infinity

Delegate=yes

KillMode=process

OOMScoreAdjust=-500

[Install]

WantedBy=multi-user.target

EOF

cp docker.service /usr/lib/systemd/system/

docker.socket写入:

cat > docker.socket << EOF

[Unit]

Description=Docker Socket for the API

[Socket]

ListenStream=/var/run/docker.sock

SocketMode=0660

SocketUser=root

SocketGroup=docker

[Install]

WantedBy=sockets.target

EOF

cp docker.socket /usr/lib/systemd/system/

daemon.json 写入:

cat > daemon.json << EOF

{

  "log-opts": {

    "max-size": "50m",

    "max-file": "5"

  }

}

EOF

cp daemon.json /etc/docker

1.1.3、启动docker

systemctl start docker

systemctl enable docker

2.2、docker相关操作

2.2.1、运行

docker ps        #查看当前正在运行的容器
docker ps -a      #查看本机所有容器,可见容器的短ID
docker ps -a --no-trunc  #查看容器长ID
docker ps -l       #列出最新创建的容器
docker ps -q      #列出所有容器id
#注:容器运行的最低标准是都容器中至少有一个前台进程
docker start/stop/restart ID|NAME  #启动/关闭/重启当前现有docker
docker  rm  ID|NAME           #删除容器
docker exec -it ID|NAME bash     #进入容器
docker exec web ls              #不进入容器在容器中执行ls命令
docker inspect web             #获取容器/镜像的元数据

2.2.2、镜像管理

docker search nginx            #查看镜像可用版本

docker pull nginx               #拉取镜像

docker images                  #查看镜像列表 等同于docker image ls

docker rmi httpd               #删除镜像,等同于docker image rm httpd

docker pull centos:centos7.6.1810        #下载镜像时指定版本

docker history centos-web              #查看指定镜像的创建历史

docker save -o /mnt/httpd.img httpd:latest    #导出镜像到文件

docker load -i /mnt/httpd.img                   #导入镜像

docker rm $(docker ps -a -q)                    #抓取docker中的短ID然后删除

2.2.3、dockerfile构建镜像

$ vi dockerfile                   #新建dockerfile文件,文件名必须叫dockerfile

from  centos:7.6.1810          #第一条固定为from,指定基础镜像

run  yum  -y  install  httpd    #---run 表示执行命令

add  index.html   /var/www/html/    #--- add 从宿主机复制文件到容器中指定路径,且add支持自动解包、本地wget下载后复制

      注:网页要在docker的同一目录下与dockerfile在一起

      #---与add类似的COPY语句,复制文件到目录,不支持自动解包、本地wget下载后复制

volume  /var   /mnt   #--- 让容器中的/mnt目录,挂载使用宿主机 /var 所在的文件系统

EXPOSE  80   #---指定监听端口

cmd ["/usr/sbin/init"]    #--- cmd指定最终镜像完成后,启动容器时自动执行的命令,手动docker run 容器时,若run命令后有-c 参数,替代cmd

entrypoint ["/usr/sbin/init"]   #--- 启动容器时自动执行的命令,若run命令后有-c 参数,不会被替换

docker  build  -t  centos-http   .   #--- 构建镜像 ,-t 指定镜像名  .  表示当前目录,即指定dockerfile所在目录

$ docker history       #显示镜像的构建历史

$ 当出现  ADD failed: file not found in build context or excluded by .dockerignore: stat mnt/d1/f1: file does not exist 错误时   #将需要复制的文件放到当前跟dockerfile 同一目录

  注: copy时也一样  需要将文件放到更dockerfile的同目录

二、docker-compose

2.1、docker-compose安装

#从github上下载docker-compose二进制文件安装

sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

#若是github访问太慢,可以用daocloud下载

sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

#添加执行权限

sudo chmod +x /usr/local/bin/docker-compose

#查看版本

docker-compose --version

2.2、docker-compose命令

docker-compose up         #命令聚合每个容器的输出,命令退出时,所有容器都将停止

docker-compose up -d     #在后台启动容器并使它们保持运行

docker-compose logs -f     #查看该容器的启动的日志打印(日志从头打印)

docker logs -f container_id        #查看某一容器的启动的日志打印(日志从头打印)

docker logs -f --tail 数量 container_id       #查看某一容器的启动的日志打印(查看

最后n条日志打印)

docker-compose stop           #停止compose服务

docker-compose restart       #重启compose服务

docker-compose kill           #杀掉compose服务

docker-compose ps           #查看compose服务状态

docker-compose rm           #删除compose服务

docker-compose down           #停止并删除容器、网络、卷、镜像

docker-compose config       #检查配置

docker-compose config -q   #检查配置,有问题才输出

2.3、docker-compose.yml详解

2.3.1、Compose配置文件结构

Docker Compose配置文件是一个用于定义服务、网络和数据卷的YAML文件。其中服务定义了该服务启动的每个容器的配置,就像将命令行参数传递给docker run一样,网络和数据卷的定义类似于docker network create和docker volume create。跟docker run一样,如果在Dockerfile中通过诸如CMD、EXPOSE、VOLUME和ENV这些指令指定了相关选项,那么在默认情况下,不需要在docker-compose.yml中再次指定它们。

2.3.2、服务配置

1、服务定义了该服务启动的每个容器的配置,就像将命令行参数传递给docker run一样。比如以下配置:

services:

  redis:

    image: redis:alpine

services下的redis是用户自定义的服务名称,redis下的image只是众多服务配置项中的其中一个,意思是指定镜像名称或id。下面就对服务的相关配置项进行一个总结。

2、command

覆盖容器启动后默认执行的命令。可以写成字符串形式。例如:

command: bundle exec thin -p 3000

3、container_name

指定自定义容器的名称,而不是使用默认名称。例如:

container_name: my-web-container

因为Docker容器的名称必须唯一,所以为一个服务指定了自定义容器名称后,该服务不能进行扩展。如果尝试为该服务扩容将会导致错误。

4、env_file

从文件中获取环境变量。可以是一个值或一个列表。例如:

env_file:

  - ./common.env

  - ./apps/web.env

  - /opt/runtime_opts.env

5、environment

设置环境变量。可以使用数组或字典两种格式。任何布尔类型的值都必须用引号引起来,以便解析器将它们解释为字符串。值设置了键没设置值的环境变量可以在运行Compose的主机环境中解析它们的值,这对于使用密钥和特定于主机的值用处很大。例如:

environment:

RACK_ENV: development

SHOW: 'true'

SESSION_SECRET:

environment:

  - RACK_ENV=development

  - SHOW=true

  - SESSION_SECRET

注意:这里所说的环境变量是针对宿主机的Compose而言的,如果在服务中指定了build配置项,那么这些变量并不会进入构建过程中,如果要定义构建时用的环境变量首选build的arg子选项。

6、expose

暴露指定端口,但不映射到宿主机,只被连接的服务访问。只能指定内部端口。例如

expose:

  - "3000"

  - "8000"

7、image

指定要从中启动容器的镜像。可以写仓库/标签(repository/tag)或镜像ID。示例如下:

image: redis

image: ubuntu:18.04

image: tutum/influxdb

image: example-registry.com:4000/postgresql

image: a4bc65fd

如果镜像不存在,Compose会自动拉取镜像,除非指定了build,这种情况下会使用指定选项构建镜像并给镜像打上指定标签。

8、networks

指定所加入的网络。需要在顶层networks配置项中引入具体的网络信息。例如:

services:

  some-service:

    networks:

     - some-network

     - other-network

networks:

  some-network:

  other-network:

9、volumes

指定所挂载的主机路径或数据卷名称。支持short和long两种格式的语法。可以将主机路径作为单个服务的一部分进行挂载,而无需在顶层volumes配置项中定义。但是如果想要在多个服务之间重用数据卷,需要在顶层volumes配置项中定义一个数据卷名称。

short语法使用通用的[SOURCE:]TARGET[:MODE]格式,SOURCE可以是主机路径或数据卷名称,TARGET为挂载数据卷的容器路径,MODE可以为ro只读模式或rw读写模式(默认)。可以在主机上挂载相对路径,该路径相对于正在使用的Compose配置文件的目录进行扩展,相对路径应始终以.或..开头。例如:

volumes:

  #只指定一个路径,Docker会自动在创建一个数据卷(这个路径是容器内部的)

  - /var/lib/mysql

  #使用绝对路径挂载数据卷

  - /opt/data:/var/lib/mysql

  #使用基于Compose配置文件的相对路径作为数据卷挂载到容器

  - ./cache:/tmp/cache

  #使用基于root用户的相对路径作为数据卷挂载到容器

  - ~/configs:/etc/configs/:ro

  #使用已经存在命名的数据卷挂载到容器

  - datavolume:/var/lib/mysql

三、私有仓库harbor

3.1、安装docker-compose

3.2、配置ssl证书

mkdir -p /data/cert

        openssl genrsa -des3 -out server.key 2048

        openssl rsa -in server.key -out server.key   ---清除密钥密码

        openssl req -new -key server.key -out server.csr

        openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

        cp server.key server.key.org

        chmodcd  -R 777 /data/cert

3.3、配置harbor

vi  harbor.cfg

​      hostname = harbor.xxhf.com   ---改hostname

​    ./install  ---运行安装脚本

3.4、浏览器访问

配置静态解析文件,hosts文件中加入: 192.168.190.100 harbor.xxxx.com

访问 http://harbor.xxxx.com,登录账号 admin / Harbor12345

3.5、docker客户端测试

配置静态解析文件,hosts文件中加入:  192.168.190.100   harbor.xxxx.com

        vi /etc/docker/daemon.json

           {  ... ,   ---原内容后追加,需在后面加个 ,

              "insecure-registries": ["harbor.xxxx.com"]     ---添加信任域名

           }

        systemctl  restart docker

        docker start $(docker ps -a -q )   ---启动容器

        docker  login -u admin  harbor.xxxx.com   ---登录harbor

        docker  tag  centos:7.6.1810   harbor.xxxx.com/library/centos:7.6.1810    ---镜像名格式: 主机名或ip/项目名/镜像名:版本

        docker  push  harbor.xxxx.com/library/centos:7.6.1810   ---上传

        docker  pull  harbor.xxxx.com/library/centos:7.6.1810   ---下载

        docker  logout  harbor.xxxx.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/72884.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿里的MNN源码如何编译成so文件,供Android调用

在Ubtuntu下面的编译&#xff0c;先整理编译环境 1、安装环境依赖 # 安装必要工具 sudo apt update sudo apt install -y cmake ninja-build git wget # 安装Android NDK&#xff08;建议使用r21版本或更高&#xff09; wget https://dl.google.com/android/repository/a…

吴恩达机器学习笔记复盘(六)梯度下降算法

简介 梯度下降&#xff08;Gradient Descent&#xff09;是一种常用的优化算法&#xff0c;广泛应用于机器学习、深度学习等领域&#xff0c;在这里是用于求J&#xff08;w,b&#xff09;局部最小值。 我自己觉得这样说有点过于抽象。换个直观点的说法就是&#xff0c;一个人…

使用JAVA-进行维吉尼亚密码的解密与加密

维吉尼亚密码 来源于百度百科 维吉尼亚密码_百度百科 具体代码 import java.util.*;public class WJMYmm {//常量 26public static final int N 26;//密码public static void main(String[] args) {//字母String ZM"abcdefghijklmnopqrstuvwxyz";char[] zm ZM.…

Java DelayQueue 延迟队列

Java DelayQueue 延迟队列 1. DelayQueue 概述 DelayQueue 是 Java 并发包&#xff08;java.util.concurrent&#xff09;中的一个 无界 阻塞队列&#xff0c;用于存储实现了 Delayed 接口的元素。队列中的元素只有在达到指定的延迟时间后才能被获取。 2. DelayQueue 的底层…

LeetCode 解题思路 22(Hot 100)

解题思路&#xff1a; 递归思路&#xff1a; 传入当前节点的最小值和最大值&#xff0c;递归判断左右子树。结束条件&#xff1a; 当前节点为空或不满足二叉搜索树。 Java代码&#xff1a; class Solution {public boolean isValidBST(TreeNode root) {return isValidBST(ro…

乐享数科:政策助推假日经济,2月普惠金融-景气指数稳中有升

数据显示&#xff0c;2025年2月普惠金融-景气指数达48.99点&#xff0c;较1月上升0.03点。 企业运行持续向好&#xff0c;企业信心预期和经营活力回升。“假日经济”与“政策效应”相互叠加&#xff0c;市场供求格局有所改善&#xff0c;景气水平稳步恢复。 普惠金融-景气指数…

leetcode日记(108)验证回文串

看上去很简单&#xff0c;其实很麻烦。 一开始写的递归&#xff0c;但是内存超限……搜了下发现原因是每次递归调用都会创建一个新的字符串副本&#xff0c;这在处理长字符串时会占用大量内存。 class Solution { public:bool isPalindrome(string s) {if(s.size()0||s.size(…

用css绘制收银键盘

最近需求说需要自己弄个收银键盘&#xff0c;于是乎直接上手搓 主要基于Vue3写的&#xff0c;主要是CSS <template><view class"container"><view class"info"><image class"img" src"" mode"">&l…

智能车间管理系统(源码+文档+讲解+演示)

引言 在现代制造业中&#xff0c;智能车间管理系统正成为推动工业4.0和智能制造的关键力量。它通过整合先进的信息技术和自动化技术&#xff0c;优化生产流程&#xff0c;提高生产效率&#xff0c;降低成本&#xff0c;并确保产品质量。 系统概述 智能车间管理系统采用前后端…

Model Context Protocol - Prompts

1. 概述 Model Context Protocol (MCP) 提供了一种标准化的方式&#xff0c;使服务器能够向客户端暴露提示模板&#xff08;prompts&#xff09;。Prompts 是服务器提供的结构化消息和指令&#xff0c;用于与语言模型进行交互。客户端可以发现可用的提示、获取其内容&#xff…

办公自动化:使用 Python 生成 Word 文件:自动生成数据库文档 Word 文件

简简单单 Online zuozuo :本心、输入输出、结果 文章目录 办公自动化:使用 Python 生成 Word 文件:自动生成数据库文档 Word 文件前言一、环境准备二、编写代码三、编写 Word 模版文件接收数据四、运行代码,生成文件,大功告成五、说明办公自动化:使用 Python 生成 Word 文…

嵌入式GPRS协议面试题及参考答案

目录 GPRS 的全称是什么?简述其核心设计目标。 GPRS 中 DNS 服务器的核心作用是什么? BTS 在 EDGE 升级时需要哪些硬件调整? GPRS 的时隙分配策略如何影响多用户并发? 解释 PDCH(分组数据信道)的动态分配机制。 如何判断天馈接反或鸳鸯线问题? GPRS 的 RLC/MAC 层…

Docker 内部通信(网络)

1. 创建自定义桥接网络 首先&#xff0c;创建一个自定义的Docker网络。这可以通过docker network create命令完成。例如&#xff0c;我们可以创建一个名为my_custom_network的网络&#xff1a; docker network create --driver bridge my_custom_network2. 启动容器并连接到自…

单片机开发资源分析的实战——以STM32F103C8T6为例子的单片机资源分析

目录 第一点&#xff1a;为什么叫STM32F103C8T6 从资源手册拿到我们的对STM32F103C8T6的资源描述 第二件事情&#xff0c;关心我们的GPIO引脚输出 第三件事情&#xff1a;去找对应外设的说明部分 前言 本文章隶属于项目&#xff1a; Charliechen114514/BetterATK: This is…

贪心算法(9)(java)最优除法

题目&#xff1a; 给定一正整数数组 nums,nums中的相邻整数将进行浮点除法。例如&#xff0c;[2,3.4]->2/3/4. 例如&#xff0c;nums [2,3,4]&#xff0c;我们将求表达式的值“2/3/4"。 但是&#xff0c;你可以在任意位置添加任意数目的括号&#xff0c;来改变算…

腾讯云MySQL数据库架构分析与使用场景

TDSQL-C for MySQL TDSQL-C MySQL 版&#xff08;TDSQL-C for MySQL&#xff09;是腾讯云自研的新一代云原生关系型数据库。融合了传统数据库、云计算与新硬件技术的优势&#xff0c;为用户提供具备高弹性、高性能、海量存储、安全可靠的数据库服务。TDSQL-C MySQL 版100%兼容…

荣耀手机卸载应用商店、快应用中心等系统自带的

1.下载abd ADB Download - Get the latest version of ADB and fastboot 2.手机打开开发者选项 3.手机接电脑打开USB调试 4.下载MT管理器查看系统包名 D:\1.LFD\ADB\platform-tools-latest-windows\platform-tools>adb shell adb.exe: no devices/emulators found 这边是…

星型拓扑网络发生网络风暴

在星型拓扑网络中&#xff0c;所有的设备&#xff08;如计算机、打印机等&#xff09;通过一个中心设备&#xff08;通常是交换机或集线器&#xff09;连接在一起。 星型拓扑网络中发生网络风暴时的情况&#xff1a; 网络风暴的表现 1.广播风暴&#xff1a;在星型拓扑中&…

网络流基本概念及实现算法

基本概念 流网络 对于一个有向图, 抽象成水管里的水的模型, 每根管子有容量限制, 计为 G ( V , E ) G (V, E) G(V,E), 首先不考虑反向边 对于任意无向图, 都可以将反向边转化为上述形式 如果一条边不存在, 定义为容量为 0 0 0, 形式上来说就是 c ( u , v ) 0 c(u, v) 0 c(…

【css酷炫效果】纯CSS实现球形阴影效果

【css酷炫效果】纯CSS实现球形阴影效果 缘创作背景html结构css样式完整代码基础版进阶版(动态版) 效果图 想直接拿走的老板&#xff0c;链接放在这里&#xff1a;上传后更新 缘 创作随缘&#xff0c;不定时更新。 创作背景 刚看到csdn出活动了&#xff0c;赶时间&#xff0…