尚硅谷-2022新版docker笔记-初级篇

docker官网

1.docker简介

解决了环境迁移的痛点

docker理念简介

docker安装准备

Install Docker Engine on CentOS

确保虚拟机已经安装centos7

centos7.iso下载步骤如下图所示

访问 cento官网

尚硅谷-2022新版docker笔记-初级篇_第1张图片
在这里插入图片描述
尚硅谷-2022新版docker笔记-初级篇_第2张图片
安装centos7过程不再赘述。

如参考其他文档安装centos7无法访问外网如百度,切换网络连接为NAT模式即可,本机环境是连接wifi上外网非网线模式。
尚硅谷-2022新版docker笔记-初级篇_第3张图片
确保可以访问外网如百度。
尚硅谷-2022新版docker笔记-初级篇_第4张图片

2.docker安装

2.1 安装 yum-utils

2.2 安装 yum-config-manager

 第一步
 sudo yum install -y yum-utils
 第二步
 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
 第二步使用阿里云镜像
 sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

效果图
尚硅谷-2022新版docker笔记-初级篇_第5张图片
可能存在的问题: 在设置阿里云的时候没有出现 repo saved to /etc/yum.repos.d/docker-ce.repo ,可能是网络环境问题,只能先使用官方文档提供的路径配置。

2.3 安装 docker-ce docker-ce-cli containerd.io

sudo yum install docker-ce docker-ce-cli containerd.io

在这里插入图片描述

2.4 启动docker

sudo systemctl start docker

在这里插入图片描述

2.5 启动hello-world

sudo docker run hello-world

尚硅谷-2022新版docker笔记-初级篇_第6张图片

2.6 查看docker状态

sudo systemctl status docker

尚硅谷-2022新版docker笔记-初级篇_第7张图片

2.7 设置开机自启动

重新启动虚拟机查看docker状态发现dead,所以需要设置开机自启动
在这里插入图片描述

sudo systemctl enable docker 

在这里插入图片描述
重启后查看状态,自启动已经设置成功
尚硅谷-2022新版docker笔记-初级篇_第8张图片

2.8 查看版本

sudo docker version

尚硅谷-2022新版docker笔记-初级篇_第9张图片

2.9 docker – help 命令帮助文档

docker --help
------分界线------
Usage:  docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
Options:
      --config string      Location of client config files (default "/root/.docker")
  -c, --context string     Name of the context to use to connect to the daemon (overrides DOCKER_HOST env var and default context set
                           with "docker context use")
  -D, --debug              Enable debug mode
  -H, --host list          Daemon socket(s) to connect to
  -l, --log-level string   Set the logging level ("debug"|"info"|"warn"|"error"|"fatal") (default "info")
      --tls                Use TLS; implied by --tlsverify
      --tlscacert string   Trust certs signed only by this CA (default "/root/.docker/ca.pem")
      --tlscert string     Path to TLS certificate file (default "/root/.docker/cert.pem")
      --tlskey string      Path to TLS key file (default "/root/.docker/key.pem")
      --tlsverify          Use TLS and verify the remote
  -v, --version            Print version information and quit

Management Commands:
  app*        Docker App (Docker Inc., v0.9.1-beta3)
  builder     Manage builds
  buildx*     Docker Buildx (Docker Inc., v0.7.1-docker)
  config      Manage Docker configs
  container   Manage containers
  context     Manage contexts
  image       Manage images
  manifest    Manage Docker image manifests and manifest lists
  network     Manage networks
  node        Manage Swarm nodes
  plugin      Manage plugins
  scan*       Docker Scan (Docker Inc., v0.12.0)
  secret      Manage Docker secrets
  service     Manage services
  stack       Manage Docker stacks
  swarm       Manage Swarm
  system      Manage Docker
  trust       Manage trust on Docker images
  volume      Manage volumes

