Panther 从一位小白走来,虽然现在也还是小白,但是我取之于民,不定时将自己所学到的都分享给大家,这篇为大家分享2019/9/18上午整理的,由于最近一段时间忙着学习angularjs+kubernetes没有怎么发博客,这篇文章主要是讲解如何在centos下运行docker及docker的一些常用指令,下一篇文章会讲解如何搭建kubernetes集群
在上一篇博客中有讲到如何入搭建一个docker的容器,这里着重以视觉上的感官来分享
one
docker的架构和底层技术,docker platform平台
#启动
vagrant up
#通过vagrant连接,在上一章节的网盘中有压缩包
vagrant ssh
sudo docker version
sudo systemctl start docker
ps -ef | grep docker
two
docker image镜像
sudo docker image ls
2. image通过两种方式获取
a.docker提供了一种文件格式叫做dockerfile,通过这种格式我们可以定义image,通过这种格式的image我们又可以创建build
b.从registry拉取,拉取ubuntu:14.04 — (这里我们选择第二种)
3. 再次查看本地image
sudo docker image ls
4. docker hub是docker给我们提供的公开的免费的拉取image的工具
https://hub.docker.com
5. 可以下载官方的也可以下载私人的 私人的前面有自己的名称
docker pull ubuntu
three
制作base image;通过dockerfile 去 bulid 一个image,image可以变成一个container去执行,通过c语言写了一个小程序
sudo groupadd docker
#将当前用户添加到group里面
sudo gpasswd -a vagrant docker
#重启docker进程
sudo service docker restart
#重新登陆shell
exit
vagrant ssh
docker version
现在再运行docker的任何命令就不需要sudo啦
3. 查看本地已经有的image镜像
sudo docker image ls
docker run hello-world
6. 通过c语言编写一个hello-world,编译成二进制的可执行文件
#创建一个目录
mkdir hello-world
#进入到该目录
ch hello-world
#在这个目录中创建一个c语言的hello-world程序
#查看是否安装vim显示只有一个
rpm -qa|grep vim
sudo yum -y install vim *
vim hello.c
#保存退出,esc
:wq
#编译成二进制文件
#编译成二进制的文件需要gcc,查看工具
history | grep yum
#添加gcc+glibc-static
sudo yum install gcc
sudo yum install glibc-static
gcc -static hello.c -o hello
ls
./hello
11. 有了这个可执行文件之后,我们通过dockerfile将这个可执行文件打成image,在当前文件创建一个Dockerfile文件
vim Dockerfile
12. 现在就可以通过docker image ls,查看到刚刚创建的image
docker image ls
ls -lh
# docker history 加上image的id
docker history fa06a0fbb35d
docker run xnr/hello-world
four
container容器
docker container ls
docker container ls -a
docker image ls
4. 下载centos的image,直接下载latest发行版
sudo docker pull centos
5. 运行发行版的centos,同样的运行完就结束了,不会常驻内存
docker run centos
docker run -it centos
docker container ls
touch test.txt
9. 可以使用yum这个命令,开始是没有vim的 只有vi,可以安装vim
10. 这就是进入到container里面进行的一系列操作,接着退出
exit
#通过docker 和 docker container都可以查看出他们对应的指令
docker
docker container
docker image
#先查看正在运行或者已经结束运行的容器
docker container ls -a
#简写查看命令
docker ps -a
#删除已经结束的container
docker container rm 容器的id(可以不用写全,区分出不同即可)
#简写rm
docker rm 容器的id
#批量删除container
#查询所有的container的id
docker container ls -aq
#删除
docker rm $(docker container ls -aq)
#再次查询,删除成功
12. 当有在运行的容器和已经退出的容器,这个时候删除已经退出的容器,加个判断条件
docker rm $(docker container ls -f "status=exited" -q)
#同理删除image
#查看image
docker images
#删除image
docker image rm 镜像id
#简写
docker rmi 镜像id
five
构建自己的docker镜像
docker container commit
#简写
docker commit
docker image build
#简写
docker build
docker image ls
docker run -it centos
yum install -y vim
exit
docker container ls -a
docker commit 容器的names的值 自定义的名称
docker commit dreamy_franklin xnr/centos-vim
docker history 镜像的id
#查看
docker image ls
#删除
docker image rm
mkdir docker-centos-vim
cd docker-centos-vim
docker build -t xnr/centos-vim-new .
#通过dockerfile来build一个与别人一样的image镜像
#查看dockerfile文件内容
more Dockerfile
six
镜像发布
docker image push
简写
docker push
#先列出所有镜像
docekr images
#将要要发布的镜像改到自己的账户名下,账户名pantherzy
docker tag xnr/hello-world pantherzy/xnr
#再次发布镜像
docker push pantherzy/xnr
7. 发布成功
8. (推荐)分享一个docker image里面可能存在一些病毒或者不安全的因素,不如直接分享产生docker image的Dockerfile