docker 基本操作
查看是否已安装
yum list installed | grep docker
卸载安装包
yum remove docker-common.x86_64
安装docker
yum install docker -y
查版本
docker --version
docker -v
[root@CentOS7-104 ~]# docker --version
Docker version 1.13.1, build 0be3e21/1.13.1
启动
systemctl start docker
service docker start
停止
systemctl stop docker
service stop docker
重启
systemctl restart docker
service docker restart
查看状态
systemctl status docker
service docker status
ps -ef | grep docker
docker info
查看docker cp 的用法
docker cp --help
搜索镜像
docker search tomcat
下载镜像
docker pull tomcat
docker pull tomcat:latest#冒号后加最新的或者版本号
如果无法下载,镜像 可以选择更换yum源
yum源备份,然后下载国内,163或者阿里yum源
#cd /etc/yum.repos.d/
#mkdir back
#tar -czvf back/back.tar.gz *.repo
#rm -f *.repo
清理缓存
#yum clean all
下载
#wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
刷新包列表
#yum list
#cd /etc/yum.repos.d/
备份新源
#cp CentOS-Base.repo CentOS-Base.repo.back-ali
下载镜像redis
#docker pull redis
查看镜像
docker images
运行启动镜像,加-d表示后台运行
docker run tomcat
docker run -d tomcat
如果运行 tomcat 出现如下错误提示
/usr/bin/docker-current: Error response from daemon: error creating overlay mount to /var/lib/docker/overlay2/a38a30aa83a3c3dee62565c724ebc08cd856b8be9f0b3fc18ca5b2524b4529c5-init/merged: invalid argument.
See '/usr/bin/docker-current run --help'
这种错误
先停止docker服务,删除docker 镜像
systemctl stop docker
rm -rf /var/lib/docker/*
重新指定docker的文件系统
vi /etc/sysconfig/docker-storage
添加= 后面部分
DOCKER_STORAGE_OPTIONS="--storage-driver overlay"
重新运行
docker run tomcat
后台运行加 -d
dockers run -d tomcat
如下
[root@CentOS7-104 ~]# docker run -d tomcat
8117a0b40cb1e36f0117ba5d6f74b41efc2657314c66cd06dbd565b32651b816
查看运行状态
ps -ef | grep tomcat
打开网页测试如果无法直接访问,需要做容器与VM主机之间的映射端口(做相应的外网转发)
查看容器的中库运行状态
#docker ps
[root@CentOS7-104 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8117a0b40cb1 tomcat "catalina.sh run" 11 minutes ago Up 11 minutes 8080/tcp sad_gates
停止容器tomcat
[root@CentOS7-104 ~]# docker stop 8117a0b40cb1
8117a0b40cb1
做端口映射启动
[root@CentOS7-104 ~]# docker run -d -p 8080:8080 tomcat #名字也可以用库名或者ID都可以 ##docker.io/tomcat
71255bcb1b090e7a1b04cba4fd7bb039b2c29c84c62dd276f3652e2874615644
[root@CentOS7-104 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
71255bcb1b09 tomcat "catalina.sh run" 25 seconds ago Up 24 seconds 0.0.0.0:8080->8080/tcp optimistic_swanson
进入容器语法
Usage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
例如
[root@CentOS7-104 ~]# docker exec -it 71255bcb1b09 bash
root@71255bcb1b09:/usr/local/tomcat#
一次性停用多个容器
查询运行的容器
docker ps -q
停掉查询到的容器
docker stop $(docker ps -q)
全部删除容器
docker rm $(docker ps -aq)##-a表示所有包含没有运行的也删除
一条命令实现
docker stop $(docker ps -aq) &docker rm -f $(docker ps -aq)
下载是可以添加一个加速器 (示例,只是方法)
vim /etc/docker/daemon.json
添加
{"registry-mirrors":["https://gg3gwnry.mirror.aliyuncs.com"]}
下载镜像时已有镜像会自动更新而不是下载
启动容器后需要访问一定要设置端口映射
[root@CentOS7-104 ~]# docker run -d -p 6379:6379 redis
6f0b8d8c25290a524c51c7ed4c9d9b4a38183f724b65195030c7e29006e8d502
[root@CentOS7-104 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6f0b8d8c2529 redis "docker-entrypoint..." 27 seconds ago Up 23 seconds 0.0.0.0:6379->6379/tcp relaxed_wing
进入容器redis
[root@CentOS7-104 ~]# docker exec -it 6f0b8d8c2529 bash
root@6f0b8d8c2529:/data#
查看redis-server位置
root@6f0b8d8c2529:/# which redis-server
/usr/local/bin/redis-server
删除镜像用rmi
docker rmi 镜像ID
容器是从镜像创建的运行实例
日常用的就是
开启
docker run -d -p : 容器
查看
docker ps
查看所有容器
docker ps -a
停止容器
docker stop 容器ID/容器名称
启动容器
docker start 容器ID/容器名称
进入容器
docker exec -it 容器ID/容器名称 bash
删除容器,删除前要先停止容器
docker rm 容器ID/容器名称
删除镜像
docker rmi 镜像ID/镜像名称
容器端口映射
docker run -d -p 外部端口:内部端口 容器ID/名称
查看/检查容器更多信息
docker inspect 容器ID
仓库是集中存放镜像文件的场所最大的公开仓库是docker Hub (https://hub.docker.com/)
docker search rabbitmq
数据库安装示例
docker search mysql
docker pull mysql
docker run -p 3306:3306 -e MYSQL_DATABASE=workdb -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest
-e 设置环境变量 指定数据库,指定密码
docker exec -it 容器ID bash
[root@CentOS7-104 ~]# docker run -p 3306:3306 -e MYSQL_DATABASE=workdb -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest
e8999aa8bcb0965778522443bad56b58f304a9adf1298f5be6a20802c3f57072
查询ID 进入容器
docker ps
docker exec -it 容器ID bash
[root@CentOS7-104 ~]# docker exec -it e8999aa8bcb0 bash
root@e8999aa8bcb0:/#
登录MySQL:
mysql -u root -p
修改密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456789';
root@e8999aa8bcb0:/# which mysql
/usr/bin/mysql
root@e8999aa8bcb0:/# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.23 MySQL Community Server - GPL
Copyright (c) 2000, 2021, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
##使用navicat 应用程序去管理数据库
如果远程无法登录
创建一个新账户,并且给他授权,换用户登录试试#我的是不需要操作直接连接成功;
CREATE USER 'HUZI'@'%' IDENTIFIED WITH mysql_navicat_password BY '123456';
GRANT ALL PRIVILEGES ON *.* TO 'HUZI'@'%';
主机与容器间文件/文件夹互相拷贝
[root@CentOS7-104 ~]# docker cp 04cf26bc2a3c:/usr/share/nginx/html /root/nginx/
[root@CentOS7-104 ~]# ls nginx/
[root@CentOS7-104 ~]# docker cp /var/www/html 04cf26bc2a3c:/usr/share/nginx/