Commands:
  attach      Attach local standard input, output, and error streams to a running container
  build       Build an image from a Dockerfile
  commit      Create a new image from a container's changes
  cp          Copy files/folders between a container and the local filesystem
  create      Create a new container
  diff        Inspect changes to files or directories on a container's filesystem
  events      Get real time events from the server
  exec        Run a command in a running container
  export      Export a container's filesystem as a tar archive
  history     Show the history of an image
  images      List images
  import      Import the contents from a tarball to create a filesystem image
  info        Display system-wide information
  inspect     Return low-level information on Docker objects
  kill        Kill one or more running containers
  load        Load an image from a tar archive or STDIN
  login       Log in to a Docker registry
  logout      Log out from a Docker registry
  logs        Fetch the logs of a container
  pause       Pause all processes within one or more containers
  port        List port mappings or a specific mapping for the container
  ps          List containers
  pull        Pull an image or a repository from a registry
  push        Push an image or a repository to a registry
  rename      Rename a container
  restart     Restart one or more containers
  rm          Remove one or more containers
  rmi         Remove one or more images
  run         Run a command in a new container
  save        Save one or more images to a tar archive (streamed to STDOUT by default)
  search      Search the Docker Hub for images
  start       Start one or more stopped containers
  stats       Display a live stream of container(s) resource usage statistics
  stop        Stop one or more running containers
  tag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
  top         Display the running processes of a container
  unpause     Unpause all processes within one or more containers
  update      Update configuration of one or more containers
  version     Show the Docker version information
  wait        Block until one or more containers stop, then print their exit codes

Run 'docker COMMAND --help' for more information on a command.
To get more help with docker, check out our guides at https://docs.docker.com/go/guides/

3.docker常用镜像命令

3.1 docker images 列出镜像

尚硅谷-2022新版docker笔记-初级篇_第10张图片

3.1.1 docker images --help

尚硅谷-2022新版docker笔记-初级篇_第11张图片

3.1.2 docker images hello-world

在这里插入图片描述

3.2 docker search 镜像查找

尚硅谷-2022新版docker笔记-初级篇_第12张图片

3.2.1 docker search --help

尚硅谷-2022新版docker笔记-初级篇_第13张图片

3.2.2 docker search redis

在这里插入图片描述

3.2.3 docker search --limit

在这里插入图片描述

3.3 docker pull 拉取镜像或仓库

尚硅谷-2022新版docker笔记-初级篇_第14张图片

3.3.1 docker pull --help

尚硅谷-2022新版docker笔记-初级篇_第15张图片

3.3.2 docker pull redis

尚硅谷-2022新版docker笔记-初级篇_第16张图片

3.3.3 docker pull redis:6.2.6

尚硅谷-2022新版docker笔记-初级篇_第17张图片

3.4 docker system 管理docker

尚硅谷-2022新版docker笔记-初级篇_第18张图片

3.4.1 docker system df 显示docker磁盘使用情况

尚硅谷-2022新版docker笔记-初级篇_第19张图片

3.4.2 docker system events 从服务器获取实时事件

4.3 docker system info 显示系统范围的信息

4.4 docker system prune 删除未使用的数据

5 docker rmi 删除镜像

尚硅谷-2022新版docker笔记-初级篇_第20张图片

3.5.1 docker rmi --help

尚硅谷-2022新版docker笔记-初级篇_第21张图片

3.5.2 docker rmi -f xxx 根据image_id删除镜像

尚硅谷-2022新版docker笔记-初级篇_第22张图片

3.5.3 docker rmi a b 根据名称删除多个镜像

尚硅谷-2022新版docker笔记-初级篇_第23张图片

面试题:docker虚悬镜像是什么

镜像没有仓库名或没有标签的镜像

虚悬镜像的查看命令

docker images -f dangling=true

4.docker常用容器命令

4.1 docker run 在新容器中运行

尚硅谷-2022新版docker笔记-初级篇_第24张图片

4.1.1 docker run --help

[root@lzy test]# docker run --help

Usage:  docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

Run a command in a new container

