1. 环境搭建
2. 验证环境
docker version
docker run hello-world
3. Docker hello world
3.1 docker run:
(1)使用 docker run 命令来在容器内运行一个应用程序
docker run ubuntu:15.10 /bin/echo "Hello world"
(2)运行交互式的容器
docker run -i -t ubuntu:15.10 /bin/bash
(3)后台模式启动容器
docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"
4. 命令
4.1 容器命令
1)使用docker ps命令,查看运行中的容器
docker ps
2)使用docker logs命令,查看容器内的标准输出
docker logs 2b1b7a428627
3)使用docker stop 命令来停止容器
docker stop 25c534bc75f6
docker stop sharp_franklin
4)docker清理命令
杀死所有正在运行的容器
docker kill $(docker ps -a -q)
删除所有已经停止的容器
docker rm $(docker ps -a -q)
删除所有未打 dangling 标签的镜像
docker rmi $(docker images -q -f dangling=true)
删除所有镜像
docker rmi $(docker images -q)
4.2 镜像命令
1)列出镜像列表
docker images
2)获取一个新的镜像
docker pull ubuntu:13.10
3)查找镜像
docker search httpd
4)拉取镜像
docker run -d -P httpd
5)创建镜像
当我们从docker镜像仓库中下载的镜像不能满足我们的需求时,我们可以通过以下两种方式对镜像进行更改。
- 从已经创建的容器中更新镜像,并且提交这个镜像
- 使用 Dockerfile 指令来创建一个新的镜像
6)更新镜像
使用镜像来创建一个容器、
docker run -t -i ubuntu:15.10 /bin/bash
通过命令 docker commit来提交容器副本
docker commit -m="has update" -a="yeahwell" e218edb10161 yeahwell/ubuntu:v2
查看新镜像
docker images
使用新镜像
docker run -t -i yeahwell/ubuntu:v2 /bin/bash
7)构建镜像
5. 容器使用
5.1 运行training/webapp
1)在docker容器中运行一个 Python Flask 应用来运行一个web应用
docker run -d -P training/webapp python app.py
指定 -p 标识来绑定指定端口
docker run -d -p 5000:5000 training/webapp python app.py
2)查看到容器的端口映射
docker port 7a38a1ad55c6
docker port determined_swanson
3)查看WEB应用程序日志
docker logs -f 7a38a1ad55c6
4)查看WEB应用程序容器的进程
docker top determined_swanson
5)检查WEB应用程序
docker inspect determined_swanson
6)停止WEB应用容器
docker stop determined_swanson
7)重启WEB应用容器
docker start determined_swanson
8)查询最后一次创建的容器
docker ps -l
9)移除WEB应用容器
docker rm determined_swanson
5.2 docker安装nginx
1)查找Docker Hub上的nginx镜像
docker search nginx
2)拉取官方的镜像
docker pull nginx
3)运行容器
docker run -p 80:80 --name mynginx -v $PWD/www:/www -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf -v $PWD/logs:/wwwlogs -d nginx
命令说明:
-
-p 80:80:将容器的80端口映射到主机的80端口
-
--name mynginx:将容器命名为mynginx
-
-v $PWD/www:/www:将主机中当前目录下的www挂载到容器的/www
-
-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf:将主机中当前目录下的nginx.conf挂载到容器的/etc/nginx/nginx.conf
-
-v $PWD/logs:/wwwlogs:将主机中当前目录下的logs挂载到容器的/wwwlogs
5.3 docker 安装redis
1)查找容器
docker search redis
2)下载容器
docker pull redis:3.2
3)运行容器
docker run -d --name redis -p 6379:6379 redis
5.4 docker安装RabbitMQ
参考:用Docker镜像来学习RabbitMQ和Python客户端使用例子
1)安装容器
docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 -p 25672:25672 rabbitmq:3-management
2)登录管理页面
localhost:15672 username:guest password:guest
5.5 docker安装zookeeper
1)安装容器
docker pull jplock/zookeeper:3.4.8
2)运行容器
docker run -d -p 2181:2181 jplock/zookeeper
5.6 docker安装myql
1)安装容器
docker pull mysql:5.6
2)运行容器
docker run -p 3306:3306 --name mysql5.6 -v D:/dockerfile/mysql/conf/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf -v D:/dockerfile/mysql/logs:/logs -v D:/dockerfile/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=od -d mysql:5.6
mysqld.cnf配置如下:
[mysqld] pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock datadir = /var/lib/mysql lower_case_table_names=1 #log-error = /var/log/mysql/error.log # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 default-storage-engine=INNODB character_set_server=utf8 init_connect='SET NAMES utf8'
5.7 docker安装ftp服务器
1)安装容器
docker pull bogem/ftp
2)运行容器
docker run -d -v D:/dockerfile/ftpdata:/home/vsftpd -p 20:20 -p 21:21 -p 47400-47470:47400-47470 -e FTP_USER=test -e FTP_PASS=test -e PASV_ADDRESS=0.0.0.0 --name ftp1 --restart=always bogem/ftp