docker的安装以及使用

1、docker的介绍

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

1.1、docker和虚拟机的区别

虚拟机的性能比较依靠于硬件,而docker开源且轻量化,构建在操作系统中,更加轻便docker的轻量化适用于部署少量的应用,例如说一个docker容器部署一个redis,一个docker和虚拟机的区别mysqldocker基于dockerfile来进行构建容器,程序开发人员可以手动编写dockerfile来指定相应的系统环境和依赖

1.2、docke的优点

  • 文件系统隔离,每个不同的容器都存在不同的独立文件系统中docker的几大特点
  • 资源隔离,每个容器都有自己独立的ip,网络和虚拟接口
  • 日志记录,Docker将会收集和记录每个进程容器的标准(stdout/stder/stdin)用于实时检索或批量检索。

1.3、docker的镜像和容器介绍

容器的本质就是进程,不同的容器有着自己独立的root文件系统,网络配置,一个隔离的空间。容器一旦消失,则里面包含的数据也会发生丢失。容器里面所有的存储信息都应该使用数据卷或者其他形式。数据卷的生存周期独立于容器,容器消亡,数据卷不会消亡。因此,使用数据卷后,容器删除或者重新运行之后,数据却不会丢失。

Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。

2、docker安装

卸载旧版本

yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

设置仓库
安装所需的软件包。yum-utils 提供了 yum-config-manager ,并且 device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2。

 yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

设置稳定仓库

yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

选择安装版本

yum install docker-ce-<VERSION_STRING>
yum install docker-ce-18.03.1.ce-1.el7.centos 

docker换源

方便快速下载镜像,否则下载镜像会很慢

mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
 "registry-mirrors": [
 "https://pee6w651.mirror.aliyuncs.com",
 "https://docker.mirrors.ustc.edu.cn"
}
EOF

3、docker使用

以安装mysql5.6为例子
启动并加入开机启动:

 systemctl start docker
 systemctl enable docker

查看docker版本

docker version

验证是否安装成功

docker run hello-world

获取镜像相关命令
可以去官网https://hub.docker.com/找镜像

docker pull 镜像名称
docker pull mysql:5.6
docker images |grep mysql

运行镜像

[root@localhost ~]# docker images //查看镜像
REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
mysql                5.6                 e143ed325782        11 days ago         302MB
mysql                latest              d435eee2caa5        11 days ago         456MB
mysql                <none>              b3983abaa3fe        6 weeks ago         302MB
daocloud.io/centos   latest              0f3e07c0138f        2 months ago        220MB
hello-world          latest              fce289e99eb9        11 months ago       1.84kB
[root@localhost ~]# docker run -t -i mysql:5.6 /bin/bash  //运行mysql5.6的镜像
root@e1dbca28060e:/# service mysql start    //进入容器,进入后是斜杠

退出容器

root@e1dbca28060e:/# exit
exit
[root@localhost ~]#

后台运行容器(推荐这个方法)
加一个参数-d,后启动容器

[root@localhost ~]# docker run -itd mysql:5.6 /bin/bash

然后再进入容器

[root@localhost ~]# docker exec -it 952ef87605ce /bin/bash

删除镜像

[root@localhost ~]# docker images -a
REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE
mysql                         5.6                 e143ed325782        11 days ago         302MB
mysql                         5.7                 1e4405fe1ea9        11 days ago         437MB
mysql                         latest              d435eee2caa5        11 days ago         456MB
ubuntu                        latest              775349758637        4 weeks ago         64.2MB
hub.c.163.com/library/mysql   latest              9e64176cd8a2        2 years ago         407MB
[root@localhost ~]# docker rmi e143ed325782
Untagged: mysql:5.6
Untagged: mysql@sha256:5345afaaf1712e60bbc4d9ef32cc62acf41e4160584142f8d73115f16ad94af4
Deleted: sha256:e143ed325782400813587554c5c43863484d20830c208f6be46b530fb9c1206e
Deleted: sha256:c57eaa2525cbec04255bf2791a0591a6d28d725f93370a64895c584975149b43
Deleted: sha256:c3436f861d2b562b7b787f3a0f491befa5f29352c5365408e3dc28a3a647288e
Deleted: sha256:0e325b2ff3ff022c87a1d4460cbbdea6ee4e2f4ee549c52847b13bc7be711e5c
Deleted: sha256:20ec0673abe3bb4d09a94e3b4408d56ebd52f0b9e932a1a0dec03c00edfef99d
Deleted: sha256:a5f2c182a63cf075dca0d1fee5a933d599174449592c3d462f98600df1393012
Deleted: sha256:65fc11c19a9eacf2c84ace4ea0aaf551375a29ad9d9a5c07d4d5280fe4be974a

查看运行的容器

[root@localhost ~]# docker ps 
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
03494894d14a        mysql:5.6           "docker-entrypoint.s…"   22 seconds ago      Up 21 seconds       0.0.0.0:3306->3306/tcp   mymysql

删除某个容器

docker rm  -f 71c843c94afb
docker rm xxx   删除已经停止的容器xxx
docker rm -f  xxx 可以删除正在运行的容器xxx	
docker rm -f ${docker pa -a -q}  删除所有的容器

运行docker镜像

docker run \
-p 3306:3306 \
--name mymysql \
-v $PWD/conf:/etc/mysql/conf.d \
-v $PWD/logs:/logs \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.6

-p 3306:3306:将容器的 3306 端口映射到主机的 3306 端口。
–name mymysql容器名称
-v $PWD/conf:/etc/mysql/conf.d:将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf
-v $PWD/logs:/logs:将主机当前目录下的 logs 目录挂载到容器的 /logs。
-v $PWD/data:/var/lib/mysql :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql
-e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的密码。

容器导出

[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS
952ef87605ce        mysql:5.6           "docker-entrypoint.s…"   4 minutes ago       Up 4 minutes        3306/tcp
[root@localhost ~]# ls
a.csv  anaconda-ks.cfg  conf  data  logs  redis-5.0.4.tar.gz
[root@localhost ~]# docker export mysql:5.6  > mysql.tar
[root@localhost ~]# ls
a.csv  anaconda-ks.cfg  conf  data  logs  mysql.tar

容器导入

[root@localhost ~]# docker import  mysql.tar
sha256:502eb9732ec8a03244415026826fb72d8a0a4b8b5f5a1288519ca20dfaca5a4d
[root@localhost ~]# ls
anaconda-ks.cfg  conf  data  logs  mysql.tar
[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
test                v1                  502eb9732ec8        9 seconds ago       297MB
mysql               5.6                 e143ed325782        11 days ago         302MB
#将镜像存储
docker save nginx:latest > /root/docker-images/nginx.tar

#导入镜像文件
docker load --input /root/docker-images/nginx.tar

#通过符号的方式来导入
docker load < /root/docker-images/nginx.tar

后台运行容器

[root@localhost ~]# docker run -itd test:v1 /bin/bash
b28761e8f253f415dd8ede918013610340d8f2e4b192d083b812665d46e5dfc9

查看容器运行的ID

[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
b28761e8f253        test:v1             "/bin/bash"         58 seconds ago      Up 57 seconds                           elastic_torvalds
[root@localhost ~]# docker exec -it b28761e8f253 /bin/bash

启动服务

root@b28761e8f253:/# service mysql start

文件拷贝

[root@localhost html]# docker cp /opt/html/user_login.html 0d4173ecf31f894e234ae9eb3d9eddd1b9d10b7af5c46608679fe11918af9644:/root/user_login.html
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值