Options:
      --add-host list                  Add a custom host-to-IP mapping (host:ip)
  -a, --attach list                    Attach to STDIN, STDOUT or STDERR
      --blkio-weight uint16            Block IO (relative weight), between 10 and 1000, or 0 to disable (default 0)
      --blkio-weight-device list       Block IO weight (relative device weight) (default [])
      --cap-add list                   Add Linux capabilities
      --cap-drop list                  Drop Linux capabilities
      --cgroup-parent string           Optional parent cgroup for the container
      --cgroupns string                Cgroup namespace to use (host|private)
                                       'host':    Run the container in the Docker host's cgroup namespace
                                       'private': Run the container in its own private cgroup namespace
                                       '':        Use the cgroup namespace as configured by the
                                                  default-cgroupns-mode option on the daemon (default)
      --cidfile string                 Write the container ID to the file
      --cpu-period int                 Limit CPU CFS (Completely Fair Scheduler) period
      --cpu-quota int                  Limit CPU CFS (Completely Fair Scheduler) quota
      --cpu-rt-period int              Limit CPU real-time period in microseconds
      --cpu-rt-runtime int             Limit CPU real-time runtime in microseconds
  -c, --cpu-shares int                 CPU shares (relative weight)
      --cpus decimal                   Number of CPUs
      --cpuset-cpus string             CPUs in which to allow execution (0-3, 0,1)
      --cpuset-mems string             MEMs in which to allow execution (0-3, 0,1)
  -d, --detach                         Run container in background and print container ID
      --detach-keys string             Override the key sequence for detaching a container
      --device list                    Add a host device to the container
      --device-cgroup-rule list        Add a rule to the cgroup allowed devices list
      --device-read-bps list           Limit read rate (bytes per second) from a device (default [])
      --device-read-iops list          Limit read rate (IO per second) from a device (default [])
      --device-write-bps list          Limit write rate (bytes per second) to a device (default [])
      --device-write-iops list         Limit write rate (IO per second) to a device (default [])
      --disable-content-trust          Skip image verification (default true)
      --dns list                       Set custom DNS servers
      --dns-option list                Set DNS options
      --dns-search list                Set custom DNS search domains
      --domainname string              Container NIS domain name
      --entrypoint string              Overwrite the default ENTRYPOINT of the image
  -e, --env list                       Set environment variables
      --env-file list                  Read in a file of environment variables
      --expose list                    Expose a port or a range of ports
      --gpus gpu-request               GPU devices to add to the container ('all' to pass all GPUs)
      --group-add list                 Add additional groups to join
      --health-cmd string              Command to run to check health
      --health-interval duration       Time between running the check (ms|s|m|h) (default 0s)
      --health-retries int             Consecutive failures needed to report unhealthy
      --health-start-period duration   Start period for the container to initialize before starting health-retries countdown (ms|s|m|h) (default 0s)
      --health-timeout duration        Maximum time to allow one check to run (ms|s|m|h) (default 0s)
      --help                           Print usage
  -h, --hostname string                Container host name
      --init                           Run an init inside the container that forwards signals and reaps processes
  -i, --interactive                    Keep STDIN open even if not attached
      --ip string                      IPv4 address (e.g., 172.30.100.104)
      --ip6 string                     IPv6 address (e.g., 2001:db8::33)
      --ipc string                     IPC mode to use
      --isolation string               Container isolation technology
      --kernel-memory bytes            Kernel memory limit
  -l, --label list                     Set meta data on a container
      --label-file list                Read in a line delimited file of labels
      --link list                      Add link to another container
      --link-local-ip list             Container IPv4/IPv6 link-local addresses
      --log-driver string              Logging driver for the container
      --log-opt list                   Log driver options
      --mac-address string             Container MAC address (e.g., 92:d0:c6:0a:29:33)
  -m, --memory bytes                   Memory limit
      --memory-reservation bytes       Memory soft limit
      --memory-swap bytes              Swap limit equal to memory plus swap: '-1' to enable unlimited swap
      --memory-swappiness int          Tune container memory swappiness (0 to 100) (default -1)
      --mount mount                    Attach a filesystem mount to the container
      --name string                    Assign a name to the container
      --network network                Connect a container to a network
      --network-alias list             Add network-scoped alias for the container
      --no-healthcheck                 Disable any container-specified HEALTHCHECK
      --oom-kill-disable               Disable OOM Killer
      --oom-score-adj int              Tune host's OOM preferences (-1000 to 1000)
      --pid string                     PID namespace to use
      --pids-limit int                 Tune container pids limit (set -1 for unlimited)
      --platform string                Set platform if server is multi-platform capable
      --privileged                     Give extended privileges to this container
  -p, --publish list                   Publish a container's port(s) to the host
  -P, --publish-all                    Publish all exposed ports to random ports
      --pull string                    Pull image before running ("always"|"missing"|"never") (default "missing")
      --read-only                      Mount the container's root filesystem as read only
      --restart string                 Restart policy to apply when a container exits (default "no")
      --rm                             Automatically remove the container when it exits
      --runtime string                 Runtime to use for this container
      --security-opt list              Security Options
      --shm-size bytes                 Size of /dev/shm
      --sig-proxy                      Proxy received signals to the process (default true)
      --stop-signal string             Signal to stop a container (default "SIGTERM")
      --stop-timeout int               Timeout (in seconds) to stop a container
      --storage-opt list               Storage driver options for the container
      --sysctl map                     Sysctl options (default map[])
      --tmpfs list                     Mount a tmpfs directory
  -t, --tty                            Allocate a pseudo-TTY
      --ulimit ulimit                  Ulimit options (default [])
  -u, --user string                    Username or UID (format: <name|uid>[:<group|gid>])
      --userns string                  User namespace to use
      --uts string                     UTS namespace to use
  -v, --volume list                    Bind mount a volume
      --volume-driver string           Optional volume driver for the container
      --volumes-from list              Mount volumes from the specified container(s)
  -w, --workdir string                 Working directory inside the container

