深入了解docker

本次实验的环境是Ubuntu。整个实验分为以下几个步骤:

一. 准备docker环境

1. 安装docker:
sudo apt install docker.io

2. 查看安装docker版本
docker -v

3. 查看docker是否启动
systemctl status docker 

若出现如下显示,则说明docker已经正常启动。

二. 运行镜像

1. 运行hello-world镜像
sudo docker run hello-world

2. 运行Ubuntu镜像
sudo docker run -it ubuntu bash

三. docker基本操作

1. 显示本地镜像库内容
sudo docker images

可以看见有刚才下载的hello-world镜像和ubuntu镜像。

2. 获得帮助
docker --help

3. 显示正在运行的容器
sudo docker ps

4. 显示所有容器(包括已中止)
sudo docker ps -a

可以看到包含已经中止的hello镜像和ubuntu镜像。

5. 继续运行原容器并进入
sudo docker restart $NAMES
sudo docker ps
sudo dockerr attach $NAMES

根据容器的NAMES属性来重新运行ubuntu容器。

四. mysql与容器化

1. 拉取mysql镜像
sudo docker pull mysql:5.7


此时再查看本地镜像,发现mysql出现了。

2. 构建docker镜像

首先新建文件夹mydock,然后在mydock目录下新建文件dockerfile。

dockerfile中输入如下内容。

然后构建镜像hello。

sudo docker build . -t hello


最后运行镜像:

sudo docker run -it --rm hello -H

2. 使用mysql容器

首先启动服务器:

sudo docker run -p 3306:3306 --name mysql2 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7


然后启动mysql客户端:

sudo docker run -it --net host mysql:5.7 "sh"
mysql -h127.0.0.1 -P3306 -uroot -proot

3. 挂载卷保存db

查看数据库文件:

sudo docker exec -it mysql2 bash


dockerfile的VOLUME /var/lib/mysql含义:

sudo docker container prune -f
sudo docker volume prune -f
sudo docker volume ls 


创建卷并挂载到/var/lib/mysql目录:
这里运行remove命令时,发现直接添加sudo还是会报错,没有权限,所以先将当前用户加入到了docker用户组。

docker rm $(docker ps -a -q) -f -v
docker volume create mydb
docker run --name mysql2 -e MYSQL_ROOT_PASSWORD=root -v mydb:/var/lib/mysql -d mysql:5.7


然后启动客户端容器链接服务器:

docker run --name myclient --link mysql2:mysql -it mysql:5.7 bash
mysql -hmysql -P3306 -uroot -proot

使用–link连接两个容器,客户端容器内可以使用mysql这个别名访问服务器。

五. docker网络

1. 备制支持ifconfig和ping命令的ubuntu容器
docker run --name unet -it --rm ubuntu bash
apt-get update
apt-get install net-tools
apt-get install iputils-ping -y
ifconfig
ping  (host ip)


2. 启动另一个命令窗口,由容器制作镜像
sudo docker commit unet ubuntu:net

六. docker仓库

1. 启动仓库容器:

2. 镜像操作

首先拉取ubuntu:16.04镜像:

docker pull ubuntu:16.04


然后将镜像标记为localhost:5000/my-ubuntu,并将镜像推送到在localhost:5000运行的本地仓库:

docker tag ubuntu:16.04 localhost:5000/my-ubuntu
docker push localhost:5000/my-ubuntu


删除本地缓存ubuntu:16.04和localhost:5000/my-ubuntu 镜像:

docker image remove ubuntu:16.04
docker image remove localhost:5000/my-ubuntu


最后把localhost:5000/my-ubuntu镜像从仓库中拉取出来:

docker pull localhost:5000/my-ubuntu

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值