基本命令
Linux安装docker
yum install -y yum-utils
yum-config-manager \\
--add-repo \\
<https://download.docker.com/linux/centos/docker-ce.repo>
# 安装最新的docker
yum install docker-ce docker-ce-cli containerd.io
# 安装指定版本
yum list docker-ce --showduplicates | sort -r
sudo yum install docker-ce-3:20.10.8-3.el8 docker-ce-cli-3:20.10.8-3.el8 containerd.io
# 启动 Docker
systemctl start docker
# Job for docker.service failed because the control process exited with error code
vi /etc/sysconfig/docker
--selinux-enabled=false
:wq
systemctl start docker
# 卸载docker
yum remove docker-ce docker-ce-cli containerd.io
# 主机上的映像、容器、卷或自定义配置文件不会自动删除。删除所有镜像、容器和卷
rm -rf /var/lib/docker
rm -rf /var/lib/containerd
登录/退出
docker login -u 用户名 -p 密码
docker logout
搜索
docker search XXXXX
- Error response from daemon: Unexpected status code 401
安装mysql
docker pull mysql:8.0.27
查看本地镜像
docker images
查看本地容器
docker ps: # 查看当前运行的容器
docker ps -a:# 查看所有容器,包括停止的。
docker restart e24af14cfce6 # 重启容器
进入容器
# docker ps查询容器ID再进入指定的容器
docker exec -i -t 19746bd4a7d4 bash
删除镜像/容器
# 删除多个镜像
docker rmi <your-image-id> <your-image-id>
# 删除所有镜像
docker rmi $(docker images -q)
# 停止容器
docker stop e3f616090589
# 删除容器(只能删除停止的容器)
docker rm e3f616090589
# 停止所有容器运行
docker stop $(docker ps -a -q)
# 删除所有停止运行的容器
docker rm $(docker ps -a -q)
启动mysql容器
# 创建mysql容器
docker run --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=a123456 -d mysql:8.0.27
# 创建mysql容器的同时,把mysql的配置文件映射到本地(防止容器崩坏之后数据丢失)
docker run --name mysql-office -p 3306:3306 -v /root/ReMirror/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=a123456 -d mysql:8.0.27
- name : mysql镜像运行容器名称
- d : 守护进程方式运行镜像
- e : 镜像系统变量设置,如上面例子MYSQL_ROOT_PASSWORD 设置MySQL root密码 ,详情变量可以查看镜像说明。
- tag(8.0.27): 指定运行image标签,不写默认就运行laster,像MySQL这类镜像tag 多为版本号,支持多个版本MySQL运行。
进入容器
docker exec -it mysql-test bash
在mysql-test容器里查看配置文件
cd /etc/mysql
在mysql-test容器里登录mysql
mysql -u root -p
在mysql-test容器里数据库创建develop
# ;代表结束当前sql开始执行
CREATE USER 'develop' IDENTIFIED WITH mysql_native_password BY 'a123456';
GRANT ALL PRIVILEGES ON *.* TO 'develop';
连接数据库
- 本地启动Navicat Premium
- localhost:3306
配置文件保存到本地
docker cp mysql-test:/var/lib/mysql/ "$PWD"
将本地文件同步到容器
docker ps -a
# CONTAINER ID
docker inspect -f '{{.ID}}' CONTAINER ID
# tomcat-container-id
docker cp "${PWD}/mysql" tomcat-container-id:/var/lib/mysql/
将已完成的容器打包成镜像
$ docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
options选项:
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。
# 查询容器id
docker ps -a # 查询CONTAINER ID
# 打包成镜像
docker commit 8edb74bdc0c4 mysqlmirrortest:1.0.0
# 启动镜像
docker run --name mysqlmirror -p 3306:3306 mysqlmirrortest:1.0.0
# 镜像打包生成tar
docker save -o mysqlmirrortest.tar mysqlmirrortest:1.0.0
# 导入镜像
docker load --input mysqlmirrortest.tar
# 启动镜像
docker run --name mysqlmirror -p 3306:3306 -d mysqlmirrortest:1.0.0
通过Dockerfile创建nginx镜像
# Dockerfile文件内容
# .代表在dockerfile所在的文件夹的路径
FROM nginx:1.20.1
MAINTAINER remirror0815
# 修改nginx的html和conf内容
COPY ./html /usr/share/nginx/html
COPY ./html/nginx/nginx.conf /etc/nginx/nginx.conf
EXPOSE 80
# 打包出了一个nginx_dockerfile:1.0.0的镜像
docker build -t nginx_dockerfile:1.0.0 .
# 启动nginx_dockerfile镜像
docker run --name web-file -p 8080:8080 -p 8082:8082 -d nginx_dockerfile:1.0.0