首先,让我们通过下面的命令来检查Docker的安装是否正确:
1 | docker info |
如果没有找到这条命令,则表示Docker安装错误。如果安装正确,则会输出类似下面的内容:
到这一步Docker里还没有镜像或是容器。所以,让我们通过使用命令预先构建的镜像来创建来一个:
1 | sudo docker pull busybox |
BusyBox是一个最小的Linux系统,它提供了该系统的主要功能,不包含一些与GNU相关的功能和选项。
下一步我们将运行一个“Hello World”的例子,我们暂且叫它“Hello Docker”吧。
1 | docker run busybox /bin/echo Hello Docker |
现在,让我们以后台进程的方式运行hello docker:
1 | 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的当前状态:
1 | docker logs $sample_job |
所有Docker命令可以用以下命令查看:
1 | docker help |
名为sample_job的容器,可以使用以下命令来停止:
1 | docker stop $sample_job |
使用以下命令可以重新启动该容器:
1 | docker restart $sample_job |
如果要完全移除容器,需要先将该容器停止,然后才能移除。像这样:
1 | docker stop $sample_job |
将容器的状态保存为镜像,使用以下命令:
1 | docker commit $sample_job job1 |
注意,镜像名称只能取字符[a-z]和数字[0-9]。
现在,你就可以使用以下命令查看所有镜像的列表:
1 | docker images |
镜像是存储在Docker registry。在registry中的镜像可以使用以下命令查找到:
1 | docker search (image-name) |
查看镜像的历史版本可以执行以下命令:
1 | docker history (image_name) |
最后,使用以下命令将镜像推送到registry:
1 | 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 查看上传的镜像
本作品采用知识共享署名 4.0 中国大陆许可协议进行许可,欢迎转载,但转载请注明来自御前提笔小书童,并保持转载后文章内容的完整。本人保留所有版权相关权利。