命令格式
docker <选项><命令><参数>
基本命令
帮助命令:
$ docker --help
管理命令:
config 管理Docker配置
container 管理容器
image 管理镜像
network 管理网络
node 管理Swarm节点
plugin 管理插件
secret 管理Docker安全
service 管理服务
swarm 管理Swarm集群
system 管理Docker系统
trust Manage trust on Docker images
volume 管理卷
操作命令:
attach 将标准输入和标准输出连接到正在运行的容器
build 使用dockerfile文件创建镜像
commit 从容器的修改项中创建新的镜像
cp 将容器的目录或文件复制到本地文件系统中
create 创建一个新的镜像
diff 检查容器文件系统的修改
events 实时输出docker服务器中发生的事件
exec 从外部运行容器内部的命令
export 将容器的文件系统到处为tat文件包
history 显示镜像的历史
images 输出镜像列表
import 从压缩为tar文件的文件系统中创建镜像
info 显示当前系统信息、docker容器与镜像个数、设置信息等
inspect 使用JSON格式显示容器与镜像的详细信息
kill 向容器发送kill信号关闭容器
load 从tar文件或标准输入中加载镜像
login 登录docker注册服务器
logout 退出docker注册服务器
logs 输出容器日志信息
pause 暂停容器中正在运行的所有进程
port 查看容器的端口是否处于开放状态
ps 输出容器列表
pull 从注册服务器中拉取一个镜像或仓库
push 将镜像推送到docker注册服务器
rename 重命名一个容器
restart 重启一个或多个容器
rm 删除一个或多个容器,若没有指定标签则删除lastest标签。
rmi 删除一个或多个镜像,若没有指定标签则删除lastest标签。
run 在一个新容器中中运行命令,用于指定镜像创建容器。
save 将一个或多个镜像保存为tar包
search 从Docker Hub中搜索镜像
start 启动一个或多个已经停止的容器
stats Display a live stream of container(s) resource usage statistics
stop 停止一个或多个正在运行的容器
tag 设置镜像标签
top 显示容器中正在运行的进程信息
unpause 重启pause命令暂停的容器
update 更新一个或多个容器的配置
version 显示docker版本信息
wait 等待容器终止然后输出退出码
Run 'docker COMMAND --help' for more information on a command.
容器使用
1.启动一个容器并打开容器终端
$ docker run -it ubuntu /bin/bash
参数说明:
- -i: 交互式操作。
- -t: 终端。
- ubuntu: ubuntu 镜像。
- /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。
退出终端
# exit
2.容器启停
查看所有的容器
$ docker ps -a
启动已停止的容器
$docker start 925d141f0e8b
重启容器
$docker restart 925d141f0e8b
停止容器
$docker stop 925d141f0e8b
删除容器
$docker rm -f c874efe8ce6e
清理所有处于终止状态的容器
$docker container prune
3.后台运行一个容器
-d指定容器的运行模式
$ docker run -itd --name ubuntu-test ubuntu /bin/bash
注:加了-d参数默认不会进入容器,想要进入容器需要使用指令docker exec。
4.进入容器
在使用 -d
- docker attach :不推荐,如果从这个容器退出,会导致容器的停止。
- docker exec:推荐,因为此退出容器终端,不会导致容器的停止。
exec命令
$docker exec -it fb9a6c5fd07d /bin/bash
exec帮助命令
$docker exec --help
5.运行一个web应用
# docker pull training/webapp # 载入镜像
# docker run -d -P training/webapp python app.py
参数说明:
- -d:让容器在后台运行。
- -P:将容器内部使用的网络端口映射到我们使用的主机上。
Docker 开放了 5000 端口(默认 Python Flask 端口)映射到主机端口 32769 上.
通过 -p 参数可以设置不一样的端口
查看容器映射端口
$docker port fe856290ba30
查看 WEB 应用程序日志
$docker logs -f fe856290ba30
查看WEB应用程序容器的进程
$docker top magical_kapitsa --可以根据容器id或者name来查询
docker inspect
$ docker inspect magical_kapitsa
镜像使用
1.镜像列表
$docker images
2.查找镜像
$docker search ubuntu
3.获取一个新的镜像
$docker pull ubuntu:14.04
- NAME: 镜像仓库源的名称
- DESCRIPTION: 镜像的描述
- OFFICIAL: 是否 docker 官方发布
- stars: 类似 Github 里面的 star,获赞数
- AUTOMATED: 自动构建
4.删除镜像
$docker rmi raphal/test
或
$docker rmi 593f61f929f6 --image_id
5.设置镜像标签
$docker tag fce289e99eb9 raphal/hello-world:v1
--docker tag ,镜像ID [fce289e99eb9],用户名称、镜像源名(repository name)和新的标签名(tag)
使用 docker images 命令可以看到,ID为fce289e99eb9的镜像多一个标签。
6.创建镜像
更新镜像
先使用镜像创建一个容器
$docker run -t -i ubuntu:15.10 /bin/bash
在运行的容器内使用apt-get update命令进行更新
#apt-get update
退出容器
#exit
此时 ID 为 ab40073e7b0b的容器,是按我们的需求更改的容器。我们可以通过命令 docker commit 来提交容器副本。
$docker commit -m="has update" -a="raphal" ab40073e7b0b raphal/ubuntu:v2
- -m:
- -a:
- e218edb10161:容器 ID
- runoob/ubuntu:v2:
跑一下试试:
$docker run -t -i raphal/ubuntu:v2 /bin/bash
通过Dockerfile构建镜像(项目中常用方法)
创建Dockerfile文件并写入(参考格式)
FROM centos:6.7
MAINTAINER Fisher "test@163.com"
RUN /bin/echo 'root:123456' |chpasswd
RUN useradd raphal
RUN /bin/echo 'raphal:123456' |chpasswd
RUN /bin/echo -e "LANG="en_US.UTF-8"" >/etc/default/local
EXPOSE 22
EXPOSE 80
CMD /usr/sbin/sshd -D
具体Dockerfile指令可查看官方说明(这里就不赘述)。
通过 docker build 命令构建一个镜像。
$docker build -t raphal/centos:6.7 .
参数说明:
- -t
- .
查看并跑一下
$docker images
$docker run -t -i raphal/centos:6.7 /bin/bash
仓库管理
目前 Docker 官方维护了一个公共仓库 Docker Hub。
大部分需求都可以通过在 Docker Hub 中直接下载镜像来实现。
Docker的仓库管理和maven类似,熟悉maven的同学,学习起来比较简单。
先在https://hub.docker.com 免费注册一个 Docker 账号。
登录docker hub(输入用户名和密码)
$ docker login
退出docker hub
$ docker logout
查找镜像
$ docker search ubuntu
拉取镜像
$ docker pull ubuntu
推送镜像
$ docker tag ubuntu:18.04 username/ubuntu:18.04
$ docker image ls
$ docker push username/ubuntu:18.04
$ docker search username/ubuntu
注:username需替换成自己的个人账号
从仓库拉取并部署镜像应用实例
1.登录docker
docker login -u"username" -p"password" harbor.xxx.com
或者
docker login --username=srm_devops https://harbor.xxx.com
##提示输入密码###
2.拉取镜像
docker pull harbor.xxx.com/srm/srm-pcm-be:66555
3.后台启动容器并进行端口映射
docker run -d -p 8080:8080 -e APOLLO_APP_ID=srm_pcm_be -e CLUSTER=INTERNAL -e ENV=UAT -e APP_PORT=8080 -e confserver_seckey_srm_pcm_be=14dc45ce0ac14747979d70c432e9d06f 1d840238b10c
不带变量例子:
docker run -d --name pcm -p 8000:8000 harbor.xxx.com/srm/srm_pcm_be:latest
4.进入容器
docker exec -it 9df7113d6a51 /bin/bash
5.退出容器
exit