Docker常用命令收集
首先,让我们通过下面的命令来检查Docker的安装是否正确:
docker info
如果没有找到这条命令,则表示Docker安装错误。如果安装正确,则会输出类似下面的内容:
到这一步Docker里还没有镜像或是容器。所以,让我们通过使用命令预先构建的镜像来创建来一个:
sudo docker pull busybox
BusyBox是一个最小的Linux系统,它提供了该系统的主要功能,不包含一些与GNU相关的功能和选项。
下一步我们将运行一个“Hello World”的例子,我们暂且叫它“Hello Docker”吧。
docker run busybox /bin/echo Hello Docker
现在,让我们以后台进程的方式运行hello docker:
sample_job=$(docker run -d busybox /bin/sh -c "while true; do echo Docker; sleep 1; done")
sample_job命令会隔一秒打印一次Docker,使用docker logs可以查看输出的结果。如果没有给这个job起名字,那这个job就会被分配一个id,以后使用命令例如docker logs查看日志就会变得比较麻烦。
运行docker logs命令来查看job的当前状态:
docker logs $sample_job
所有Docker命令可以用以下命令查看:
docker help
名为sample_job的容器,可以使用以下命令来停止:
docker stop $sample_job
使用以下命令可以重新启动该容器:
docker restart $sample_job
如果要完全移除容器,需要先将该容器停止,然后才能移除。像这样:
docker stop $sample_job
docker rm $sample_job
将容器的状态保存为镜像,使用以下命令:
docker commit $sample_job job1
注意,镜像名称只能取字符[a-z]和数字[0-9]。
现在,你就可以使用以下命令查看所有镜像的列表:
docker images
镜像是存储在Docker registry。在registry中的镜像可以使用以下命令查找到:
docker search (image-name)
查看镜像的历史版本可以执行以下命令:
docker history (image_name)
最后,使用以下命令将镜像推送到registry:
docker push (image_name)
非常重要的一点是,你必须要知道存储库不是根存储库,它应该使用此格式(user)/(repo_name)。
PS:
1 2 3 4 5 6 |
docker run -i -t ubuntu /bin/bash 进入bash -t 分配伪终端 -i 让容器标准输出保持打开 docker search mysql 搜索镜像 docker rmi ubuntu/id 根据标签或id删除镜像 docker rm e81 删除容器 docker attach 容器id 或 docker attach 容器name 重新进入未关闭的容器 |
镜像
创建镜像三种方法
基于镜像容器创建
-a 作者信息
-m 提交消息
-p 提交时暂停容器
1 |
docker commit -m "Add new File" -a "Docker NewBee" a984984 test 提交一个镜像 返回一个新容器id test为容器名 |
基于本地模板导入
1 |
sudo cat ubuntu_16.04.tar.gz | docker import - ubuntu:16.04 |
基于DockerFile创建
1 2 |
docker save -o ubuntu_16.04.tar ubuntu:16.04 存入镜像 docker load --input ubuntu_16.04.tar 载入镜像 |
上传镜像
1 |
docker push |
容器
新建容器
1 2 3 4 |
docker create -it ubuntu:latest 创建容器 docker ps -a 查看容器 ctrl + d 退出并关闭容器 ctrl + p +q 退出但不关闭容器 |
新建并启动容器
1 2 |
docker run ubuntu /bin/echo 'hello world' 执行完后容器自动终止 docker run 等价于 docker run 再 docker start 命令 |
守护运行态
1 2 3 4 |
-d 参数实现守护进程 docker run -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1 ;done" docker ps 查看 docker logs ce5 查看容器输出信息 |
终止容器
1 2 3 4 |
docker stop ce5 终止容器 docker ps -a -q 查看处于终止状态的容器ID信息 docker start ce5 启动终止的容器 docker restart ce5 重新启动正在运行的容器 |
进入容器
1 2 3 4 5 |
docker run -idt ubuntu docker ps docker attach names 多个容器同时使用时,当一个窗口因命令阻塞时,其他窗口也无法操作 docker exec -ti id /bin/bash 使用-it时,类似console界面,不会像attach因为退出,导致整个容器退出 这种方式可以替代ssh nenter nsinit 方式,在容器内进行操作 |
删除容器
1 2 3 4 |
docker rm 删除处于终止状态的容器 -f 强制终止并删除 -l 删除容器的链接,但保留容器 -v 删除容器挂在的数据卷 |
导入和导出容器
1 2 3 4 5 |
docker export id >demo.tar cat demo.tar | sudo docker import - ubuntu:16.04 docker images docker load 于 docker import 都可以文件到镜像库,区别:load 保留完整记录,体积大,import快照 导入时可以指定元数据信息 |
仓库
1 2 3 4 5 6 |
docker run -p 5000:5000 registry docker images docker tag ubuntu:16.04 localhost:5000/ubuntu:16.04 docker push localhost:5000/ubuntu:16.04 curl curl http://60.205.215.243:5000/v2/_catalog 查看上传的镜像 |