docker基础命令入门

原创
2018/03/21 09:31
阅读数 106

docker基础命令

docker 版本

docker version

docker 信息

docker info

拉取镜像

docker pull ubuntu

删除镜像

docker rmi ubuntu

查看全部镜像

docker images

查看全部容器

docker ps -a

运行容器

docker run -p 80:80 --name ubuntu14.04 -i -t -v /home/dock:/Users/tongjh/ubuntu ubuntu /bin/bash
  • -v 将宿主机上的目录挂载到镜像里
  • -p 将容器的80端口映射到主机的80端口
  • -i 以交互模式运行容器,通常与-t同时使用
  • -t 为容器重新分配一个伪输入终端,通常与-i同时使用
  • --name 为容器指定一个名称
  • -d 后台运行容器,并返回容器id
  • -m 设置容器使用内存最大值
  • -h 指定容器的hostname

停止运行容器

docker stop ubuntu14.04

启动停止的容器

docker start ubuntu14.04

删除容器

docker rm ubuntu14.04

自动重启容器

docker run --restart=always --name ubuntu14.04 -d ubuntu /bin/sh -c "while  true;do echo hello world;sleep 1;done"
  • --restart=always 无论容器退出代码是什么,docker都会重启该容器
  • --restart=on-failure:5 如果退出代码非0是,才自动重启。5为自动重启次数,最多重启5次

数据卷 -v

docker run -it -v /dbdata:/dbdata --name dbdata ubuntu

数据卷容器 --volumes-from

docker run -it --volumes-from dbdata --name db1 ubuntu

进入容器

docker exec -it mymysql bash

容器日志

docker logs ubuntu

查看容器进程

docker top ubuntu

导出容器

docker export 容器id > ubuntu.tar

导入容器

cat ubuntu.tar | docker import - test/ubuntu:v1.0

登陆docker仓库

docker login

从已有的容器创建一个镜像

docker commit -m="ubuntu rap 配置" --author="tongjh" fafb59b5fa0d  tongjh/ubunturap

向docker仓库推送一个创建好的镜像

docker push tongjh/ubunturap

###下面一个简单练手的列子,搭建一个nginx+php+mysql的容器###

拉取php镜像

docker pull php:5.6-fpm

运行php容器

docker run --name dream.php -d \
-v ~/docker/nginx/www:/var/www/html:ro \
php:5.6-fpm

说明:

  • dream.php 是容器的名字
  • ~/docker/nginx/www 是本地 php 文件的存储目录,/var/www/html 是容器内 php 文件的存储目录,ro 表示只读。

拉取一个nginx镜像

docker pull nginx

编辑nginx配置文件

server {
    listen       80;
    server_name  localhost;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    location ~ \.php$ {
        fastcgi_pass   php:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /var/www/html/$fastcgi_script_name;
        include        fastcgi_params;
    }
}

说明:

  • php:9000 表示 php-fpm 服务的访问路径,下文还会提及
  • /var/www/html 是dream.php 容器中php脚本的存储路径,经docker映射,变成本地路径 ~/docker/nginx/www

运行一个nginx容器

docker run --name dream.nginx -p 80:80 -d \
-v ~/docker/nginx/www:/usr/share/nginx/html:ro \
-v ~/docker/nginx/conf:/etc/nginx/conf.d:ro \
--link dream.php:php \
nginx

说明:

  • -p 80:80 用于添加端口映射,把 dream.nginx 容器中的 80 端口暴露出来。
  • ~/docker/nginx/www 是本地 html 文件的存储目录,/usr/share/nginx/html 是容器内 html 文件的存储目录。
  • ~/docker/nginx/conf 是本地 nginx 配置文件的存储目录,/etc/nginx/conf.d 是容器内 nginx 配置文件的存储目录。
  • --link dream.php:php 把 dream.php 的网络并入 dream.nginx,并通过修改 dream.nginx 的 /etc/hosts,把域名 php 映射成 127.0.0.1,让 nginx 通过 php:9000 访问 php-fpm。

拉取一个mysql镜像

docker pull mysql

运行一个mysql容器

docker run -p 3306:3306 --name mymysql \
-v $PWD/conf:/etc/mysql \
-v $PWD/logs:/logs \
-v $PWD/data:/mysql_data \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.6

另一个例子

使用docker仓库中的镜像创建容器并运行

创建并启动一个mysql容器

  • docker run --restart=always -v /Users/junhuatong/docker/mysql-test:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root --name mysql-test -d mysql

创建并启动web服务器容器(nginx+php7)

  • docker run -d -p 8801:80 --restart=always -v /Users/junhuatong/docker/html/:/var/www/html/ --link mysql-test:db saaremaa/webserver

测试,打开网站根目录(/Users/junhuatong/docker/html/),编辑index.php

<?php

$con = mysqli_connect("mysql-test","root","root","demo",3306);
if (!$con){
    die('Could not connect: ' . mysqli_connect_error());
}

$sql = "set names utf8";

mysqli_query($con,$sql);

$sql = "select * from person";

$result = mysqli_query($con,$sql);
$list = array();
while ($row = mysqli_fetch_row($result)) {
    $list[]=$row;
}

var_dump($list);

浏览器打开http://127.0.0.1:8801/index.php

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部