4.1.2 docker run -it ubuntu:latest /bin/bash || docker run -it ubuntu /bin/bash

-it 代表以命令模式进行交互,类linux终端输入命令

ubuntu:latest 版本号可不加

/bin/bash 容器内执行/bin/bash命令

输入 exit 可退出容器
在这里插入图片描述

4.1.3 docker run -it --name=myu1 ubuntu bash

–name string 设置容器名称
在这里插入图片描述
names 列已经设置为myu1
在这里插入图片描述

4.2 docker ps 列出容器

在这里插入图片描述

4.2.1 docker ps --help

在这里插入图片描述

4.2.2 docker ps -a 展示所有容器包含离线的

在这里插入图片描述

4.2.3 docker ps -l 显示最近创建的一个容器

在这里插入图片描述

4.2.4 docker ps -n 2 显示最近创建的n个容器

在这里插入图片描述

4.2.5 docker ps -q 只显示容器id

在这里插入图片描述

4.3 退出容器

4.3.1 exit 退出并关闭容器

在这里插入图片描述
可以看到上面id的容器已经退出
在这里插入图片描述

4.3.2 ctrl p+q 只退出不关闭容器

退出后查看发现容器状态依旧在线。

在这里插入图片描述

4.4 docker start 开启一个或多个已经关闭的容器

尚硅谷-2022新版docker笔记-初级篇_第25张图片

4.5 docker restart 重启一个或多个容器

尚硅谷-2022新版docker笔记-初级篇_第26张图片

4.6 docker stop 关闭一个或多个正在运行的容器

尚硅谷-2022新版docker笔记-初级篇_第27张图片

4.7 docker kill 杀死一个或多个正在运行的容器

尚硅谷-2022新版docker笔记-初级篇_第28张图片

4.8 docker rm 移除一个或多个容器

尚硅谷-2022新版docker笔记-初级篇_第29张图片

4.9 docker run -d 启动守护式容器

-d, --detach Run container in background and print container ID 在后台运行容器并打印容器ID

