安装
docker三大组件:镜像,容器,仓库
我这边是root登录,如果非root用户命令前加 sudo
- 安装依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
- 安装依赖
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
- 安装containerd.io(这里默认安装最新版本的docker,若要安装指定版本请参考官方文档https://docs.docker.com/engine/install/centos/)
yum install docker-ce docker-ce-cli containerd.io
安装最新版,这步一般会报错:
Error:
Problem: package docker-ce-3:19.03.6-3.el7.x86_64 requires containerd.io >= 1.2.2-3, but none of the providers can be installed
cannot install the best candidate for the job
package containerd.io-1.2.10-3.2.el7.x86_64 is excluded
.......
需要安装最新的依赖,这步不是唯一的,docker更新版本后可能需要更高版本。
dnf install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm
安装完成后再次执行
yum install docker-ce docker-ce-cli containerd.io
注意:
安装时必须保证网络流畅,否则会安装失败。
操作
- 查看版本
docker -v
docker version
- 查看详情
docker info
- 帮助命令
docker --help
- 启动docker,设置开机启动
启动
systemctl start docker
重启
systemctl restart docker
开机启动
systemctl enable dockr
- 下载容器
docker pull 容器
例如
docker pull mysql:5.7
- 重启容器、停止容器、杀掉一个容器、获取日志
重启容器
docker restart mysql
停止容器
docker stop mysql
杀掉一个容器
docker kill mysql
获取日志
docker logs
根据IMAGE ID删除容器
docker rmi <image_id>
docker rmi if <image_id> 强制删除
- 镜像操作 image
查看当前所有镜像
docker images
docker image ls
列出本地所有镜像
docker images -a
只显示镜像ID
docker images -q
显示镜像的摘要信息
docker images --digests
显示完整的镜像信息
docker images --no-trunc
删除指定镜像
docker image rm
REPOSITORY:表示镜像仓库资源
TAG:镜像的标签
CREATED:镜像创建时间
SIZE:镜像大小
- 查看正在运行的容器
可用于进入容器内
docker ps
- 进入容器内部
docker exec -it 容器id或names /bin/bash
例如:
docker exec -it mysql /bin/bash
也可以这样
docker exec -it redis redis-cli
- 退出容器
exit
- 安装mysql
docker pull mysql:5.7
- 启动mysql并挂载目录
docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
- 在linux下的/mydata/mysql/conf目录下,新建my.cnf
[client]
default-character-set-utf8
[mysql]
default-character-set-utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
设置mysql跟随docker启动
先执行
docker ps -a
查看当前的容器
再执行下边命令:
docker update mysql --restart=always
取消自动启动
docker update --restart=no<CONTAINER ID>
docker update --restart=no 1dccfbc7bc50
- 安装redis
必须先建好redis.conf文件,否则挂载时会将它当成文件夹
mkdir -p /mydata/redis/conf
touch /mydata/redis/conf/redis.conf
启动容器并挂载目录
docker run -p 6379:6379 --name redis -v /mydata/redis/data:/data -v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf -d redis redis-server /etc/redis/redis.conf
进入容器内部
docker exec -it redis redis-cli
- 获取运行时信息
docker inspect nginx
下边部分命令未实际操作,仅供参考,后续完善
image
docker image pull xxx:tag 下载指定的镜像
docker image ls 列出本地所有镜像文件
docker image rm 删除指定的镜像
docker container ls = docker ps 显示所有容器
docker container run 启动一个容器,要注意容器启动时候的启动参数
栗子: docker container run --name nginx1 -d nginx:1.14-alpine
docker inspect nginx1 获取nginx1运行时的信息
docker create 创建一个新的容器
docker exec
docker attach 连接到某个容器
docker logs 获取container的日志
docker restart 重起容器
docker stop 停止容器
docker kill 杀掉一个容器
docker rm 删除一个容器
docker-compose操作
安装docker-compose
curl -L https://github.com/docker/compose/releases/download/1.25.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
curl -L https://github.com/docker/compose/releases/download/1.25.0/docker-compose-Linux-x86_64 -o /usr/local/bin/docker-compose # 等效上面的命令
chmod +x /usr/local/bin/docker-compose
查看版本:
docker-compose --version