docker容器管理及使用(完整版)

一.docker安装
1、Docker版本
社区版(Community Edition):CE (常用)
企业版(Enterprise Edition):EE
2、Docker官网
https://www.docker.com/
3、Docker文档
https://docs.docker.com
以下以Centos7系统上的安装为例(环境需求在Centos7以上,目前Centos7.6是最新的)
https://docs.docker.com/install/linux/docker-ce/centos/
Docker从1.13版本开始,分为CE和EE。生产中v17的用的比较多。
4、安装步骤
安装前先关闭防火墙:systemctl stop firewalld
并禁止开机启动:systemctl disable firewalld
关闭selinux:vim /etc/selinux/config
docker容器管理及使用(完整版)
1)安装依赖包
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
2)配置yum源(这个yum源会自动下载最新版本的Docker)。执行后,会在/etc/yum.repos.d/ 下新增了一个文件docker-ce.repo
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
3)安装Docker程序
yum install docker-ce -y
4)启动Docker服务并加入开机启动
systemctl start docker
systemctl enable docker
5)验证
docker run hello-world
docker容器管理及使用(完整版)
5、查看Docker版本
docker info/docker version
6、下载一个测试镜像
1)docker run -it nginx (下载nginx镜像,并在前台运行)
docker容器管理及使用(完整版)
2)查看docker进程 docker ps
docker容器管理及使用(完整版)
3)访问容器 docker inspect 容器ID
docker容器管理及使用(完整版)
docker容器管理及使用(完整版)
4)进入这个容器中 docker exec -it 容器ID bash

二,镜像管理

1、镜像是什么
docker容器管理及使用(完整版)
2、看镜像的分层
docker history nginx(镜像名称)
docker容器管理及使用(完整版)
3.镜像从哪里来
docker hub 是由docker公司负责维护的公共注册中心,下载地址https://hub.docker.com/explore
1) 检索镜像仓库 docker search nginx
2) 图形界面的镜像页面 https://hub.docker.com/explore在这里可以查找想要的镜像,并有使用说明.
3) 修改镜像地址,因为默认是国外的镜像地址,下载速度慢,所以可以修改成国内的镜像地址
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io
docker容器管理及使用(完整版)
再重启docker服务后就生效了:systemctl restart docker
4.镜像与容器的联系
docker容器管理及使用(完整版)
1)后台运行镜像: docker run -itd nginx
2)Docker可以通过一个镜像来创建多个容器,镜像没有复制,只是标记引用。
docker容器管理及使用(完整版)
3)通过命令docker exec -it cfece52e4b02 bash 进入容器后,就进入了可写区域(可写层)。在容器中做的修改只保留在容器中,并没有修改镜像中的内容。当这个容器被删除后,在这个容器中做的修改就没有了。
4)镜像启动后要加载系统文件 resolv.conf hosts hostname
docker容器管理及使用(完整版)

5.管理镜像常用命令
docker容器管理及使用(完整版)
docker image save jdk1.8 > jdk.tar#将当前的一个镜像文件保存为一个文件
docker image load < jdk.tar #然后将文件导入到镜像环境中

三 容器管理
1.创建容器常见选项
docker container run 选项 image
docker容器管理及使用(完整版)
示例:docker container run -d -p 88:80 --name web nginx
2.容器运行资源限制
docker容器管理及使用(完整版)
docker容器管理及使用(完整版)
注意:当容器没有内存和cpu限制时,会使用所有物理内存和所有的cpu资源。
建议:如果一个系统上跑多个容器,建议做下资源限制。
3.管理容器常用命令
docker容器管理及使用(完整版)
docker ps -l:查看最近创建的容器
docker ps -a:查看所有容器

四. 管理应用程序数据

docker 提供三种方式将数据从宿主机挂载到容器中:
volumes: Docker管理宿主机文件系统一部分(/var/lib/docker/volumes/)
bind mounts: 将宿主机上的任意位置的文件或者目录挂载到容器中。
tmpfs:挂载存储在主机系统的内存中,而不会写入主机的文件系统。如果不希望将数据持久存储到任何位置,可以使用tmpfs.

