2021-04-02

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/
 

上一篇:第104天: Python 解析 XML


下一篇:财神见习社兼职副业赚钱的365个项目(104):不可小觑的大学生包车