docker run -it redis 前台交互启动redis不合适,希望后台启动就行。
尚硅谷-2022新版docker笔记-初级篇_第30张图片
docker run -d redis 后台启动redis
在这里插入图片描述

4.10 docker logs 获取容器日志

尚硅谷-2022新版docker笔记-初级篇_第31张图片

docker logs + 容器id 查看日志
在这里插入图片描述

4.11 docker top 展示容器中运行的实例

尚硅谷-2022新版docker笔记-初级篇_第32张图片

在这里插入图片描述

4.12 docker inspect : 获取容器/镜像的元数据。

尚硅谷-2022新版docker笔记-初级篇_第33张图片
尚硅谷-2022新版docker笔记-初级篇_第34张图片

4.13 docker exec 在运行的容器中执行命令

不会关闭容器
尚硅谷-2022新版docker笔记-初级篇_第35张图片
在这里插入图片描述

4.14 docker attach 连接到正在运行中的容器

退出时会关闭容器尚硅谷-2022新版docker笔记-初级篇_第36张图片

4.15 docker exec 和 docker attach的对比

exec命令连接回容器后执行exit,容器b530xx仍然在线。

尚硅谷-2022新版docker笔记-初级篇_第37张图片
attachexec命令连接回容器后执行exit,容器b530x已经不在线。
在这里插入图片描述

4.16 docker cp 容器内拷贝文件出来

尚硅谷-2022新版docker笔记-初级篇_第38张图片

docker cp 容器id:文件路径 目标路径
docker cp b69c9dedf711:a.txt /

在这里插入图片描述

4.17 docker import导入tar文件变为镜像

尚硅谷-2022新版docker笔记-初级篇_第39张图片

4.18 docker export 导出容器文件系统为一个tar

尚硅谷-2022新版docker笔记-初级篇_第40张图片
导出容器为abcd.tar文件

docker export b69c9dedf711 > abcd.tar

在这里插入图片描述

删除容器 b69c9dedf711

docker rm -f b69c9dedf711

在这里插入图片描述
导入abcd.tar

 cat abcd.tar | docker import - atguigu/ubuntu:3.7

尚硅谷-2022新版docker笔记-初级篇_第41张图片
运行镜像3081c84a2fce 之前用于复制的a.txt仍然存在

 docker run -it 3081c84a2fce /bin/bash

尚硅谷-2022新版docker笔记-初级篇_第42张图片

4.19 docker commit 创建一个增强功能容器的镜像

尚硅谷-2022新版docker笔记-初级篇_第43张图片

4.19.1 给ubuntu镜像安装vim命令

docker ps
docker run -it ubuntu /bin/bash
apt-get update
apt-get -y install vim

运行容器ubuntu,执行更新操作
在这里插入图片描述
测试vim命令,并安装vim
尚硅谷-2022新版docker笔记-初级篇_第44张图片
测试vim命令成功
在这里插入图片描述

4.19.2 docker commit 将增强版ubuntu变为镜像

当仓库名称为大写时,会提示报错,repository name must be lowercase,仓库名称必须为小写

[root@lzy test]# docker commit -m="add vim cmd" -a="lzyy" 72f20a4fd7a9 ubuntuPlus:1.1
invalid reference format: repository name must be lowercase
[root@lzy test]# docker commit -m="add vim cmd" -a="lzyy" 72f20a4fd7a9 ubuntuplus:1.1

查看ubuntuplus镜像是否提交成功
尚硅谷-2022新版docker笔记-初级篇_第45张图片
启动新镜像(带vim命令的ubuntu),测试vim功能发现成功
在这里插入图片描述

5 本地镜像与阿里云

5.1本地镜像推送阿里云

登录阿里云并创建命名空间和仓库。
尚硅谷-2022新版docker笔记-初级篇_第46张图片
按顺序执行上面三行代码
尚硅谷-2022新版docker笔记-初级篇_第47张图片

推送成功
尚硅谷-2022新版docker笔记-初级篇_第48张图片

5.2从阿里云拉取镜像

尚硅谷-2022新版docker笔记-初级篇_第49张图片

