1. docker安装
-
安装环境
centos7.4
-
开始安装
下载docker官方yum源
curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker.repo
开始安装:
yum install -y docker-ce
2.docker镜像管理
-
docker镜像下载
下载命令
docker pull xxx
xxx表示镜像名称,如下载centos镜像就是ocker pull centos
如果下载速度很慢可以配置docker下载加速器
vi /etc/docker/daemon.json
加入以下内容:{
"registry-mirrors": ["https://dhq9bx4f.mirror.aliyuncs.com"]}
-
docker常用命令
1.查看本地的镜像:
docker images
2.搜索镜像,其中xxx是关键词:
docker search xxx
3.给镜像打标签:
docker tag centos test123:222333
4.镜像启动为容器,-i表示让容器的标准输入打开,-t表示分配一个伪终端,-d表示后台启动,要把-i -t -d 放到镜像名字前面:
docker run -itd centos
5.查看docker启动中的容器,加上-a选项后可以查看所有容器,包括未运行的:
docker ps
6.用来删除指定镜像,其中后面的参数可以是tag,如果是tag时,实际上是删除该tag。当后面的参数为镜像ID时,则会彻底删除整个镜像,所有标签也会一同删除:
docker rmi xxx
3.Docker通过容器创建镜像
-
进入容器
docker exec -it xxxxx bash
是进入容器的命令,其中xxxxx为容器id,这个id可以用docker ps查看,最后面的bash为进入容器后我们要执行的命令 -
在容器内安装net-tools
在容器内执行:
yum install -y net-tools
-
提交新镜像
docker commit -m "change somth" -a "somebody info" container_id new_image_name
参数说明:container_id通过docker ps -a获取,后面的new_image_name为新镜像名字示例:
docker commit -m "install net-tools" -a "wxy" 82d0ec485063 centos_net-tolls
这个命令有点像svn的提交,-m 加一些改动信息,-a 指定作者相关信息,82d0ec这一串为容器id,再后面为新镜像的名字
提交完成后,使用docker image查看:
4.Docker使用模板创建镜像
-
下载一个模板
wget http://download.openvz.org/template/precreated/centos-6-x86-minimal.tar.gz
-
导入该镜像
cat centos-6-x86-minimal.tar.gz |docker import - centos6
-
以现有的镜像导出一个文件
docker save -o centos_net-tolls.tar centos_net-tolls
-
把原有的进行删除,把导出的镜像导入进去
docker images
获取镜像iddocker rmi acaf23cc3076
重启导入镜像
docker load --input centos_net-tolls.tar
或者docker load < centos_net-tolls.tar
也可以
5.docker镜像管理
-
启动容器
创建一个容器,但是不启动:
docker create -it centos6 /bin/bash
启动容器:
docker start 30034995f99a
启动完成后可以docker ps查看
可以使用docker run来进行启动,它相当于先create后再start容器
docker run -it centos6 /bin/bash
docker -d
可以让容器在后台运行,如:docker run -itd centos6 /bin/bash
-
启动容器时给容器自定义名称
docker run -itd --name "centos_1" centos6 /bin/bash
-
容器退出后直接删除
可以让docker容器运行一个命令后退出并删除容器,如让一个容器运行sleep 30,等待30秒后容器会停止并删除。
docker run --rm -itd centos /bin/bash -c "sleep 30"
-
docker容器log查看
启动容器,并运行一个命令
docker run -itd 80d356edba18 bash -c "echo 123"
使用docker logs查看
docker logs 3d995b4d
-
临时docker打开虚拟终端
使用docker exec 可以打开容器的临时终端,exit后容器还是正常运行
docker exec -it f3381b9c3b2e /bin/bash
docker attach container_id 这种方式也可打开终端,但是exit后容器就中断了,所以这种方式一般不用
-
删除容器
docker rm container_id 可以删除容器,container_id是ps的时候查看到的,这样就可以把container删除,如果是运行的容器,可以加-f
docker rm -f f3381b9c3b2e
-
导出容器
docker export container_id > file.tar 这样可以导入容器,生成一个文件。可以迁移到别的机器进行导入
docker export 831cf59980c4 > wxy_test.tar
-
导入容器
cat file.tar |docker import - wxy_test 这样会生成新的镜像
cat centos-6-x86-minimal.tar.gz |docker import - wxy_test
6.docker仓库管理
-
下载registry镜像
registy为docker官方提供的一个镜像,我们可以用它来创建本地的docker私有仓库。
docker pull registry
-
启动registry镜像
docker run -d -p 5000:5000 registry
启动registry镜像,-p的意思是把容器端口映射到宿主机上,左边为宿主机端口,右边为容器监听端口
访问registry
curl 127.0.0.1:5000/v2/_catalog
-
把镜像上传到私有仓库
首先给私有仓库tag一下,tag必须要有私有仓库的ip:port
docker tag wxy_test 172.18.11.153:5000/centos
修改配置文件
vi /etc/docker/daemon.json
改为以下内容:
{ "insecure-registries":["172.18.11.153:5000"] }
完成后重启docker
systemctl restart docker
`
启动容器docker start 64584c4300f1
进行push
docker push 172.18.11.153:5000/centos
查看推送的镜像
curl 127.0.0.1:5000/v2/_catalog
-
在其他机器上下载刚上传的镜像
在其它安装docker的服务器上修改配置文件
/etc/docker/daemon.json
修改以下内容:
{ "insecure-registries":["47.106.84.56:5000"] }
ip为之前上传镜像的registry的服务器ip,这里跟之前的ip不一样是因为用了云服务器。
修改完成后重启docker,然后进行pull
docker pull 47.106.84.56:5000/centos