docker快速入门

 

一、安装docker
以下演示在centos7下安装docker:

##不是最新版本
yum install docker

#最新版安装
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install docker-ce

查看是否安装成功:
docker version/docker info

docker服务启动停止:
service docker start|stop|restart

设置开启启动
chkconfig docker on


二、docker 安装tomcat服务并启动
1.从官网搜索tomcat镜像
docker search tomcat
2.从官网拉取tomcat镜像(OFFICIAL标记为OK的代表docker官网)
docker pull tomcat
3.运行tomcat
docker run -dit --name tomcat1 tomcat -p 8080:8080
4.测试是否成功
curl localhost:8080 或浏览器访问


三、将本地images推送到 docker hub

1.首先需要到docker官网注册docker hub的账号,创建仓库:mk-hub-docker

2.给镜像hello-world打标签1657486787/mk-hub-docker:hw001
docker tag hello-world 1657486787/mk-hub-docker:hw001

3.登录官网的hub docker,输入用户名,密码
docker login

4.推送

docker push 1657486787/mk-hub-docker:hw001

 

四、搭建私有仓库registry

docker search registry

pull仓库
docker pull registry

启动私有仓库
docker run -dit --name mk-reg -p 5000:5000 registry

检查是否安装成功:
curl localhost:5000/v2/_catalog

输出:{"repositories":[]} 代表安装成功

注意:私服默认只能使用https,需要配置开放http 。步骤

 1.新建daemon.json

vi /etc/docker/daemon.json     内容如下:

{
"registry-mirrors":["https://registry.docker-cn.com"],
"insecure-registries":["localhost:5000"]
}

2. 重启

systemctl daemon-reload

systemctl restart docker

3.验证

查询镜像:http://localhost:5000/v2/_catalog  

查询hello版本: http://localhost:5000/v2/hello/tags/list

注意:本地搭建的仓库没有设置用户密码。

 

五、创建自己的镜像,以centos安装nginx为例

1.先从官网拉取centos : docker pull centos

2.创建一个centos容器名字为cent并进入该系统
docker run -it --name cent centos /bin/bash
3.cent容器内安装nginx

rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
yum search nginx
yum install -y nginx

查看nginx 在哪
whereis nginx

容器启动nginx服务
/usr/sbin/nginx

4.ctrl+q+p 退出容器,在宿主机内校验nginx是否正常
5.curl 172.17.0.3 (这个ip地址可以通过 docker inspect cent查看)


6.使用commit服务为一个nginx镜像
docker commit cent cent-ng:v1

查看是否成功docker images


7.启动nginx镜像 cent-ng:v1
docker run -it --name ng cent-ng:v1 /bin/bash

8.容器内启动nginx
/usr/sbin/nginx

9.ctrl+q+p 退出容器,在宿主机内校验nginx是否正常
curl 47.107.146.57

10.如果要再次进入cenos : docker exec -it 容器id /bin/bash


注意:现在我们希望启动容器时,直接启动nginx服务,怎么做

docker run -d --name nx2 cent-ng:v1 /usr/sbin/nginx -g "daemon off;"

  nginx -g这个参数是指可以在外面添加指令到nginx的配置文件中,

       daemon off是指nginx服务不运行在后端,而是在前台运行(container中的服务必须运行在前台)

 六、volume文件挂载

1.启动容器data 并挂载

docker run --name data -v /opt/data -it centos /bin/bash

在宿主机查看data的信息Mounts挂载信息
docker inspect data
  "Source": "/var/lib/docker/volumes/eb8316d6bc046cd87ba0ece94f5374a31adef805a1bfb97edfd314431d70c3dd/_data",
  "Destination": "/opt/data",
Source代表宿主机的路径,Destination代表容器中的路径 ,他们两已经一一对应好了,也就是将容器/opt/data挂载到了宿主机

2.备份/恢复数据卷

备份:docker run --rm --volumes-from data -v $(pwd):/backup centos tar cvf /backup/data.tar /opt/data

恢复:docker run --rm --volumes-from data -v $(pwd):/backup centos tar xvf /backup/data.tar -C /

释义:

docker  run --rm ----- 启动一个新的容器,执行完毕删除

--volumes-from data ------- data容器中挂载卷

-v $(pwd):/backup   --------挂载当前目录到容器中为backup

cvf /backup/data.tar /opt/data --------- 备份/opt/data目录(即卷中所有的数据)为data.tar

 

xvf /backup/data.tar -C /  ---------- 解压data.tar 到根目录/ ,因tar归档中已包含了/opt/data路径

3.删除数据卷

docker rm -v data

 

七、DockerFile

1.创建好名为Dockerfile的文件,内容如下:
FROM centos
#CMD echo "hello cmd"
CMD ["/bin/bash", "-c", "echo 'hello cmd!'"]

2.创建一个名为cmd的镜像
docker build -t cmd /sgy/soft/docker/dockerfile/cmd

3.使用该镜像运行一个容器
docker run -it cmd

 

posted on 2019-03-04 15:19  sgyi06  阅读(98)  评论(0编辑  收藏  举报

导航