6 本地镜像与私有库 docker registry

6.1 下载启动registry

registry下载
尚硅谷-2022新版docker笔记-初级篇_第50张图片
启动registry

 docker run -d -p 5000:5000 -v /zzyyuse/myregistry/:/tmp/registry --privileged=true registry

在这里插入图片描述

6.2 ubuntu 安装 ifconfig 并发布私服库

6.2.1 ubuntu 安装apt-get update

启动ubuntu,测试ifconfig发现并未安装,执行命令更新

docker run -it ubuntu /bin/bash
apt-get update

尚硅谷-2022新版docker笔记-初级篇_第51张图片

6.2.2 ubuntu 安装 net-tools

安装net-tools后测试ifconfig命令,发现启动容器并不包含该命令

apt-get install net-tools
ifconfig

尚硅谷-2022新版docker笔记-初级篇_第52张图片

6.2.3退出正在运行的容器

ctrl p+q 
docker ps

在这里插入图片描述

6.2.4 docker commit 创建新镜像

docker commit -m="ifconfig ubuntu" -a="lzy" e7c2dc6ee923 ifcubuntu:1.2

尚硅谷-2022新版docker笔记-初级篇_第53张图片

6.2.5启动ifcubuntu镜像,测试ifconfig,可以看到已经成功集成ifconfig命令

尚硅谷-2022新版docker笔记-初级篇_第54张图片

6.2.6 验证私服库中有哪些镜像

本机ip用ifconfig命令查看,注意替换ip

curl -XGET http://ip:5000/v2/_catalog

在这里插入图片描述

6.2.7 修改命名

将增强镜像ifcubuntu:1.2命名为私服库可以接受的形式

docker tag ifcubuntu:1.2 192.168.17.128:5000/ifcubuntu:1.2

在这里插入图片描述

6.2.8 上传镜像至私服库

docker push上传镜像

 docker push 192.168.17.128:5000/ifcubuntu:1.2

修改配置文件

vim /etc/docker/daemon.json 

在这里插入图片描述

尚硅谷-2022新版docker笔记-初级篇_第55张图片
修改后测试提交不生效,需要重启docker

systemctl restart docker
systemctl status docker

在这里插入图片描述

docker push 192.168.17.128:5000/ifcubuntu:1.2

在这里插入图片描述

6.2.9 验证私服库中内容

在这里插入图片描述

6.2.10 拉取ifcubuntu

拉取前先把本地镜像删除后拉取私服库中镜像

docker rmi -f 192.168.17.128:5000/ifcubuntu:1.2
docker pull 192.168.17.128:5000/ifcubuntu:1.2

尚硅谷-2022新版docker笔记-初级篇_第56张图片

7 容器数据卷

数据卷的作用:实现宿主机和容器内数据交互,重要数据持久化和备份。

7.1 容器挂载数据卷

7.1.1容器运行并挂载数据卷

docker run -it --privileged -v /tmp/host_data:/tmp/docker_data --name=u3 ubuntu

挂载容器数据卷,在目录下新建aaa.txt
在这里插入图片描述
宿主机对应路径下自动生成aaa.txt
在这里插入图片描述
宿主机新建bbb.txt并修改aaa.txt内容
在这里插入图片描述
容器内自动生成bbb.txt和aaa.txt内容已经发生变化
尚硅谷-2022新版docker笔记-初级篇_第57张图片

7.1.2 查看挂载

docker inspect 2ec6fedb22d4

找到Mounts查看相应的挂载信息。
尚硅谷-2022新版docker笔记-初级篇_第58张图片

7.1.3 容器停止后宿主机新建文件

停止容器u3
尚硅谷-2022新版docker笔记-初级篇_第59张图片
另一个终端操作宿主机新建ccc.txt
在这里插入图片描述
容器重新启动后进入查看,发现ccc.txt已经生成
尚硅谷-2022新版docker笔记-初级篇_第60张图片

7.2 容器卷读写规则 (容器生效)

rw = read write ro =read only