1.volumes管理示例

docker volume create nginx-vol #创建容器卷
docker volume ls #查看所有容器卷
docker volume inspect nginx-vol(/var/lib/docker/volumes/nginx-vol/_data 这是数据卷存放位置)
[
    {
        "CreatedAt": "2019-06-18T17:59:40+08:00",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/nginx-vol/_data",
        "Name": "nginx-vol",
        "Options": {},
        "Scope": "local"
    }
]
docker run -d --name=nginx01  -p 88:80  --mount src=nginx-vol,dst=/usr/share/nginx/html  nginx 
#用卷创建一个容器。
修改/var/lib/docker/volumes/nginx-vol/_data/index.html,
新添加一行:<p><em>this is new content</em></p>
然后本地浏览器访问:

docker容器管理及使用(完整版)

如果容器nginx01不可用,随后可以创建个新的容器,做同样的挂载目录,数据依然在。
docker run -d --name=nginx02  -p 88:80  --mount src=nginx-vol,dst=/usr/share/nginx/html  nginx 

特点:移植性强;多个容器之间可以挂载相同的卷;多个运行容器之间共享数据。

2.bind mounts
两种方式:

docker  run -d -it --name=nginx-test --mount type=bind,src=/app/wwwroot,dst=/etc/nginx/html nginx
docker run -d -it --name=nginx-test -v /app/wwwroot:/etc/nginx/html  nginx

注意:如果container中的目录已经有内容,那么docker会使用host上的目录将其覆盖掉
区别:
docker容器管理及使用(完整版)
五. 容器网络
docker容器管理及使用(完整版)
举例:
2)Docker pull busybox
docker run -it --name bs1 --net=host busybox
进入容器,ifconfig执行后的结果和宿主机网络环境一致。
docker容器管理及使用(完整版)
3)docker run -it --name bs2 --net=none busybox
docker容器管理及使用(完整版)
4)-net=container:Name/ID
docker run -itd --name bs -p 99:80 busybox
创建一个容器,需求:想访问99能访问对应的80端口的服务。
docker run -d --name nginx80 --net container:bs nginx
#其实把nginx80容器的网络空间赋予给bs容器。
查看bs的网络空间查看,能看到80端口。
docker容器管理及使用(完整版)
5)自定网络实现内部dns发现。
docker network create bs-test
docker run -it --name bs1 --net bs-test busybox #运行容器1
/ # ping bs2

docker run -it --name bs2 --net bs-test busybox #运行容器2
/ # ping bs1

在每个容器中ping 对方的name,都能平通。

六.Harbor仓库
Harbor概述
官方地址:https://github.com/goharbor/harbor
docker容器管理及使用(完整版)

1.Docker-compose安装
sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
2.Harbor安装
docker容器管理及使用(完整版)
Docker-compose ps
docker容器管理及使用(完整版)
3.推送镜像到harbor中
1)docker tag nginx:new 188.121.234.176/library/nginx:v1 #首先对要上传的镜像打标签
2)docker push 188.121.234.176/library/nginx:v1 #推送镜像到harbor中的library仓库。
docker容器管理及使用(完整版)
提示如上的时候操作:
[root@docker-virtualenv harbor]# cat /etc/docker/daemon.json
{
"registry-mirrors": ["http://f1361db2.m.daocloud.io"],
"insecure-registries": ["188.121.234.176"]
}
重启docker,docker-compose
systemctl start docker
3)再次执行docker push 188.131.244.172/library/nginx:v1,提示“requested access to the resource is denied”,这是因为library仓库只允许下载,不允许上传。
docker容器管理及使用(完整版)
解决办法:
docker容器管理及使用(完整版)
docker容器管理及使用(完整版)
4) 再次执行
docker login 188.131.244.172
输入用户密码
docker push 188.131.244.172/library/nginx:v1.
docker容器管理及使用(完整版)
4.拉取镜像:
docker pull 188.131.244.172/library/tomcat:v1

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章