Docker 常用操作

拉取镜像

1
docker pull nginx

查看所有镜像

1
docker images

查看所有容器

1
docker ps -a

启动 nginx 服务

1
docker run --name nginx -p 80:80 -d nginx
  • --name 容器名 容器别名
  • -p 宿主机ip:容器ip 端口号
  • -d 镜像名 拉取的镜像名

进入容器内部(前提:nginx 服务已启动

1
2
3
4
5
# 进入容器
docker exec -it nginx bash

# 退出容器
exit

docker 拷贝文件(前提同上)

  • 从宿主机拷贝文件到容器里面

    1
    2
    # docker cp 宿主机文件 容器名:文件
    docker cp /opt/nginx/7069655_zxiaosi.net.pem nginx:/etc/nginx/
  • 从容器拷贝文件到宿主机里面

    1
    2
    # docker cp 容器名:文件 宿主机文件
    docker cp nginx:/usr/local/tomcat/webapps/test/js/test.js /opt

查看容器信息(前提同上)

1
docker inspect 容器名

停止容器服务

1
docker stop 容器名 | 容器id

重启容器服务

1
docker restart 容器名 | 容器id

删除容器

1
2
docker stop 容器名 | 容器id
docker rm 容器名 | 容器id

删除镜像

1
docker rmi 镜像

Docker 安装服务

docker 部署 nginx

  • 拉取 nginx

    1
    docker pull nginx
  • 启动 nginx

    1
    docker run --name nginx -p 80:80 -d nginx
  • 访问服务器 ip,显示 nginx,代表启动成功!(务必打开防火墙的80端口)

  • $PWD 表示当前文件夹

    1
    2
    # 输出当前文件夹名
    echo $PWD
  • 拷贝配置文件到自定义文件夹(如果已经有文件可以不用拷贝

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    # 拷贝conf.d
    docker cp nginx:/etc/nginx/conf.d /opt/docker/nginx

    # 拷贝nginx.conf
    docker cp nginx:/etc/nginx/nginx.conf /opt/docker/nginx/

    # 拷贝html
    docker cp nginx:/usr/share/nginx/html /opt/docker/nginx

    # 拷贝日志
    docker cp nginx:/var/log/nginx /opt/docker/nginx/logs

    # ssl证书位置
    /opt/docker/nginx/ssl/
  • 停止并删除 nginx 服务

    1
    2
    docker stop nginx
    docker rm nginx
  • 通过挂载的方式启动 nginx

    1
    2
    3
    4
    5
    6
    7
    8
    9
    docker run --name nginx \
    -p 80:80 \
    -p 443:443 \
    -v /opt/docker/nginx/logs:/var/log/nginx \
    -v /opt/docker/nginx/conf.d:/etc/nginx/conf.d \
    -v /opt/docker/nginx/nginx.conf:/etc/nginx/nginx.conf \
    -v /opt/docker/nginx/html:/usr/share/nginx/html \
    -v /opt/docker/nginx/ssl:/etc/nginx/ssl/ \
    -d nginx
    • 用了$PWD,请在宿主机所在的自定义文件夹内
    • -v 宿主机文件:容器文件

docker 部署 mysql

安装 docker 并使用 docker 安装 mysql

docker 部署 redis

Docker 安装 Redis 容器 (完整版)

docker 多个容器协同(以 redis 为例)

  • 进入 redis 容器里面

    1
    docker exec -it redis bash
  • 查看当前容器 host

    1
    cat /etc/hosts

  • 当主服务需要连接 redis 的时候,执行下面命令

    1
    2
    # --link name:alias
    docker run --name backend -d -p 80:80 --link redis:redis nginx
  • 查看 backendhost

  • 修改主服务连接 dockerredis 的连接(@host:port -> 镜像名)

    1
    2
    3
    4
    5
    // redis//user:password@host:port/db
    redis://user:password@redis:6379/db

    // mysql://root:123456@localhost:3306/elective_system?charset=utf8
    mysql://root:123456@mysql:3306/elective_system?charset=utf8
  • 重新开启服务即可完成

    1
    docker run --name nginx -d -p 80:80 --link redis:redis nginx

配置 ssl (域名需备案

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
server {
listen 443 ssl;
server_name zxiaosi.com;
ssl_certificate /opt/docker/nginx/ssl/6782585_zxiaosi.com.pem;
ssl_certificate_key /opt/docker/nginx/ssl/6782585_zxiaosi.com.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; #使用此加密套件。
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #使用该协议进行配置。
ssl_prefer_server_ciphers on;

location / {
try_files $uri $uri/ /index.html;
root /opt/docker/nginx/html;
}
}