首页 > 其他分享 >Docker入门

Docker入门

时间:2023-08-04 17:45:25浏览次数:34  
标签:容器 入门 ID 名称 mysql 镜像 docker Docker

Docker安装

自动安装

使用官方脚本自动安装

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

手动安装

卸载旧版本

$ sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

安装依赖软件

$ sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

设置仓库源

官方源,访问比较慢

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

清华大学

$ sudo yum-config-manager \
    --add-repo \
    https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo

阿里云

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

开始安装

$ sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin

Docker操作

启动

$ sudo systemctl start docker

设置自启动

$ sudo systemctl enable docker

停止

$ sudo systemctl stop docker

卸载

删除安装包

yum remove docker-ce

删除镜像、容器、配置文件

rm -rf /var/lib/docker

查看版本

docker -v

docker操作需要root权限,如果不是root用户的话需要使用sudo或者把用户添加到docker用户组

sudo groupadd docker     			#添加docker用户组
sudo gpasswd -a $USER docker     	#将登陆用户加入到docker用户组中
newgrp docker     					#更新用户组
docker -v    						#测试docker命令是否可以使用

镜像操作

查找镜像

官方镜像仓库https://hub.docker.com/

docker search 镜像名称:版本号

docker search mysql:8.0.12

拉取镜像

docker pull 镜像名称:版本号

docker pull mysql  # 不写版本号,默认拉取最新版本

查看本地镜像

docker images

image

  • REPOSITORY:仓库名
  • TAG:标签
  • IMAGE ID:镜像ID
  • CREATED:镜像创建时间
  • SIZE:镜像大小

运行镜像

镜像每次运行都会创建一个容器,类似于安装包进行安装

docker run -d --name 容器名称 -p 80:80 镜像名称

docker run -d --name mysql -p 80:80 -e MYSQL_ROOT_PASSWORD=123456 mysql
  • -d:表示在后台运行
  • --name:容器名称
  • -p:端口映射,表示把本机端口映射到容器中的端口
  • -e:设置环境变量,从镜像官网介绍中查看可配置的环境变量
  • nginx:使用的镜像名称

删除镜像

docker rmi 镜像名称

docker rmi mysql

容器操作

通过使用docker run运行镜像会创建一个容器,紧接着可以对容器进行操作

查看容器

docker ps # 查看运行中的容器
docker ps -a # 查看所有容器

image

  • CONTAINER ID:容器ID
  • IMAGE:镜像名称
  • COMMAND:创建容器的命令
  • CREATED:容器创建时间
  • STATUS:容器状态
  • PORTS:容器的端口映射信息(使用 docker port 容器名称/容器ID 可以单独查看端口映射信息)
  • NAMES:容器名称

在操作容器时,可使用容器名称或者容器ID,并且容器ID可使用前缀,只要能唯一区分出容器即可,比如上面nginx容器ID为1056aad831bb,mysql容器ID为9c1ecf3789cc,所以下面的操作中可以使用1表示nginx,9表示mysql

启动容器

docker start 容器名称/容器ID
docker start mysql/9

重启容器

docker restart 容器名称/容器ID # 重启正在运行的容器
docker restart nginx/1

停止容器

docker stop 容器名称/容器ID
docker stop nginx/1

删除容器

docker rm [-f] 容器名称/容器ID
docker rm -f nginx/1
  • -f:强制删除

进入容器

attach进入容器后,退出时容器会停止(不建议使用,不要使用)

docker attach 容器名称/容器ID

exec进入容器,退出时容器不会停止(建议使用,一定要用)

docker exec -i -t 容器名称/容器ID bash
  • -i:交互式方式进入容器
  • -t:以终端形式进入容器
  • bash:表示要执行的命令

这个是最常用也是最基本的进入容器的命令(记住它!记住它!记住它!)意思是进入了容器,并且打开了终端,就像用XShell连接成功一样,可以执行命令了。

退出容器

exit

查看日志

docker logs -f 容器名称/容器ID
  • -f:和tail -f一样,查看实时日志

查看容器信息

docker inspect 容器名称/容器ID  # 查看容器详细信息
docker inspect 镜像名称/镜像ID  # 查看镜像详细信息

如果容器名称和镜像名称一样,使用名称时默认查的是容器信息,所以建议使用ID

导出容器

导出容器快照为tar文件

docker export 容器名称/容器ID > 容器.tar
docker export nginx > nginx.tar

导入容器

将容器快照导入为镜像

docker import 文件名称/远程URL 仓库名称:标签名称
docker import nginx.tar test/nginx:v1

数据卷

image

网络操作

默认使用的是docker0虚拟网络,可以自己新建网络,把容器添加到网络中,这样同一个网络中的容器可以根据容器名进行访问,不用使用ip

image

Dockerfile

用来构建镜像

