Docker容器技术

概念

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

组成部分

  1. dockerClient客户端
  2. Docker Daemon守护进程
  3. Docker Image镜像
  4. DockerContainer容器

安装

  1. 环境准备
下载docker源
curl  http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo

安装

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

# 显示版本
yum list docker-ce.x86_64 --showduplicates | sort -r
yum install -y --setopt=obsoletes=0 \
            docker-ce-17.03.2.ce-1.el7.centos.x86_64 \
            docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch
# 刷新配置
systemctl daemon-reload

# 重启
systemctl restart docker

MacOS Docker 安装

如果没有安装brew 首先先安装brew

/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
brew cask install docker

2.配置镜像加速

mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
    {
      "registry-mirrors": ["https://68rmyzg7.mirror.aliyuncs.com"]
    }
    EOF    
systemctl restart docker
  1. 使用

pull 常用镜像

docker pull centos:6.9
docker pull centos:7.5.1804
docker pull nginx
# 查看本地镜像
docker images
# 启用镜像
docker exec -it mysql bash

安装mysql


# 拉取
docker pull mysql:5.7

# 运行容器
docker run -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 -d mysql:5.7

"""
--name mysql 创建的容器名称
-e MYSQL_ROOT_PASSWORD=root 使用root作为root账号的密码
-p 3306:3306 容器的3306端口映射到宿主机器
-d 后台运行容器
mysql:5.7 镜像名称
"""

# 进入mysql容器
docker exec -it mysql bash 或者 docker exec -it f653f4ae3f48 mysql -uroot -pxzwz0502

# 登录
mysql -u -p

修改mysql配置文件

# 找到要修改的镜像
docker ps

# 进入要修改的镜像
docker exec -it 容器ID /bin/bash

# 进入要修改的文件目录
cd /etc/mysql

# 修改配置文件
vi my.cnf

# 如果不安装vim在使用vim的时候会报找不到,在修改docker中mysql的配置文件,无法使用vi命令

apt-get update
apt-get install vim


# 如果要退出bash有2种操作:1)Ctrl + d 退出并停止容器;2)Ctrl + p + q 退出并在后台运行容器;

# 重启docker容器
docker restart 容器ID

连接mysql


# 进行授权报错
"""
Column count of mysql.user is wrong. Expected 45, found 42. Created with MySQL 50560, now running 50725. Please use mysql_upgrade to fix this error.
错误是由于你曾经升级过数据库,升级完后没有使用,mysql_upgrade升级数据结构造成的。
"""

mysql_upgrade -u root -p123456


# 进行授权
1、进入mysql
2、GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION; //任何远程主机都可以访问数据库
3、FLUSH PRIVILEGES; //需要输入次命令使修改生效

# 如果无法连接,考虑防火墙,比如阿里云需要进行设置防火墙规则

安装redis

# 安装
docker pull redis

# 运行容器
docker run -p 6379:6379 -v $PWD/data:/data  -d redis redis-server --appendonly yes

"""
命令说明:

-p 6379:6379 : 将容器的6379端口映射到主机的6379端口

-v $PWD/data:/data : 将主机中当前目录下的data挂载到容器的/data

redis-server --appendonly yes : 在容器执行redis-server启动命令,并打开redis持久化配置
"""

# 进入redis容器
docker exec -it CONTAINER_ID redis-cli

安装mongo

# 安装
docker pull mongo

# 运行容器
docker run -p 27017:27017 -v $PWD/db:/data/db -d mongo
"""
-p 27017:27017 :将容器的27017 端口映射到主机的27017 端口

-v $PWD/db:/data/db :将主机中当前目录下的db挂载到容器的/data/db,作为mongo数据存储目录
"""

# 运行mongo
docker run -it mongo mongo --host IP

删除images

# 删除images需要images和container都删除
"""
images很好理解,跟平常使用的虚拟机的镜像一个意思,相当于一个模版,而container则是images运行时的的状态。
docker对于运行过的image都保留一个状态(container),可以使用命令docker ps来查看正在运行的container,对于已经退出的container,则可以使用docker ps -a来查看。
"""

# 删除container
docker rm ID

# 删除images
docker rmi ID

如果在运行需要通过stop停止
GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