linux工程师,RHCE
分类: 系统运维
2018-12-20 16:27:10
Docker是一个开源的、跨平台的应用容器引擎,可以让技术开发认用打包他们的应用以及一些依赖包到一个可移植的容器平台中,发布到任何流行的Linux操作系统上面,也可以在Windows和mac操作系统上面跑,容器是完全使用沙箱机制,容器相互之间不会存在任何接口。docker应用广泛、安全性好、运行快、节约资源、移植性好、自动化部署快等有点。
我们在学习Docker镜像的时候,使用系统默认的yum源安装会非常慢,很有可能会安装失败,因为docker服务器在国外,访问速度非常慢,访问网络也不稳定,而且国外的docker hub官网拉取镜像也太慢了,我们可以直接修改用国内的阿里的容器Hub服务 的控制台,这里需要登录阿里账号或者支付宝账号,也可以使用腾讯云、百度云、华为云、ucloud、网易云等都有docker镜像hub,我这里使用的阿里云镜像服务;在学习docker容器的前提下还是要对Linux要有点基础,这样学起来就容易上手,如果完全不懂Linux,还是建议你去学习下《Linux就该这么学》这边教程里面的内容非常详细,比较适合初学者。此文章比较适合于企业应用。
docker-ce.x86_64 --showduplicates | sort -r
from cached hostfile
fastestmirror
docker-ce.x86_64 3:18.09.0-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.0-3.el7 @docker-ce-stable
docker-ce.x86_64 18.06.1.ce-3.el7 docker-ce-stable
docker-ce.x86_64 18.06.0.ce-3.el7 docker-ce-stable
docker-ce.x86_64 18.03.1.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 18.03.0.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.12.1.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.12.0.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.09.1.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.09.0.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.06.2.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.06.1.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.06.0.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.03.3.ce-1.el7 docker-ce-stable
docker-ce.x86_64 17.03.2.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.03.1.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.03.0.ce-1.el7.centos docker-ce-stable
docker-ce-[VERSION]
device-mapper-persistent-data lvm2 -y
docker.service
build 4d60db4
[endif]
[endif]
指定主机启动的名称
[root@centos7 ~]# docker run -itd -h hostname 镜像
[root@centos7 ~]# docker run -itd docker.io/ubuntu /bin/bash
[root@centos7 ~]# docker run -itd -p 0.0.0.0:80:80 --name apache
docker.io/ubuntu /bin/bash
docker pull nginx //选择合适的镜像并拉取镜像
docker images nginx //在本地镜像列表里查到 REPOSITORY 为 nginx 的镜像
docker images httpd //在本地镜像列表里查到 REPOSITORY 为apache的镜像
docker load -i 镜像名称.tar //导入镜像
docker attach 镜像名/镜像ID //进入镜像里面
docker exec 镜像名/镜像ID ls /home //在执行shell命令到容器里面
elegant_bhaskara ls /home
[root@centos7 ~]# docker stop 镜像名/镜像ID //停止镜像
[root@centos7 ~]# docker tag 原镜像名 新镜像名 //生成新的images
举例:docker tag docker.io/ubuntu ubuntu:laste
[endif]
[root@centos7 ~]# docker run -it test:ubuntu /bin/bash
[endif]
[endif]
[root@centos7 ~]# docker run -itd--name test01_self ubuntu:self 用提交的镜像再启动新的镜像
0f280fd95659c81fcff4069bb53ff53b07d06b28de05111dd5a9177e16865f22
[root@centos7 ~]# docker exec test01_self ls/home
[endif]
5、提交运行中的容器为一个镜像 (这样不会丢失在容器的各种操作)
[root@centos7 ~]# docker commit clever_haibt clever_haibt_new
### clever_haibt(运行容器名称) clever_haibt_new(生成镜像名称)
[root@centos7 ~]# docker run -d -it -p 80:80 clever_haibt_new:latest
/bin/bash
### 小p是自定义端口 latest 是镜像的标签(最好写上专业点)
80:80 httpd:latest
[if !vml]
[endif]
[if !vml]
[endif]
[root@centos7 ~]#docker ps //查看已运行的容器状态
[endif]
[root@centos7 ~]# docker system df
[root@centos7 ~]# docker stop --help
[endif]
9、linux下解决docker端口映射到宿主机后外网无法访问的问题?
[root@centos7 ~]#vim /etc/sysctl.conf
或者
[root@centos7 ~]#vim /usr/lib/sysctl.d/00-system.conf
添加如下代码:
net.ipv4.ip_forward=1
重启network服务
# systemctlrestart network
查看是否修改成功
# sysctl
net.ipv4.ip_forward
如果返回为“net.ipv4.ip_forward = 1”
则表示成功了
[root@centos7 ~]# docker rm 镜像名称/容器ID
[root@centos7 ~]# docker rm -f 镜像名称/容器ID //强制删除镜像
11、导出镜像,生成tar包,export导出的是读写层的文件系统
[root@centos7 ~]# docker export 镜像名/镜像ID > XXXX.tar
[root@centos7 ~]# docker export test01_self > test01.tar
[endif]
[root@centos7 ~]# dockersavedocker.io/imagine10255/centos6-lnmp-php56 > lnmp.tar
[endif]
[root@centos7 ~]# docker importtest01.tar(镜像包)ubuntu:self_new(新的镜像名)
[endif]
[root@centos7 ~]# docker run -itd --name ubuntu_self_new ubuntu:self_new
/bin/bash
[endif]
[root@centos7 ~]# docker rmidocker.io/imagine10255/centos6-lnmp-php56 //删除
[root@centos7 ~]# docker load -ilnmp.tar //重新导入
[endif]