基本命令
- 启动容器
$ docker run IMAGE [COMMAND] [ARG...]
run
在新容器中执行命令
docker@default:~$ docker run ubuntu echo 'hello world'
hello world
- 启动交互式容器
$ docker run -i -t IMAGE /bin/bash
-i --interactive = true | flase
默认flase
-t --tty = true |false
默认false
docker@default:~$ docker run ubuntu echo 'hello world'
hello world
docker@default:~$ docker run -i -t ubuntu /bin/bash
root@ac47353cb6f7:/# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 13:50 pts/0 00:00:00 /bin/bash
root 9 1 0 13:51 pts/0 00:00:00 ps -ef
root@ac47353cb6f7:/# exit
exit
- 查看容器
$ docker ps [-a] [-l]
不带-a -l
参数:查看运行中的容器
-a
查看所有容器
-l
查看最新容器
$ docker inspect [CONTAINER ID]/[NAMES]
docker@default:~$ docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ac47353cb6f7 ubuntu "/bin/bash" 2 minutes ago Exited (0) 2 minutes ago mystifying_swirles
docker@default:~$ docker instect ac47353cb6f7
- 自定义容器名
NAMES
docker run --name=自定义名 -i -t /bin/bash
- 重新启动停止的容器
docker start [-i] CONTAINER ID / NAMES
- 删除容器
docker rm CONTAINER ID / NAMES
守护式容器
- 已守护形式启动容器
docker run -i -t IMAGE /bin/bash
启动后通过组合键ctrl P + ctrl Q
退出容器,此时容器还是运行,通过docker attach CONTAINETID / NAMES
从新进入容器。 - 启动守护式容器
docker run -d IMAGE
[COMMAND] [ARG...] - 查看容器日志
$docker logs [-f] [-t] [--tail] CONTAINER ID / NAMES
-f
--follows=true | false 默认false ,持续输出日志
-t
--timestamps=true | false 默认false ,时间格式输出日志
--tail
[number] 输出日志条数 - 查看容器进程
docker top CONTAINER ID / NAMES
- 在运行中的容器内启动新进程
docker exec [-d] [-i] [-t] CONTAINER ID / NAMES [COMMAND][AGR...]
- 停止守护式容器
docker stop CONTAINER ID / NAMES
发出通知容器停止信号,等待容器停止并返回容器名
docker kill CONTAINER ID / NAMES
直接停止容器返回容器名
在容器中部署静态网站
- 设置容器的端口映射
run [-P] [-p]
-P --publish-all = true | false 默认false
$docker run -P -i -t ubuntu /bin/bash
-p --publish=[]
containerPort
容器端口
$docker run -p 80 -i -t ubuntu /bin/bash
hostPort:containerPort
主机端口:容器端口
$docker run -p 8080:80 -i -t ubuntu /bin/bash
ip:containerPort
IP:容器端口
$docker run -p 0.0.0.0:80 -i -t ubuntu /bin/bash
ip:hostPort:containerPort
IP:主机端口:容器端口
$docker run -p 0.0.0.0:8080:80 -i -t ubuntu /bin/bash
- Nginx部署流程
- 创建映射80端口的交互式容器
$ docker run -p 80 --name=web -i -t ubuntu /bin/bash
- 安装nginx
- 创建映射80端口的交互式容器
$ apt-get update
$ apt-get install -y nginx
- 安装vim
$ apt-get install -y vim
- 创建静态页面
$ vim /var/www/html/index.html
<html>
<body>
<h1>Hello World</h1>
<body>
</html>
- 修改Nginx配置文件
vim /etc/nginx/sites-enabled/default
把root /var/www/html
- 运行Nginx
/etc/init.d/nginx start
通过ctrl P + ctrl Q
退出容器
docker@default:~$ docker port web
80/tcp -> 0.0.0.0:32768
可以看出容器的80端口映射到主机的32768端口
- 验证网站访问
docker@default:~$ curl http://127.0.0.1:32768
<html>
<body>
<h1>Hello World</h1>
<body>
</html>
查看和删除镜像
- 查看镜像
docker image [-a] [-q] [--no-trunc] [REPOSITORY]
- 查看镜像详细信息
docker inspect [OPTIONS] CONTAINER|IMAGE [CONTAINER|IMAGE...]
- 删除镜像
docker rmi [-f] [--no-qrune] IMAGE[IMAGE...]
获取和推送镜像
- 查找镜像
docker search CONTAINER
- 拉取镜像
docker pull CONTAINER[:TAG]
- 推送镜像
docker push NAME[:TAG]
构建镜像
- 使用
commit
构建镜像
$ docker commit [-a] [-m] [-p] CONTAINER [REPOSITORY[:TAG]]
-a --author='' # 作者
-m --message='' # 描述信息
-p --pause=true # 暂停容器提交
- 使用DockerFile文件构建镜像
1、创建DockerFile
文件
2、使用docker build [--force-rm] [--no-cache] [--pull] [-q] [--rm] [-t] PATH | URL
命令
docker@default:~$ mkdir -p dockerfile/df_test1
docker@default:~$ cd dockerfile/df_test1
docker@default:~/dockerfile/df_test1$ vi Dockerfile
# First dockerfile for test
FROM ubuntu:14.04
MAINTAINER weixf "709504134@qq.com"
RUN apt-get update
RUN apt-get install -y nginx
EXPOSE 80
docker@default:~/dockerfile/df_test1$ docker build -t='test/df_test1' .
命令 | 用途 |
---|---|
FORM | base image |
MAINTAINER | 维护着 |
RUN | 执行命令 |
ADD | 添加文件 |
COPY | 复制文件 |
CMD | 镜像入口 |
EXPOSE | 暴露端口 |
WORKDIR | 指定路径 |
ENV | 设定环境变量 |
ENTRYPOINT | 容器入口 |
USER | 指定用户 |
VOLUME | mount point |
共享文件夹
docker run -v 宿主机文件路径:虚拟机文件路径 nginx
网友评论