、ドッカーコンテナの導入
1.コンテナとは何ですか
ドッカーコンテナは、ポータブル容器に均一にパッケージに自社のアプリケーションとの依存関係を開発者にすることができますオープンソースのアプリケーション・コンテナエンジンであり、その後、(人気のあるなど、インストール用ドッキングウィンドウエンジンで任意のサーバーに公開のLinuxマシン、Windowsマシン)を達成することが可能で、仮想化を。容器は、完全に利用されサンドボックス機構は、互いの間(iPhoneアプリと同様に)任意のインターフェイスを持っていないであろう。ほとんどのパフォーマンス・オーバーヘッドは、簡単にマシンとデータセンター内で実行することはできません。最も重要なことは、彼らは、システムのフレームワークを含む、任意の言語に依存しないことです。
早くとしてプロセスを開始することができ、血管を開始
2.dockerコンテナのコア技術
ドッキングウィンドウコンテナを構築し、この3つの技術
Cgroups-リソース管理[ https://www.cnblogs.com/menkeyi/p/10941843.html ]
ネームスペースでプロセス分離[ https://www.cnblogs.com/sparkdev/p/9365405.html ]
SELinux-セキュリティ[ https://blog.csdn.net/yanjun821126/article/details/80828908 ]
3.ドッキングウィンドウとは何ですか
ドッカーは、コンテナ管理システムの完全なセットです
ドッカーは、あまりにも多くの関係基盤となるコア技術を必要とせずに、ユーザーがより簡単に、コンテナ技術を使用することができるように、コマンドのセットを提供します
4.Dockerの利点
- 伝統的な仮想化技術に比べて、より小さなコンテナユニットは、より迅速に、それを作成します
- 伝統的仮想マシンは、オペレーティング・システムをインストールするには、各仮想マシンを与える必要が
- 共有コンテナプログラムをライブラリと使用
>ライブラリサポート(Libsの) - - >アプリケーション層(APP)3を、OS(オペレーティングシステム)をサポートする仮想化技術
ドッカーコンテナおよびオペレーティングシステムを省略し、唯一の二つの層を必要とし、ライブラリのサポート(Libsの) - >アプリケーション層(APP)
5.Docker不備
- コンテナの単離は強いの仮想化ではありません
- 共有Linuxカーネル、セキュリティ、先天性欠損
-SELinux反抗
- コンテナとコンテナのトラブルシューティング挑戦の監視
第二に、インストールドッカ
環境:CentOS7.2
仮想マシンと実マシンの準備、yumをソースデバイス上に配置され、ftpはyumを、仮想マシン上の設定ファイルを変更し、FTPミラーマウントにソフトウェアをインストールします
1. yumの倉庫を設定 - 実機を操作します
また、ドッキングウィンドウCentOSのパッケージは、ミラーでサポートされているが、また、ミラー支持RHEL7-extras.isoが必要です
[RHEL7-extras.isoダウンロード] https://github.com/ck784101777/DockerSupport
ダウンロード-yローカルのyumにはgitをインストール| gitのクローン https://github.com/ck784101777/DockerSupport / RHEL7、extras.iso
この例では、2つの画像を必要とし、ダウンロード私のgithubの中、かつての後者をダウンロードするには、公式サイトをご覧ください:
CentOS7.iso
RHEL7-extras.iso
[root@realhost ~]#systemctl enable vsftpd #开机自启ftp服务
[root@realhost ~]#systemctl start vsftpd #启动fpt
[root@realhost ~]#yum install vsftpd -y #安装vsftpd软件,没有yum配置的话,可以使用rpm安装
[root@realhost ~]#cd /var/ftp[root@realhost ~]#cd /var/ftp
[root@realhost ~]#mkdir /local //创建两个目录
[root@realhost ~]#mkdir /extra
[root@realhost ~]#mount CentOS7.iso /var/ftp/local //挂载到ftp下
[root@realhost ~]#mount RHEL7-extras.iso /var/ftp/extra
2.配置yum源-虚拟机
[root@virturalhost ~]#vim /etc/yum.repos.d/local.repo
[local_repo]
name=CentOS-$releasever - Base
baseurl="ftp://192.168.1.254/local" #ip/相对路径
enabled=1
gpgcheck=0[local_extras]
name=CentOS-$releasever - Extras
baseurl="ftp://192.168.1.254/extras/"
enabled=1
gpgcheck=0
3.安装Docker-虚拟机
- [root@docker1 ~]# yum -y install docker
- [root@docker1 ~]# systemctl restart docker
- [root@docker1 ~]# systemctl enable docker
- [root@docker1 ~]# ifconfig //有docker0说明环境部署完成
- docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
- inet 172.17.0.1 netmask 255.255.0.0 broadcast 0.0.0.0
- ether 02:42:3e:e7:3f:6e txqueuelen 0 (Ethernet)
- RX packets 0 bytes 0 (0.0 B)
- RX errors 0 dropped 0 overruns 0 frame 0
- TX packets 0 bytes 0 (0.0 B)
- TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
- [root@docker1 ~]# docker version //查看版本
- Client:
Version: 1.12.6
API version: 1.24
........
三、Docker镜像
1.什么是镜像
docker官方镜像仓库:http://hub.docker.com
-Docker容器是基于镜像启动的
-镜像是启动容器的核心
-镜像采用分层设计
-使用COW技术(写时复制),分为前后端盘,确保底层数据不丢失
如图,镜像是不可修改的,我们根据镜像创造容器
2.镜像的命令
-docker images 查看镜像列表
-docker history 查看镜像制作历史
-docker inspect 查看镜像底层信息
-docker pull 下载镜像
-docker push 上传镜像
-docker rmi 删除本地镜像
-docker save 镜像另存为tar包
-docker load 使用tar包导入镜像
-docker search 搜索镜像
-docker tag 修改镜像名称和标签
更多的命令可以通过man docker查看,或者通过man docker-ran 查看某个命令的详细信息
3.镜像的操作
1)搜索镜像
如果你想要获得一个镜像的信息,你可以先搜索这个镜像,比如你想获得一个nginx的镜像,你就搜索nginx,或者你想获得一些其他的像ssh,httpd,ftp都可以搜索的到
命令:docker search 镜像名
注意,加了[OK]的代表是官方的,安全可靠,没有加的需要考量一下安全性
[root@docker1 ~]# docker search nginx
INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED
docker.io docker.io/nginx Official build of Nginx. 12045 [OK]
docker.io docker.io/jwilder/nginx-proxy Automated Nginx reverse proxy for docker c... 1671 [OK]
docker.io docker.io/richarvey/nginx-php-fpm Container running Nginx + PHP-FPM capable ... 742 [OK]
docker.io docker.io/linuxserver/nginx An Nginx container, brought to you by Linu... 79
docker.io docker.io/bitnami/nginx Bitnami nginx Docker Image 71
2)下载镜像
搜索之后你肯定要下载
命令:docker push 镜像名
[root@docker2 ~]# docker pull docker.io/nginx
Using default tag: latest
Trying to pull repository docker.io/library/nginx ...
latest: Pulling from docker.io/library/nginx
b8f262c62ec6: Downloading 5.598 MB/27.09 MB
e9218e8f93b1: Downloading 5.111 MB/23.57 MB
7acba7289aa3: Download complete
3)查看镜像
可以查看当前安装的镜像
命令:docker images
从左到右的列依次为:仓库 标签 镜像ID 创建时间 大小
[root@docker1 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/nginx latest 42b4762643dc 8 months ago 109.2 MB
4)导出镜像
命令:docker save 镜像名:标签 -o 导出文件名
[root@docker1 ~]# docker save docker.io/nginx:latest -o nginx.tar
[root@docker1 ~]# ls
nginx.tar
5)导入镜像
命令:docker load -i 文件名
[root@docker2 ~]# ls
nginx.tar
[root@docker2 ~]# docker load -i nginx.tar
3c816b4ead84: Loading layer 58.47 MB/58.47 MB
787822cf1b17: Loading layer 54.44 MB/54.44 MB
89decbdf7fb7: Loading layer 3.584 kB/3.584 kB
Loaded image: docker.io/nginx:latest/3.584 kB
[root@docker2 ~]# docker images //查看是否导入成功
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/nginx latest 42b4762643dc 4 weeks ago 109.2 M e1ddd7948a1c 4 weeks ago 1.163 MB
6)删除镜像
命令:docker rmi 镜像名:标签/镜像ID
如果你的nginx不唯一,最好使用镜像id删除
- [root@docker1 docker]# docker rmi docker.io/nginx
- Untagged: docker.io/nginx:latest
- Deleted: sha256:42b4762643dcc9bf492b08064b55fef64942f055f0da91289a8abf93c6d6b43c
- Deleted: sha256:e0e55dd2303b3e3ec852acae267d1f8a3eea27a22c64a5829304ecee4d3f559c
- Deleted: sha256:4062cf272cdd99e83b1c21f712e5e1359c91ecf92925e56c62133c3324b84e45
- Deleted: sha256:3c816b4ead84066ec2cadec2b943993aaacc3fe35fcd77ada3d09dc4f3937313
7)启动容器
你可以选择直接允许脚本或者放在后台执行
命令:
直接运行:docker run -it 镜像名:标签 执行脚本(非必须)
后台运行:docker runt itd 镜像名:标签 执行脚本(非必须)
- [root@docker1 docker_images]# docker run -it docker.io/centos /bin/bash
- [root@7a652fc72a9f /]# ls /
- anaconda-post.log bin dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
8)查看后台容器-需后台运行
命令:docker ps
- [root@docker1 docker]# docker ps
- CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
- 81458156f6e8 docker.io/nginx "nginx -g 'daemon off" 9 seconds ago Up 8 seconds 80/tcp pedantic_goldberg
9)运行后台镜像
运行后台镜像,run+镜像前3位即可
- [root@docker1 docker]# docker run it 814
- CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
- 81458156f6e8 docker.io/nginx "nginx -g 'daemon off" 9 seconds ago Up 8 seconds 80/tcp pedantic_goldberg
10 )停止后台容器
命令:docker stop id号
- [root@docker1 docker]# docker stop 814
- 814
11)修改tag标签
命令:docker tag 原名:原标签 修改后名:新标签
- [root@docker1 docker_images]# docker tag docker.io/centos:latest docker.io/cen:v1
- [root@docker2 ~]# docker images
- REPOSITORY TAG IMAGE ID CREATED SIZE
- docker.io/centos latest 42b4762643dc 4 weeks ago 109.2 MB
- docker.io/cen v1 42b4762643dc 4 weeks ago 109.2 MB
12)查看容器的底层信息
这个功能很强大,可以查看到镜像的很多信息
[root@docker1 docker_images]# docker inspect docker.io/centos
13)连接容器attach|exec
我们可以用docker ps 查看后台运行的进程(容器),前面讲过如何启动,docker run -it 镜像id,而这条命令其实是使用的attach连接的容器(默认连接方式),这样连接你退出来就直接关闭容器了,但是很多情况我们希望退出容器后不关闭容器,那么我们就要使用exec去连接
-attach 进入容器,exit会关闭容器
-exec 进入容器,exit不会关闭容器,仍然放到后台
命令格式: docker attach/exec -it 容器id /bin/bash
那是不是说我用attach进入容器后退出就没有方法保留容器了?
我们可以输入ctrl+p+q退出(按住ctrl,按一下p,再按一下q,不是连按),这样退出会保留容器
- [root@docker1 docker]# docker attach 0f
- [root@docker1 docker]# docker ps //容器关闭
- CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
- [root@docker1 docker]# docker exec -it 0f /bin/bash
- [root@docker1 docker]# docker ps //容器不会关闭
- CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
- 0b3c50284a1c docker.io/centos "/bin/bash" 15 minutes ago Up 15 minutes tiny_lamarr