Docker笔记

    技术2025-02-04  44

    安装Docker-CE

    官网安装指南 https://docs.docker.com/engine/install/centos/

    添加安装工具包

    yum install -y yum-utils

    使用官方镜像

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

    如果境外下载速度受限,可以添加阿里云镜像

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

    检测最快安装源

    yum makecache fast

    执行安装

    yum install docker-ce

    启动docker服务

    systemctl start docker

    或者

    service docker start

    查看docker版本信息

    docker version

    设置阿里云镜像加速代理

    开通服务后,在命令行直接复制黏贴下段命令 ,其中registry-mirrors为阿里云提供的代理地址

    sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://xxxxxx.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker

    启动容器

    拉取镜像

    docker pull tomcat

    运行

    docker run -d --name web-server tomcat

    其中-d代表后台运行,–name为当前容器制定名称

    交互模式运行 以名称为os的容器为例

    docker run -d --name os -it centos /bin/bash

    -it参数代表以交互模式运行容器,并启动bash

    进入指定容器的交互模式

    docker exec -it 容器ID /bin/bash

    其他命令 查看所有镜像

    docker images

    查看运行中的容器

    docker ps

    移除容器

    docker rm -f 容器ID

    容器间通信

    通过容器名单向通信 tomcat -> database单项连通

    docker run -d --name web-server --link database tomcat

    基于网桥的双向通信

    创建网桥(例:net-bridge)

    docker network create -d bridge net-bridge

    将指定容器(例:web-server和database)连接到网桥(例:net-bridge)

    docker network connect net-bridge web-server docker network connect net-bridge database

    容器间共享资源

    以/usr/resources下的资源为例,创建共享挂载。

    docker create --name shareresource -v /usr/resources:/usr/local/tomcat/webapps/resources tomcat /bin/true

    启动tomcat,加载挂载

    docker run -p 8001:8080 --volumes-from shareresource --name web-server1 -d tomcat docker run -p 8002:8080 --volumes-from shareresource --name web-server2 -d tomcat

    创建本地资源镜像

    以本地可运行的web.jar程序和init-db.sql脚本为例

    创建web应用的Dockerfile,其中的名字和版本都是示例

    vi Dockerfile FROM openjdk:8u222-jre WORKDIR /usr/local/web ADD web.jar . ADD Application.yml . EXPOSE 80 CMD ["java","-jar","web.jar"] :wq

    编译镜像

    docker build -t web .

    创建数据库的Dockerfile,其中的名字和版本都是示例

    vi Dockerfile FROM mysql:5.7 WORKDIR /docker-entrypoint-initdb.d ADD init-db.sql . :wq

    /docker-entrypoint-initdb.d为Mysql官方定义的初始化脚本加载目录

    Mysql容器启动时,需要指定root用户的密码

    docker run --name some-mysql -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

    单机容器编排工具docker-compose

    安装docker-compose

    sudo curl -L "https://github.com/docker/compose/releases/download/1.26.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

    更改文件访问权限

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

    以部署一个web应用和一个数据库应用为例。

    首先,切换到工作目录下,创建docker-compose.yml

    vi docker-compose.yml version:'1.0' services: db: build: ./db/ restart: always environment: MYSQL_ROOT_PASSWORD: my-secret-pw web: build: ./web/ depends_on: - db ports: - '80:8080' restart: always :wq

    启动容器

    docker-compose up -d

    停止容器

    docker-compose down

    查看容器日志信息

    docker-compose logs db docker-compose logs web
    Processed: 0.013, SQL: 9