docker命令

2023-12-28 10:41:52

docker

docker安装

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

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

指定Docker镜像源

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

安装Docker

yum makecache fast
yum -y install docker-ce

启动docker

systemctl start docker
systemctl enabled docker

# 测试
docker run hello-world

docker 镜像命令

1.查看中央仓库的镜像

docker search 所要搜索的镜像名称

2.从远程仓库下载镜像

docker pull 镜像名称

3.查看本地所拥有的镜像

docker images

4.删除本地镜像

注意:当前镜像不被容器进行依赖

docker rmi 镜像名称

5.导出镜像

#将本地镜像导出
docker save -o 导出的路径/名字  镜像id
#加载本地的镜像
docker load -i 镜像文件
#加载完成后,镜像名称以及版本为none 需重新设置
docker tag 镜像id 新名称:版本

docker 容器命令

镜像启动后,称之为容器,运行容器时,需指定你的镜像,如果本地没有该镜像,会自动从远程仓库进行镜像下载,下载完成后,再启动为容器。(注意:一个镜像对应一个容器)

1.启动镜像

docker run 镜像的id|镜像的名称[:tag]

#启动镜像时的参数 例如:
docker run -d -p 宿主机的端口号:容器的端口号 --name 容器的名称 镜像的id|镜像的名称[:tag]
#-d: 代表后台运行容器
#-p: 端口号的映射。当前linux的端口号与容器的端口号。--->端口号可以相同,也可以不同。
#--name 指定容器的名称

2.查看正在运行中的容器

docker ps -a|-q
-a 查看全部的容器,包括没有运行的
-q 之查看容器的标识

3.停止运行中的容器

docker stop 容器id

4.删除容器

删除容器前,必须先停止容器

docker rm 容器id

5.安装tomcat

docker search tomcat
#从远程仓库下载 tomcat:8.5.15-jre8
docker pull daocloud.io/library/tomcat:8.5.15-jre8
#下载完成后,将tomcat镜像启动为容器
docker run -d -p 8081:8080 --name mytomcat 镜像id
#解析 
CONTAINER ID   IMAGE          COMMAND             CREATED         STATUS         PORTS                    NAMES
a9fa2bd4b4e7   b8dfe9ade316   "catalina.sh run"   8 seconds ago   Up 8 seconds   0.0.0.0:8081->8080/tcp   mytomcat

#CONTAINER ID 容器id 不会重复 唯一
#IMAGE 镜像id
#COMMAND 启动命令
#CREATED 容器创建时间
#STATUS 容器的状态
#PORTS 端口的映射
#NAMES 容器的名称

6.查看容器的日志

docker logs -f 容器id

7.进入容器内部(容器相当于—》再Linux宿主机中,虚拟出来的一个linux服务器)

docker exec -it 容器id bash

8.将文件 复制到容器中

docker cp 文件名称 容器id:容器内部路径

9.docker 安装MySql

#从中央仓库下载Mysql服务
docker pull daocloud.io/library/mysql:5.7.4
#启动mysql服务
docker run -d -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=root 镜像id
#如果本地Linux中已经拥有了mysql服务我们需要先停止掉Mysql服务
systemctl stop mysqld.service
#启动docker中的mysql容器
docker start 容器id

docker数据卷

部署springboot项目时,需要使用到docker cp的命令,将linxu下的war包,复制到容器内部的地址中,当你的容器被删除掉后,war同时被删除,如果要再次启动tomcat,需要从新创建容器,从新复制war包

数据卷的作用:将宿主机的目录映射到容器的一个目录中。linux下的一个目录地址,就等同与你映射的容器内部的路径,当我们对linux下的目录中的内容进行操作时,容器内部会进行相同的操作。

1.创建数据卷

数据卷创建后,默认会存放在宿主机 /var/lib/docker/volumes/数据卷名称/_data

docker volume create 数据卷的名称

2.查看数据卷详情

docker volume inspect 数据卷名称

3.查看全部数据卷

docker volume ls

4.删除数据卷

docker volume rm 数据卷的名称

5.数据卷映射

