首页 > 其他分享 >Docker的安装和使用

Docker的安装和使用

时间:2024-03-16 13:59:00浏览次数:25  
标签:容器 compose Dockerfile 使用 镜像 Docker 安装 docker

文章目录

Docker的安装

Docker依赖的环境

想要安装Docker,需要先讲依赖的环境全部下载,就像Maven依赖JDK一样

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

指定Docker镜像源

Docker CE镜像

默认下载Docker会去国外服务器下载,速度较慢,我们可以设置为阿里云镜像源,速度更快

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

ubuntu

sudo apt-add-repository http://mirrors.aliyun.com/docker-ce/linux/ubuntu/docker-ce.repo

安装Docker

依然采用yum的方式安装

yum makecache fast
yum -y install docker-ce



启动Docker并测试

安装成功后,需要手动启动,设置为开机自启,并测试一下Docker

# 启动Docker服务
systemctl start docker
# 设置开机自动启动
systemctl enable docker
# 测试   运行hello-world 镜像 根据这个镜像 创建容器
docker run hello-world

查看本地全部镜像
docker images

配置阿里云镜像地址

访问该地址

https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

复制这段代码,粘贴运行

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

可以看到已经配置进去了

Docker-Compose

之前运行一个镜像,需要添加大量的参宿,可以通过Docker-Compose编写这些参数。而且Docker-Compose可以帮助我们批量的管理容器。这些信息只需要通过一个docker-compose.yml文件去维护即可。

下载并安装Docker-Compose

下载并Docker-Compose

去github官网搜多docker-compose,下载1.24.1版本的Docker-Compose

github地址:https://github.com/docker/compose
下载路径:https://github.com/docker/compose/releases/download/1.24.1/docker-compose-Linux-x86_64

建议安装方式
# 直接联网下载到本地 /usr/local/bin/docker-compose

curl -L https://github.com/docker/compose/releases/download/1.23.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

进入这个目录,给这个文件夹权限

chmod 777 docker-compose

测试

任意目录输入:

docker-compose

Docker-Compose管理MySQL和Tomcat容器

yml文件以key:value方式来指定配置信息
多个配置信息以换行+锁紧的方式来区分
在docker-compose.yml文件中,不要使用制表符

version: '3.1'
services:
  mysql:        # 服务的名称
    restart: always     # 代表只要docker启动,那么这个容器就跟着一起启动
    image: daocloud.io/library/mysql:5.7.4      # 指定镜像路径
    container_name: mysql       # 指定容器名称
    ports:
      - 3306:3306       #指定端口号的映射
    environment:
      MYSQL_ROOT_PASSWORD: root     # 指定MySQL的ROOT用户登录密码
      TZ: Asia/Shanghai     # 指定时区
    volumes:
      - /opt/docker_mysql_tomcat/mysql_data:/var/lib/mysql      # 映射数据卷
  tomcat:
    restart: always
    image: daocloud.io/library/tomcat:8.5.15-jre8
    container_name: tomcat
    ports:
      - 8080:8080
    environment:
      TZ: Asia/Shanghai
    volumes:
      - /opt/docker_mysql_tomcat/tomcat_webapps:/var/local/tomcat/webapps
      - /opt/docker_mysql_tomcat/tomcat_logs:/usr/local/tomcat/logs

使用docker-compose命令管理容器

在使用docker-compose的命令时,默认会在当前目录下找docker-compose.yml文件

# 1. 基于docker-compose.yml启动管理的容器
docker-compose up -d

# 2. 关闭并删除容器
docker-compose down

# 3. 开启|关闭|重启已经存在的有docker-compose维护的容器
docker-compose start|stop|restart

# 4. 查看由docker-compose管理的容器
docker-compose ps

# 5. 查看日志
docker-compose logs -f

创建docker-compose.yam文件和要映射的文件夹

启动容器

看到启动成功

docker-compose配合Dockerfile使用

使用docker-compose.yml文件以及Dockerfile文件在生成自定义镜像的同时启动当前镜像,并且由docker-compose去管理容器

docker-compose文件

编写docker-compose.yml文件

#yml文件
version: '3.1'
services:
  ssm:
    restart: always
    build:		# 构建自定义镜像
      context: ../		# 指定dockerfile文件的所在路径
      dockerfile: Dockerfile		# 指定Dockerfile文件名称
    image: ssm:1.0.1
    container_name: ssm
    ports:
      - 8082:8080
    environment:
      TZ: Asia/Shanghai
Dockerfile文件

编写Dockerfile文件

from daocloud.io/library/tomcat:8.5.15-jre8
#copy ssm.war /usr/local/tomcat/webapps


镜像的操作

拉取镜像

从好枞阳仓库拉取镜像到本地

docker pull 镜像名称[:tag]

# 举个例子
docker pull daocloud.io/library/tomcat:8.5.15-jre8


删除本地镜像

需要先删除对应的容器,才能删除镜像

docker rmi 镜像id

#例如
docker rmi 9c7a54a9a43c


镜像的导入导出