默认读写规则为rw,读写规则限制容器向宿主机操作方向,如果设置只读则容器不能创建文件。

docker run -it --privileged -v /tmp/host_data2:/tmp/docker_data2:ro --name=u4 ubuntu

尚硅谷-2022新版docker笔记-初级篇_第61张图片
宿主机新建x.txt并写入内容
尚硅谷-2022新版docker笔记-初级篇_第62张图片
容器内可以看到宿主机创建的文件x.txt和新增的内容
尚硅谷-2022新版docker笔记-初级篇_第63张图片

7.3 容器卷继承

8 docker安装常用软件

8.1 Tomcat

操作步骤按视频操作即可,不再赘述,其中坑是修改配置文件。

8.2 Mysql

8.2.1拉取镜像安装

docker pull mysql:5.7

在这里插入图片描述
启动之前先查看linux系统中是否启动mysql,否则映射端口会失败

ps -ef|grep mysql

在这里插入图片描述

docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

在这里插入图片描述

docker exec -it fa84bb0b4e6e /bin/bash

尚硅谷-2022新版docker笔记-初级篇_第64张图片
调用ifconfig查看ip后在windows系统使用navicate连接
尚硅谷-2022新版docker笔记-初级篇_第65张图片

8.2.2 存在问题 编码问题 ,数据备份

尚硅谷-2022新版docker笔记-初级篇_第66张图片

8.2.3实战版

启动mysql并挂载容器数据卷

docker run -d -p 3306:3306 --privileged=true
-v /bf/mysql/log:/var/log/mysql
-v /bf/mysql/data:/var/lib/mysql
-v /bf/mysql/conf:/etc/mysql/conf.d
-e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.7

在宿主机所在conf目录新建my.cnf文件
尚硅谷-2022新版docker笔记-初级篇_第67张图片
重新启动容器
尚硅谷-2022新版docker笔记-初级篇_第68张图片

show variables like 'character%';

尚硅谷-2022新版docker笔记-初级篇_第69张图片
完成容器卷挂载后,可以保证容器数据不丢失。

8.3 redis

存在问题:需要指定自定义配置文件,挂载容器数据卷保存数据

8.3.1 步骤

第一步 拉取redis镜像

docker pull redis:6.0.8

第二步 创建自定义配置文件并修改,配置文件内容下载任意linux redis并复制其中的配置文件
尚硅谷-2022新版docker笔记-初级篇_第70张图片
第三步 必须修改如下图的两部分
在这里插入图片描述
尚硅谷-2022新版docker笔记-初级篇_第71张图片
修改配置文件后启动redis

docker run -p 6379:6379 --name myredis4 --privileged=true 
-v /bf/redis/redis.conf:/etc/redis/redis.conf 
-v /bf/redis/data:/data 
-d redis:6.2.6 redis-server /etc/redis/redis.conf

在这里插入图片描述

8.3.2 redis启动报错问题

如果启动后docker ps没有对应容器,用docker logs容器id查询日志报错信息。

我的报错原因是 之前下载的6.0.8版本,但是我的redis.conf是从6.2.6的redis中复制过来的,跨版本

的时候会有bug,将docker pull redis:6.2.6版本,或者从对应版本中取得配置文件。
在这里插入图片描述

8.3.3 测试命令

尚硅谷-2022新版docker笔记-初级篇_第72张图片

8.3.4 证明读到宿主机配置

修改前测试命令
在这里插入图片描述
退出后修改宿主机配置文件的databases = 10
在这里插入图片描述
重新启动redis后测试命令,发现配置文件修改成功
尚硅谷-2022新版docker笔记-初级篇_第73张图片

8.4 nginx

第一步拉取镜像
尚硅谷-2022新版docker笔记-初级篇_第74张图片
第二步启动nginx

docker run --name docker_nginx -p 80:80 -d nginx

在这里插入图片描述
第三步 windows访问虚拟机ip来访问docker里面的nginx
尚硅谷-2022新版docker笔记-初级篇_第75张图片

你可能感兴趣的