#通过数据卷名称进行映射 ,使用名称进行映射时,我们需要先来创建出数据卷,才能使用名称进行映射。回讲容器内部自带的文件,复制到默认的存放路径中
docker run -d -p 宿主机端口号:容器端口号 -v 数据卷名称:容器内部路径 --name 自定义容器名称 镜像的id
#通过路径进行映射,直接指定一个路径作为数据卷的存放地址,这个路径下是空的。
docker run -d -p 宿主机端口号:容器端口号 -v 宿主机路径:容器内部路径 --name 自定义容器名称 镜像的id

dockerfile 自定义镜像

from: 指定当前自定义镜像的依赖环境
copy: 将相对路径下的内容复制到自定义镜像中
workdir: 声明镜像的默认工作目录
run:执行的命令,可以编写多个
cmd:需要执行的命令(再workdir下执行,cmd可以写多个,只以最后一个为准)
#举例
from daocloud.io/library/tomcat:8.5.15-jre8
copy springboot.war /usr/local/tomcat/webapps

1.制作镜像

编写完成Dockerfile后需要通过命令将其制作成为镜像,并且要在Dockerfile的当前目录下执行该命令,之后就以可以使用docker images 查看自己制作好的镜像。注意最后有一个.

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

Docker-Compose

Docker-compose 可以帮助我们批量管理容器,只需要个docker-compose.yml文件去维护即可,其中可以定义参数

1.上传docker-compose 进行改名,权限的赋予

#安装docker-compose
将docker-copmose 进行上传
rz docker-compose-Linux-x86_64 上传到用户根目录下
#上传成功后,将docker-compose-Linux-x86_64 进行重命名
mv docker-compose-Linux-x86_64 docker-compose
#将改名后的docker-compose 赋予权限
chmod 777 docker-compose

2.配置环境变量

#将docker-compose 移动到/usr/local/bin目录下
mv docker-compose /usr/local/bin
#编辑环境里变量文件,将docker-compose应用再环境变量中
vi /etc/profile
#将PATH修改为下方的配置
export PATH=$JAVA_HOME/bin:/usr/local/bin:$PATH
#让配置生效,重新加载环境变量
source /etc/profile

3.测试

再任意目录下输入 docker-compose 如能出现Define and run multi-container applications with Docker. 说明docker-compose 安装成功,并且环境变量配置成功

4.使用docker-compose 管理MySql和Tomcat容器

1.编写yml文件管理容器,名字必须是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_PASSOWRD: 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:
			- 8082:8080
		environment:
			TZ: Asia/Shanghi
		volumes:
			- /opt/docker_mysql_tomcat/tomcat_webapps:/user/local/tomcat/webapps
			- /opt/docker_mysql_tomcat/tomcat_logs:/usr/local/tomcat/logs

5.使用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 管理容器得日志信息
docker-compose logs -f

6.docker-compose 配合Dockerfile使用

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

1.修改docker-compose.yml文件配置dockerfile先创建镜像,再来启动镜像
#修改docker-compose.yml文件
version: '3.1'
services:
    #服务的名称
    mysql:     
    #代表只要docker启动,那么这个容器就跟着一起启动
        restart: always     
        #指定镜像路径
        image: daocloud.io/library/mysql:5.7.4 
        #容器名称
        container_name: mysql 
        #端口映射
        ports:
            - 3306:3306 
            #配置额外的参数
        environment: 
         #指定MYSQL的ROOT用户登录密码
            MYSQL_ROOT_PASSWORD: root
            #指定时区
            TZ: Asia/Shanghai
        #映射数据卷
        volumes:
            - /opt/docker_mysql_tomcat/mysql_data:/var/lib/mysql 
    tomcat:
        restart: always
        build:
        #指定dockerfile得在的路径
        #代表Dockerfile的地址实在root用户的根目录下
            context: ~/
            dockerfile: Dockerfile
            #根据dockerfile生成镜像得名称
        image: filecomposetomcat:1.0
        container_name: tomcat
        ports:
            - 8082:8080
        environment:
            TZ: Asia/Shanghai

2.Dockerfile的文件
from daocloud.io/library/tomcat:8.5.15-jre8
copy springboot.war /usr/local/tomcat/webapps
3.测试运行
#直接启动基于docker-compose.yml以及Dockerfile文件构建得自定义镜像
docker-compose up -d

文章来源:https://blog.csdn.net/qq_51365907/article/details/135249343
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。