如果因为网络原因可以通过硬盘的方式传输镜像,虽然不贵放,但是有效,但是这种方式导出的镜像名称和版本都是null,需要手动修改

# 将本地的镜像导出
docker save -o 导出的路径 镜像id
# 例如
docker save -o /usr/local/tmp/mytomcat8 b8dfe9ade316

# 加载本地的镜像文件
docker load -i 镜像文件
# 例如
docker load -i mytomcat8

# 修改镜像名称
docker tag 镜像id 新的镜像名称:版本
# 例如
docker tag b8dfe9ade316 mytomcat:1.0

加载本地镜像

修改镜像名称

使用本地导入的镜像运行一个容器

docker run -d -p 8080:8080 --name tomcat8 b8dfe9ade316

容器操作

运行容器

运行容器需要指定具体镜像,如果镜像不存在,会直接下载

# 简单操作
dorker run 镜像的标识|镜像名称[:tag]

# 常用的参数
docker run -d -p 宿主机端口:容器端口 --name 容器标识 镜像的标识|镜像名称[:tag]
# -d:代表后台运行容器
# -p:宿主机端口:容器端口;为了映射当前Linux的段都和容器的端口
# --name:容器名称,指定容器的名称

# 例如
docker run -d -p 8080:8080 --name tomcat8 b8dfe9ade316 

镜像标识直接复制docker images看到的列表

成功访问

查看当前运行的容器

docker ps

# 查看所有容器
docker ps -a

查看容器日志

docker logs -f 容器id
# -f:可以滚动查看日志的最后几行

进入容器内部

可以进入容器内部进行操作

docker exec -it 容器id bash

# 例如
docker exec -it a927e08235da bash


查看里面的目录,说明一个容器就是一个独立的Linux系统

退出容器

快捷键

control+p+q

复制内容到容器

将宿主机的文件复制到容器内部的指定目录
docker cp 文件名称 容器id:容器内部路径
将容器内部的文件复制到宿主机
docker cp 容器id:容器目录 宿主机目录


尝试修改容器内部文件,在容器内部还不能用vi编辑文件,讲起拷贝到宿主机,修改完,再拷贝回去

启动容器

docker start 容器id

# 重启容器
docker restart 容器id

停止容器

docker stop 容器id

# 停止所有容器
docker stop $(docker ps -qa)

删除容器

docker rm 容器id

# 例如
docker rm ed8fe073fe33

# 删除全部容器
docker rm $(docker ps -qa)

提交运行时容器成为镜像

docker commit -a='作者' -m='备注' 运行时容器ID 新镜像名称

# 例如
docker commit -a='zsx' -m='test' 85650af9f9ac tomcat8new


查看容器元信息

docker inspect 容器id

设置容器自动启动

docker update --restart=always 容器id

# 例如
docker update --restart=always 85650af9f9ac

Docker应用

Docker安装Tomcat

docker run -d -p 8080:8080 --name tomcat8088 daocloud.io/library/tomcat:8.5.15-jre8

Docker安装MySQL

docker run -d -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 daocloud.io/library/mysql:5.7.4

容器卷

为了部署SSM的工程,需要使用到cp的命令将宿主机内的ssm.war文件复制到容器内部
数据卷:将宿主机的一个目录映射到容器的一个目录中。
可以在宿主机中操作目录中的内容,那么容器内部的文件,也会跟着一起改变

创建数据卷

创建数据卷之后,默认会存放在一个目录下/var/lib/docker/volumes/数据卷名称/_data

docker volume create 数据卷名称

查看数据卷详情

查看数据卷的详细信息,可以查询到存放路径,创建时间等等

docker volume inspect 数据卷名称

查看全部数据卷

docker volume ls

删除数据卷

docker volume rm 数据卷名称

容器映射数据卷

映射有两种方式:

  • 通过数据卷名称映射,如果数据卷不存在,Docker会帮你自动创建,会将容器内部自带的文件,存储在默认的存放路径中
  • 通过路径映射数据卷,直接指定一个路径作为数据卷的存放位置,但是这个路径下是空的
# 通过数据卷名称映射
docker run -v 数据卷名称:容器内部的路径 镜像id

# 通过路径映射数据卷
docker run -v 路径:容器内部的路径 惊喜那个id

Dockerfile自定义镜像

我们可以从中央仓库下载一个镜像,也可以自己手动制作一个镜像,需要通过Dockerfile去指定自定义镜像的信息

Dockerfile

创建自定义镜像就需要创建一个Dockerfile,如下为Dockerfile的语言
Dockerfile是由一系列命令和参数构成的脚本,这些命令应用于操作系统(centos或者Ubuntu)基础镜像并最终创建一个新镜像;
我们前面讲过的用手动的方式,修改配置文件,或者添加、删除文件目录的方式,来构建一种新镜像;这种手工方式麻烦,容易出错,而且不能复用;
我们这里将Dockerfile,用脚本方式来构建自动化,可复用的,高效率的创建镜像方式,是企业级开发的首选方式
在软件系统开发生命周期中,采用Dockerfile来构建镜像:

  1. 对于开发人员:可以为开发团队提供一个完全一致的开发环境;
  2. 对于测试人员:可以直接拿开发时所构建的镜像或者通过Dockerfile文件构建一个新的镜像开始工作;
  3. 对于运维人员:在部署时,可以实现应用的无缝移植。