示例:

FROM openjdk:8

ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

COPY docker-demo.jar /app.jar

ENTRYPOINT ["java", "-jar", "/app.jar"]

image

docker compose

用来一键创建多个容器

示例:

version: "1.0"

services:
  mysql:
    image: mysql
    container_name: mysql
    ports:
      - "3306:3306"
    environment:
      TZ: Asia/Shanghai
      MYSQL_ROOT_PASSWORD: 123456
    volumes:
      - "/home/mysql/conf:/etc/mysql/conf.d"
      - "/home/mysql/data:/var/lib/mysql"
      - "/home/mysql/init:/docker-entrypoint-initdb.d"
    networks:
      - new
  demo:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: demo
    ports:
      - "8080:8080"
    networks:
      - new
    depends_on:
      - mysql
networks:
  new:
    driver: bridge

image

问题记录

docker-compose.yml网络配置不生效问题?

初始设置

mysql:
	networks:
		- new
demo:
	networks:
		- new

修改后

mysql:
	networks:
		- new
demo:
	networks:
		- new
networks: # 声明新创建的网络
  new:
    driver: bridge

mysql初始化脚本不执行?

删除data目录下文件,重启生效

标签:容器,入门,ID,名称,mysql,镜像,docker,Docker
From: https://www.cnblogs.com/bright1st/p/17606607.html

相关文章

  • Docker中安装Redis
    1.首先,确保您已经安装了Dockerdockerpullredis2.创建并运行 Redis 容器创建容器之前需要先创建好 Redis 的配置文件 redis.conf #创建配置文件目录mkdir-p/mydata/redis/conf#在配置文件目录下创建配置文件touch/mydata/redis/conf/redis.conf#添加配置内容:开......
  • docker下nginx配置
    一步一坑安装docker nginx 首先选择适当版本镜像下载我选的: nginx:1.16.0dockerpullnginx:1.16.0 安装完毕之后创建挂载文件夹:mkdir/usr/local/docker/nginx 减配启动一个nginx复制文件到挂载文件路径dockerrun--namenginx-test-d-p80:80nginx......
  • docker-compose 启动MySQL
    version:'3.3'services:mysql:image:mysql:8.0.20##镜像restart:alwayshostname:mysqlcontainer_name:mysqlprivileged:trueports:-3306:3306environment:MYSQL_ROOT_PASSWORD:123456TZ:As......
  • docker compose 安装Prometheus+granfa
    cd/home/xxxxmkdir-pprometheuschmod777prometheuscdprometheusmkdir-pgrafana_dataprometheus_datachmod777grafana_dataprometheus_datadocker-compose.ymlversion:"3.7"services:node-exporter:image:prom/node-exporter:lat......
  • 记录一下【docker compose发布】 docker容器间通信
    踩坑:在网上找的帖子说是在dockercompose文件中的network下添加 1:直接报错, 2:然后又去查找说要在compose文件底部,和service同级添加network的声明,添加后还是不能通信,然后使用命令dockernetworkls查看发现新增了两个网络sub_test,pub_test 3:重新查找,使用已有网络需......
  • shell 脚本:nginx jdk maven node-exporter docker-ce
     写一个脚本,本地自带nginx1.24源码包,然后自动完成安装,并加入system管理。并设置开启自启动,并启动ng。并完成对80端口的curl测试,返回状态码200打印启动正常的消息:#!/bin/bash#安装依赖sudoapt-getupdatesudoapt-getinstall-ybuild-essentialwgetcurl#下载并解......
  • docker
    命令基本命令#安装dockeryuminstalldocker#启动dockersystemctlstartdocker#配置让docker服务随系统自动启动systemctlenabledocker#取消开机自动启动systemctldisabledocker#停止docker服务systemctlstopdocker#查看nginx服务的状态systemctl......
  • 【数据结构 | 入门】线性表与链表 (问题引入&实现&算法优化)
    ......
  • 学雷达怎么入门?雷达专业必备的理论书籍
    1.引言大家好!我是调皮哥,目前研三,尚未毕业,研究生阶段主要是做一些毫米波雷达的应用,对线性调频连续波雷达的一些基本原理算是有一些了解吧。如今盲审已过,剩下的时间准备把手头的项目做做,接着准备毕业论文答辩,然后在有空的时候顺便给大家分享一些雷达方面的学习经验、问题解答,以及做一......
  • Raspberry Pi(树莓派4B)4轻松入门(上)-安装
    1-RaspberryPi4入门RaspberryPi是一款功能齐全的计算机,包装小巧,价格实惠--虽然价格因计算能力而异,但基本的Pi4起价为35美元。无论您是想要一个可以用来执行日常计算任务的设备,如创建令人惊叹的程序、电路或控制其他物理设备,RaspberryPi都能满足需求。RaspberryPi品牌......