上一篇文章講述了docker拉取鏡像、建立啓動容器的基本操做,那麼有一個問題,若是須要操做mysql、nginx的配置怎麼辦,有兩種辦法。html
docker exec
命令進入容器內部,而後作本身想要的操做,這是最簡單直白的作法。在啓動容器時使用-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
複製代碼