docker(二)---容器外部掛載

docker是什麼

上一篇文章講述了docker拉取鏡像、建立啓動容器的基本操做,那麼有一個問題,若是須要操做mysql、nginx的配置怎麼辦,有兩種辦法。html

  • 使用docker exec命令進入容器內部,而後作本身想要的操做,這是最簡單直白的作法。
  • 還有一種方法是使用外部掛載,這種方法本質就是作一個文件或文件夾映射,把宿主機和容器內部的文件或文件夾作一次映射,這樣一來咱們就能夠在容器外部作的操做就能夠直接映射在容器內部,以此來實現咱們想要的操做。

docker掛載命令

  • 在啓動容器時使用-v命令,這裏我舉個例子應該就清楚了。mysql

    $ docker run -d -p 6379:6379 \ 
    	--name redis \ 
    	-v $PWD/docker/redis/redis.conf:/etc/redis/redis.conf \
    	-v $PWD/docker/redis/data:/data \
        redis:latest redis-server /etc/redis/redis.conf \
        --requirepass "123456" --appendonly yes
    複製代碼
  • 參數講解:nginx

    -d:已守護方式啓動容器redis

    --name:命名容器sql

    -p 6379:6379 : 將容器的6379端口映射到主機的6379端口docker

    -v $PWD/docker/redis/redis.conf:/etc/redis/redis.conf: 將主機中當前目錄下的redis.conf映射成redis的啓動配置文件 -v $PWD/docker/redis/data:/data: 將主機中當前目錄下 /docker/reids/data掛載到容器的/datashell

    redis:latest:指定鏡像bash

    redis-server /etc/redis/redis.conf:指定配置文件啓動redis-server進程app

    --requirepass "123456" :指定連接redis-server的密碼 --appendonly yes:開啓數據持久化ui

  • 這樣咱們在對外部的redis.conf、data文件和文件夾進行操做時,會直接做用到容器內部對應的文件。

其它經常使用掛載

  • mysql

    docker run -d --privileged=true \ #設置進入容器內部時權限是root
    --name mysql5.7 -p 3306:3306 \
    -v /my/mysql/datadir:/var/lib/mysql \
    -v /my/mysql/conf.d:/etc/mysql/conf.d \
    -v /my/mysql/my.cnf:/etc/mysql/my.cnf \
    -e MYSQL_ROOT_PASSWORD=yourpassword \ #指定roo用戶的密碼 
    mysql:5.7
    複製代碼
  • nginx

    docker run --name mynginx -d -p 80:80 \
    -v /nginx/html:/usr/share/nginx/html \
    -v /nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
    -v /nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf \
    -v /nginx/logs:/var/log/nginx \
    nginx
    複製代碼
相關文章
相關標籤/搜索