from: 指定当前自定义镜像依赖的环境  指定基础镜像  一切丑姑娘这里开始构建
copy: 将相对路径下的内容复制到自定义镜像中
workdir: 生命镜像的默认工作目录
run: 执行的命令,可以编写多个
cmd: 需要执行的明林(在workdir下执行的,cmd可以写多个,只以最后一个为准)

# 举个例子,制作SSM容器镜像,而且ssm.war要放在Dockerfile的同级目录下
from daocloud.io/library/tomcat:8.5.15=jre8
copy ssm.war /usr/local/tomcat/webapps

通过Dockerfile制作镜像

编写完Dockerfile后需要通过命令将其只作为镜像,并且要在Dockerfile的当前目录下,之后即可在镜像中查看到指定的镜像信息,注意最后的 .

docker build -t 镜像名称[:tag]

@欧币杰昔

标签:容器,compose,Dockerfile,使用,镜像,Docker,安装,docker
From: https://blog.csdn.net/sharp521/article/details/136751009

相关文章

  • Nginx的安装和使用
    Nginx的安装和使用Nginx主要功能:反向代理、负载均衡、动静分离使用docker-compose安装cd/opt/docker_composemkdirdocker_nginxcddocker_nginxtouchdocker-compose.yml编写docker-compose.yml后保存version:'3.1'services:nginx:restart:always......
  • 使用java创建新的进程
    使用jdk内置的工具importorg.apache.commons.io.IOUtils;importjava.nio.charset.Charset;publicclassTestProcess{publicstaticvoidmain(String[]args)throwsException{testExec();}privatestaticvoidtestExec()throwsException{......
  • k8s 查看容器资源使用率
    dockerstats1b4043389e79CONTAINERIDNAMECPU%MEMUSAGE/LIMITMEM%NETI/OBLOCKI/OPIDS1b4043389e79k8s_xxx-node_xxxx-node-1_default_6cef3b8e-e1f8-11ee-b58d-060eb4000e9d_01.02%3.021GiB/16GiB18.88%0B/......
  • C++示例:学习C++标准库,std::unordered_map无序关联容器的使用
    01std::unordered_map介绍std::unordered_map是C++标准库中的一种无序关联容器模板类,它提供了一种将键映射到值的方法。它的底层基于哈希表实现,内容是无序的,可以在平均情况下在O(1)的时间复杂度内完成插入、查找和删除操作。值得注意的是,哈希表可能存在冲突,即不同的键值......
  • 使用Anaconda创建Python指定版本的虚拟环境
    由于工作的需要和学习的需要,需要创建不同Python版本的虚拟环境。比如zdppy的框架,主要支持的是Python3.8的版本,但是工作中FastAPI主要使用的是3.11的版本,所以本地需要两套Python环境。决定使用Anaconda虚拟环境管理的能力,并记录下。首先,下载:https://www.anaconda.com/down......
  • 如何在Windows11上安装WSL和Linux子系统以及搭建Docker环境
    今天给大家介绍一下如何在Windows11上安装Docker打开控制面板:打开程序:打开启用或关闭Windows功能。勾选Linux子系统:此时,可能需要重启电脑。以管理员身份打开PowerShell执行:bcdedit/sethypervisorlaunchtypeauto打开微软商店,安装Ubuntu22:去这个网址下载li......
  • Samba安装与使用
    Samba是在linux和UNIX系统上实现SMB的一个免费软件,由服务器及客户端程序构成。SMB(ServerMessagesBlock,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。安装步骤:1.安装SMB应用:sudoapt-getinstal......
  • 安装交叉编译器
    参考博客:安装交叉编译器arm-linux-gnueabihf-gccLinaro官网:https://www.linaro.org/downloads/ 下载完编译器安装包之后,使用:tar-Jxvfgcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz解压安装包,pwd获取当前目录,可见目录下有lib和bin两个文件夹。在~/.ba......
  • 工作使用软件安装
    本文仅为个人工作常用工具安装使用记录,这些常用软件工具有不会使用的地方,在网上搜索使用方法即可安装FileZilla:Ubuntu和windows的文件互传可使用FileZilla安装方法:FileZilla客户端的安装配置教程以及使用教程(超级详细)1、开启Ubuntu下的FTP服务:sudoapt-getinstallvsftpd......
  • Eclipse程序安装包下载
    程序安装包下载程序1:EclipseIDEforEnterpriseJavaandWebDevelopers这个软件是免费的,可以从下面的链接自行下载:https://www.eclipse.org/downloads/packages/release/2022-12/r/eclipse-ide-enterprise-java-and-web-developers程序2:MySQL-win64打开手机微信App,扫码推......