docker学习
docker安装与卸载
主要是基于centos
-
卸载之前的老版本
$ sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine
-
使用储存库安装
$ sudo yum install -y yum-utils $ sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo
-
安装DOCKER引擎
$ sudo yum install docker-ce docker-ce-cli containerd.io
-
启动检验
$ sudo systemctl start docker $ sudo docker run hello-world
-
卸载软件包
$ sudo yum remove docker-ce docker-ce-cli containerd.io
-
主机上的映像,容器,卷或自定义配置文件不会自动删除。要删除所有图像,容器和卷:
$ sudo rm -rf /var/lib/docker
我在安装的时候报错 需要container-selinux >= 2.9
yum 安装container-selinux 一般的yum源又找不到这个包
需要安装epel源 才能yum安装container-selinux
然后在安装docker-ce就可以了。
wget -O /etc/yum.repos.d/CentOS-Base.repo (文件夹需要被创建)
http://mirrors.aliyun.com/repo/Centos-7.repoyum install epel-release #阿里云上的epel源
然后yum install container-selinux
镜像容器的查看
-
镜像的查看
docker images
-
容器的查看
docker ps -a
-
要想删除镜像先要删除镜像创造的容器
# 删除容器 docker rm (ID) # 删除镜像 docker rmi (ID)
docker配置mysql
安装基本运行
1.下载镜像,mysql 8.0.22
docker pull mysql:8.0.22
2.创建mysql容器,并后台启动
docker run -d -p 3306:3306 -e MYSQL_USER="woniu" -e MYSQL_PASSWORD="123456" -e MYSQL_ROOT_PASSWORD="123456" --name mysqltest1 mysql:8.0.22 --character-set-server=utf8 --collation-server=utf8_general_ci
参数说明:
-e MYSQL_USER=”woniu” :添加woniu用户
-e MYSQL_PASSWORD=”123456″:设置添加的用户密码
-e MYSQL_ROOT_PASSWORD=”123456″:设置root用户密码
–character-set-server=utf8:设置字符集为utf8
–collation-server=utf8_general_cli:设置字符比较规则为utf8_general_cli
挂载外部配置和数据安装
1.创建目录和配置文件my.cnf
mkdir /docker
mkdir /docker/mysql
mkdir /docker/mysql/conf
mkdir /docker/mysql/data
创建my.cnf配置文件
touch /docker/mysql/conf/my.cnf
my.cnf添加如下内容:
[mysqld]
port=3306
#你要的端口默认3306
user=mysql
character-set-server=utf8
default_authentication_plugin=mysql_native_password
default-time-zone = '+8:00'
#时间“+8:00”
[client]
port=3306
#你要的端口默认3306
default-character-set=utf8
[mysql]
default-character-set=utf8
2.创建容器,并后台启动
docker run -d -p 3306:3306 --privileged=true -v /docker/mysql/conf/my.cnf:/etc/mysql/my.cnf -v /docker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysqltest2 mysql:8.0.22
参数说明:
–privileged=true:容器内的root拥有真正root权限,否则容器内root只是外部普通用户权限
-v /docker/mysql/conf/my.cnf:/etc/my.cnf:映射配置文件
-v /docker/mysql/data:/var/lib/mysql:映射数据目录
sql初试化密码 SET PASSWORD FOR ‘root’@‘localhost’ = ‘root’;
docker配置redis
拉取redis镜像
docker pull redis
本地新建redis配置文件 redis.conf ,写入以下内容
#允许外网访问
bind 0.0.0.0
daemonize NO
protected-mode no
requirepass 123456
运行容器
docker run -p 6379:6379 --name redis -v /docker/redis/redis.conf:/etc/redis/redis.conf -v docker/redis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes
命令说明:
-p 6379:6379 : 将容器的6379端口映射到主机的10001端口
–name redis : 容器名字
-v docker/redis/conf/redis.conf:/etc/redis/redis.conf : 将主机中配置文件挂载到容器中
-v docker/redis/data:/data : 将主机中data挂载到容器的/data
redis-server --appendonly yes : 在容器执行redis-server启动命令,并打开redis持久化配置
redis-server /etc/redis/redis.conf : 容器中以配置文件方式启动redis