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目录下文件,重启生效

posted @ 2023-08-04 17:35  陌影~  阅读(28)  评论(0编辑  收藏  举报