命令总结:
检查当前 CentOS 系统内核版本
uname -r
检查当前 CentOS 系统版本
cat /etc/redhat-release
Linux安装
CentOS安装命令
sudo yum update
sudo yum install docker
设置Docker开启启动
systemctl enable docker
Ubuntu
sudo apt-get update
sudo apt-get docker.io
查看docker版本
docker -v
Docker镜像检索
docker search 镜像名
例如:docker search redis
镜像下载
docker pull 镜像名
docker pull redis
docker pull ubuntu:16.04 #带版本号
docker pull 仓库地址/java:7 #指定仓库下载镜像
镜像列表
docker images
其中PEPOSITORY是镜像名:TAG是软件版本,latest为最新版本;IMAGE_ID是当前镜像的唯一标识;
CREATED是当前镜像创建时间;VIRTUAL SIZE是当前镜像的大小。
镜像删除
docker rmi image-id
删除所有镜像
docker rmi $(docker images -q)
docker rmi -f $(docker images) #-f 强制删除
容器列表
运行: docker ps
运行和停止: docker ps -a
容器启动
docker run --name container-name -d image-name
--name参数是为容器取的名称,-d表示detached,意味着执行这句命令后控制台将不会被阻碍,可继续输入命令操作;
最后的image-name是要使用哪个镜像来运行容器
例如: docker run --name test-redis -d redis
docker run -p 8080:80 nginx #“-p 8080:80”告诉Docker将本地主机端口8080映射到Docker容器的端口80。您应该能够从http://localhost:8080访问nginx服务器
命令说明:
- -p 3306:3306:将容器的3306端口映射到主机的3306端口
- -v /opt/docker_v/mysql/conf:/etc/mysql/conf.d:将主机/opt/docker_v/mysql/conf目录挂载到容器的/etc/mysql/conf.d
- -e MYSQL_ROOT_PASSWORD=123456:初始化root用户的密码
- -d: 后台运行容器,并返回容器ID
- imageID: mysql镜像ID
启动容器
docker start container-name/container-id
例如: docker start test-redis
停止容器
docker stop container-name/container-id
例如:docker stop test-redis
端口映射
映射容器6379端口到本机的6378端口
docker run -d -p 6378:6379 --name port-redis redis
删除容器
单个: docker rm container-id
所有: docker rm $(docker ps -a -q)
docker rm -f $(docker ps -a -q) #-f用来删除正在运行的容器
容器日志
docker logs container-name /container-id
例如: docker logs port-redis
登陆容器
docker exec -it container-id/container-name bash
docker exec -it container-id/container-name /bin/bash
docker镜像
都放在docker官网上
docker hub:https://hub.docker.com/
将linux系统中的文件复制到docker容器中
docker cp /usr/local/dockerjdk8/jdk-8u65-linux-x64.zip bb880907496b:/usr/local/java8/
查看镜像的创建历史
docker history nginx
docker image history nginx
docker pull 镜像名
docker pull redis
docker pull ubuntu:16.04 #带版本号
docker pull 仓库地址/java:7 #指定仓库下载镜像
docker rmi $(docker images -q)
docker rmi -f $(docker images)
保存镜像
docker save busybox > busybox.tar
docker save --output.tar busybox
加载镜像 #从busybox.tar文件中加载镜像
docker load <busybox.tar
docker load --input busybox.tar
导出容器
#将容器导出成latest.tar文件
docker export red_panda > latest.tar
docker export --output="latest.tar" red_panda
导入容器
#从nginx2.tar 文件导入,并创建nginx镜像
# -c 将dockerfile指令应用到创建的镜像
# -m 为导入的镜像设置提交信息
docker import nginx2.tar nginx
构建镜像
通过Dockerfile构建镜像
docker build [options] path |url |-
docker build -t itmuch/some-repo:some-tag . #-t 设置标签,格式name:tag,其中tag可选
强制停止容器
docker kill contained-id
重启容器
docker restart -t contained-id # -t 等待时间
后台启动一个容器后,如果想进入到这个容器,可以使用attach命令:
docker attach container_name/container_id
删除容器的命令
docker rm container_name/container_id
查看当前系统Docker信息
docker info
使用帮助选项检查Docker安装上的最新可用命令:
docker --help
要使用特定命令的选项,可以使用该命令的help选项。例如,要使用docker run命令选项,可以使用以下命令:
docker run --help
卸载老版本Docker:
sudo yum remove docker \ docker-common \ docker-selinux \ docker-engine
注意:此操作只是卸载软件,依然会保留旧的数据(/var/lib/docker)
目前,有13个管理命令和41个通用命令。下面是我们的docker命令:
docker attach-将本地输入/输出/错误流附加到正在运行的容器。
docker commit-从容器的当前更改状态创建一个新镜像。
docker exec-在正在运行的容器中运行命令。
docker history-显示镜像的历史记录。
docker info-显示系统信息,包括镜像和容器数。
docker inspect-查找有关Docker容器和镜像的系统级信息。
docker login-登录到本地注册表或Docker Hub。
docker pull-从本地注册表或Docker Hub中提取镜像或存储库。
docker ps-列出容器的各种属性。
docker restart-停止并启动容器。
docker rm-移除容器。
docker rmi-删除镜像。
docker run-在一个独立的容器中运行一个命令。
docker search-在Docker Hub中搜索镜像。
docker start-启动已经停止的容器。
docker stop-停止运行容器。
docker version -提供Docker版本信息。
docker info:
它将向您显示各种重要信息,如服务器版本、存储驱动程序、内核版本、操作系统、总内存等等。当您试图为当前的Docker安装增加新的资源或试图解决系统级资源分配问题时,这些信息可能很有用。这也是一种快速检查正在运行、暂停和停止的容器数量以及下载到系统的镜像数量的方法
您不需要注册Docker Hub即可拉取镜像。但是,如果要将图像推送到Docker Hub,则需要注册,然后使用Docker login命令登录:$ docker login --username = yourhubusername --email = youremail@company.com
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
解决办法
$ systemctl daemon-reload
$ sudo service docker restart
问题一:
Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
解决方案:
修改docker镜像源:
docker默认的源为国外官方源,下载速度较慢,可改为国内,加速
方案一
修改或新增 /etc/docker/daemon.json
# vi /etc/docker/daemon.json
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
systemctl restart docker.service
问题二:
redis 由于目标计算机积极拒绝,无法连接
解决方案:
https://blog.csdn.net/weixin_42456466/article/details/87270959
问题三:
navicat: Client does not support authentication protocol requested by server;
解决方案:
docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
docker 安装 mysql 8 版本
# docker 中下载 mysql
docker pull mysql
#启动
docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=Lzslov123! -d mysql
#进入容器
docker exec -it mysql bash
#登录mysql
mysql -u root -p
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Lzslov123!';
#添加远程登录用户
CREATE USER 'liaozesong'@'%' IDENTIFIED WITH mysql_native_password BY 'Lzslov123!';
GRANT ALL PRIVILEGES ON *.* TO 'liaozesong'@'%';
问题四:
http://xx:8080/ HTTP Status 404 – 未找到
解决方案:
docker exec -it 342d814e3dc5 /bin/bash
rm webapps
mv webapps.dist ./webapps
问题5:bash: /usr/local/java8/jdk1.8.0_65/bin/java: Permission denied
1)进入存放jdk文件的文件夹路径
我这里是 usr/local/java8/
2)输入命令 chmod 777 chmod 777 jdk1.8.0_65/bin/java修改权限
3)再次输入 java -version 成功
问题6:Centos出现-bash: unzip: command not found, CentOS解决-bash: vim: command not found,
yum install -y unzip zip
输入rpm -qa|grep vim 命令, 如果 vim 已经正确安裝,会返回下面的三行代码:
root@server1 [~]# rpm -qa|grep vim
vim-enhanced-7.0.109-7.el5
vim-minimal-7.0.109-7.el5
vim-common-7.0.109-7.el5
如果少了其中的某一条,比如 vim-enhanced 的,就用命令 yum -y install vim-enhanced 来安裝:
yum -y install vim-enhanced
如果上面的三条一条都沒有返回, 可以直接用 yum -y install vim* 命令
sudo: command not found。。。
apt-get update
apt-get install sudo
问题7:Error response from daemon: Get https://index.docker.io/v1/search?q=rabbitmq&n=25: dial tcp 3.220.75.233:443: i/o timeout
问题8: Error response from daemon: conflict: unable to delete d2d45254c99b (must be forced) - image is referenced in multiple repositories
守护程序的错误响应:冲突:无法删除d2d45254c99b
这里存在的问题是因为存在依赖,我们根据具体的tag来删除容器就可以了
解决方法:docker rmi rabbitmq:3.7-management