docker的安装和使用

187 阅读7分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第18天,点击查看活动详情

若看到相同文章,为本人其他平台

docker的安装和使用

CentOS

如果是centos,上面的安装命令会在系统上添加yum源:

/etc/yum.repos.d/docker-ce.repo

然后用yum安装:

yum install -y docker-ce

yum源文件和rpm包都在网页download.docker.com中,可以自己下载安装:

wget https://download.docker.com/linux/centos/docker-ce.repo
mv docker-ce.repo /etc/yum.repos.d
yum install -y docker-ce

或者直接下载rpm安装:

wget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-17.09.0.ce-1.el7.centos.x86_64.rpm
yum localinstall docker-ce-17.09.0.ce-1.el7.centos.x86_64.rpm

docker的使用

  1. hub.docker.com/ docker容器地址,类似github.

  2. docker images //列出本地镜像。

  3. docker ps -a    //查看所有容器。运行和不运行的都显示。
    
  4. docker search ubuntu //查找ubuntu镜像。

  5. docker pull ubuntu //将名为ubuntu的镜像下载到本地。

  6. docker pull qq624758472/ubuntu:latest 自己的乌邦图容器pull到本地。

  7. docker tag ubuntu qq624758472/ubuntu

  8. docker push qq624758472/ubuntu

    这里要注意一个问题,给自己镜像命名的时候格式应该是: docker注册用户名/镜像名,比如我的docker用户名为 test123,那么我的镜像tag就为 test123/whalesay,不然是push不上去的

  9. docker run -it ubuntu /bin/bash //启动镜像。 这个好像也是创建。

  10. docker run -itd --name ubuntu-test qq624758472/ubuntu /bin/bash 创建镜像并在后台运行。

  11. docker ps 列出所有正在运行的容器。

  12. docker attach 进入正在后台运行的镜像中,exit会退出。

  13. docker exec -it 243c32535da7 /bin/bash 进入正在后台运行的镜像中,exit不会退出。

  14. docker start ID 后台启动已经存在的容器。

  15. docker rm -f 1e560fca3906 删除容器。

登录上传docker 镜像。

  1. 登录docker login
  2. docker commit -m 'my python 3' ubuntu-test qq624758472/ubuntu:v0.0.1 将ubuntu-test容器打包成名字为qq624758472/ubuntu版本号是v0.0.1的镜像。
  3. docker push qq624758472/ubuntu 将qq624758472/ubuntu 名字的镜像上传。
  4. docker rmi hello-world   删除名字为hello-world的镜像。
    

debian

UOS

统信官方给的安装教程:

blog.csdn.net/weixin_4385…

#容器
容器技术已经成为应用程序分装和交付的核心技术
容器技术内核组成(Cgroups-资源管理 NameSpace-进程隔离)
由于是在物理机器上实施隔离、启动一个容器、可以像启动一个进程一样快速

#docker
docker是完整的一套容器管理系统
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
#Docker 的优点
#1、简化程序:
Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,便可以实现虚拟化。Docker改变了虚拟化的方式,使开发者可以直接将自己的成果放入Docker中进行管理。方便快捷已经是 Docker的最大优势,过去需要用数天乃至数周的 任务,在Docker容器的处理下,只需要数秒就能完成。
#2、避免选择恐惧症:
如果你有选择恐惧症,还是资深患者。Docker 帮你 打包你的纠结!比如 Docker 镜像;Docker 镜像中包含了运行环境和配置,所以 Docker 可以简化部署多种应用实例工作。比如 Web 应用、后台应用、数据库应用、大数据应用比如 Hadoop 集群、消息队列等等都可以打包成一个镜像部署。
#3、节省开支:
一方面,云计算时代到来,使开发者不必为了追求效果而配置高额的硬件,Docker 改变了高性能必然高价格的思维定势。Docker 与云的结合,让云空间得到更充分的利用。不仅解决了硬件管理的问题,也改变了虚拟化的方式。
#Docker 架构
Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。
Docker 容器通过 Docker 镜像来创建。

#实验-安装docker
apt update
apt install -y docker.io
systemctl restart docker
docker versionClient:
Version: 18.09.1
API version: 1.39
Go version: go1.11.6
Git commit: 4c52b90
Built: Tue, 03 Sep 2019 19:59:35 +0200
OS/Arch: linux/amd64
Experimental: false

Server:
Engine:
Version: 18.09.1
API version: 1.39 (minimum version 1.12)
Go version: go1.11.6
Git commit: 4c52b90
Built: Tue Sep 3 17:59:35 2019
OS/Arch: linux/amd64
Experimental: false

#实验-镜像的基本操作
docker镜像查询
docker search uos
docker pull uosproject/uos //下载镜像
docker images //查看镜像
docker push uosproject/uos //上传镜像
docker save uosproject/uos:latest -o uos.tar //导出uos镜像为uos.tar
docker load -i nginx.tar //倒入本地镜像
docker rmi nginx //删除镜像
docker run -it uosproject/uos bash //以bash环境启动镜像
docker ps -a //#不加-a只显示运行状态的docker进程,每次都随机创建容器名和容器ID
docker logs 597b8cd3ca55 //通过容器ID来查询日志
docker tag uosproject/uos:latest uosproject/txuos:v1 //修改镜像的名称和标签,默认标签为latest
docker inspect uosproject/uos //查看镜像的底层信息

#实验-容器命令
docker stop 597b8cd3ca55 //通过容器ID关闭容器
docker start 597b8cd3ca55 //启动容器
docker attach 597b8cd3ca55 //连接到容器
docker ps //查看容器以关闭
docker start 597b8cd3ca55
docker exec -it 597b8cd3ca55 bash
docker ps //容器不会关闭
docker top 597b8cd3ca55 //查看容器进程列表
//过滤mac地址和ip地址
docker inspect -f ‘{{.NetworkSettings.MacAddress}}’ 597b8cd3ca55
02:42:ac:11:00:02
docker inspect -f ‘{{.NetworkSettings.IPAddress}}’ 597b8cd3ca55
172.17.0.2


#---- 将容器保存成镜像
#保存后 docker images 便可以看到镜像
docker commit <容器id> <镜像名>:<tag>     


#启动新容器并挂载
docker run -it -p 8070:8080 -v /root/software:/software --privileged=true docker.io/centos /bin/bash
-it 创建一个交互式的容器
-p 映射端口8070 本机的端口 映射的容器的端口
-v 挂载目录/root/software 本地目录 /software容器目录,在创建前容器是没有software目录的,docker 容器会自己创建
--privileged=true 关闭安全权限,否则你容器操作文件夹没有权限

#实验-修改镜像内容
docker load -i nginx.tar
docker run -it nginx:latest bash
docker ps -a
docker start 9725ff87872e
docker exec -it 9725ff87872e bash
#echo ‘UOS web’ > /usr/local/nginx/html/index.html
#nginx
#exit

docker inspect 9725ff87872e
apt install -y curl
curl 172.17.0.2 //可以访问到容器提供的web页面

#实验-mysql
docker run -d -p 33060:3306 -e MYSQL_ROOT_PASSWORD=1q2w3e4r.A -v /mysql:/var/lib/mysql --name=mysql mysql:5.5
yum install -y mysql
mysql -h192.168.200.201 -P33060 -uroot -p1q2w3e4r.A
mysql -h172.17.0.2 -P3306 -uroot -p1q2w3e4r.A
create database wordpress;

#实验-wordpress
提前准备好数据库
docker run -d -p 80:80 --name=wordpress --link=mysql wordpress:4.9.4
docker ps -a
docker start 06e09e14660b
docker exec -it 06e09e14660b bash
docker inspect 06e09e14660b
firefox 172.17.0.2

#挂载文件夹命令
docker run -it -v /home/dock/Downloads:/usr/Downloads:ro ubuntu64 /bin/bash




#打包自己的docker镜像,并放到其他机器上使用该镜像

docker拉镜像特别慢,解决方法,配置加速

//docker配置加速器:
//添加文件:/etc/docker/daemon.json
//文件内容为:
{
"log-driver": "json-file",
"log-opts": {
    "max-size": "100m",
    "max-file": "3"
    },
"max-concurrent-downloads": 10,
"max-concurrent-uploads": 10,
"registry-mirrors": ["https://rce4gd7j.mirror.aliyuncs.com"]
}

修改完后,重启docker

systemctl daemon-reload  && systemctl restart docker

注:使用docker需要先启动服务器.

#centos下启动docker-daemon守护进程
systemctl daemon-reload
systemctl restart docker.service

#deb系下启动: 没试过.
service docker restart