Docker常用指令
安装docker
1、Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。
通过 uname -r
命令查看你当前的内核版本
$ uname -r
3.10.0-1062.18.1.el7.x86_64
2、使用 root 权限登录 Centos。确保 yum 包更新到最新。
$ sudo yum update
3、卸载旧版本(如果安装过旧版本的话)
$ sudo yum remove docker docker-common docker-selinux docker-engine
4、安装需要的软件包, yum-util
提供yum-config-manager
功能,另外两个是devicemapper
驱动依赖的
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
5、设置docker源
centos/ubuntu
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
fedora
$ sudo dnf config-manager --add-repo=https://download.docker.com/linux/fedora/docker-ce.repo
6、可以查看所有仓库中所有docker版本,并选择特定版本安装
$ yum list docker-ce --showduplicates | sort -r
7、安装docker
$ sudo yum install docker-ce #由于repo中默认只开启stable仓库,故这里安装的是最新稳定版20.10.7
$ sudo yum install <FQPN> # 例如:sudo yum install docker-ce-20.10.7.ce
$ sudo dnf install docker-ce #由于repo中默认只开启stable仓库,故这里安装的是最新稳定版20.10.7
$ sudo dnf install <FQPN> # 例如:sudo yum install docker-ce-20.10.7.ce
8、启动并加入开机启动
$ sudo systemctl start docker
$ sudo systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
[root@qdc ~]#
9、验证安装是否成功(有client和service两部分表示docker安装启动都成功了)
$ docker version
Client: Docker Engine - Community
Version: 20.10.7
API version: 1.41
...
Server: Docker Engine - Community
Engine:
Version: 20.10.7
API version: 1.41 (minimum version 1.12)
...
如果server无法连接出现以下错误
[liran@fedora PycharmProjects]$ docker version
Client: Docker Engine - Community
Version: 20.10.8
API version: 1.41
Go version: go1.16.6
Git commit: 3967b7d
Built: Fri Jul 30 19:54:44 2021
OS/Arch: linux/amd64
Context: default
Experimental: true
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
执行systemctl restart docker
配置不用加sudo
如果还没有 docker group 就添加一个:
sudo groupadd docker
将用户加入该 group 内。然后退出并重新登录就生效啦。
sudo gpasswd -a ${USER} docker
重启 docker 服务
sudo service docker restart
切换当前会话到新 group 或者重启 X 会话
newgrp - docker
快速安装
1、查找
$ docker search name
2、拉取
$ docker pull name
镜像操作
1.镜像列表
# 查看所有的镜像
$ sudo docker image ls
$ docker images
2.从仓库拉取镜像
# 官方镜像
$ sudo docker image pull 镜像名称
# 例
$ sudo docker image pull ubuntu
$ sudo docker image pull ubuntu:16.04 #:后面可以指定拉取的版本,若不指定则为最新版本
# 个人镜像
$ sudo docker image pull 仓库名称/镜像名称
$ sudo docker image pull itcast/fastdfs
3.删除镜像
$ sudo docker image rm 镜像名或镜像ID
容器操作
1.容器列表
# 查看正在运行的容器
$ sudo docker container ls
$ sudo docker container ps
$ sudo docker ps #推荐使用,比较简洁
# 查看所有的容器
$ sudo docker container ls --a
$ sudo docker container ps --a
$ sudo docker ps --a #推荐
2.创建容器
$ sudo docker run [option] 镜像名 [向启动容器中传入的命令]
常用可选参数说明:
- -i 表示以《交互模式》运行容器。
- -t 表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。
- –name 为创建的容器命名。
- -v 表示目录映射关系,即宿主机目录:容器中目录。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。
- -d 会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器)。
- -p 表示端口映射,即宿主机端口:容器中端口。
- -P 随机指定端口
- –network=host 表示将主机的网络环境映射到容器中,使容器的网络与主机相同。
3.停止和启动容器
# 停止容器
$ sudo docker container stop 容器名或容器id
# kill掉容器
$ sudo docker container kill 容器名或容器id
# 启动容器
$ sudo docker container start 容器名或容器id
4.退出容器
exit #直接退出容器
Ctrl + P + Q
5.删除容器
$ sudo docker container rm 容器名或容器id
查看日志
$ docker logs -f -t --tail 10 #容器id 没有日志
#显示日志-tf
#显示日志 t带上时间 f保持打印窗口 --tail number
#要显示的日志条数
$ docker logs -tf --tail 10 d5d5d925582f
进入当前正在运行的容器
#我们通常容器都是使用后台方式运行的需要进入容器,修改一些配置
命令: docker exec -it 容器id bashshell
[root@qdc ~]$ docker exec -it 0ce3e100753a /bin/bash
[root@0ce3e100753a /]$ ls
bin etc lib lost+found media opt root sbin sys usr
dev home lib64 lr.py mnt proc run srv tmp var
#方式二
[root@qdc ~]$ docker attach 容器id
正在执行当前代码...
#docker exec :进入容器后开启一个新的终端,可以在里面操作(常用)#docker attach :进入容器正在执行的终端,不会启动一个新的进程
从容器内拷贝文件到主机上
docker cp 容器id:容器内路径 目的的主机路径
[root@qdc ~]$ docker cp 容器id:/容器路径 /主机路径
//先在容器内创建文件或目录
[root@0ce3e100753a /]# touch lr.py
[root@0ce3e100753a /]# ls
bin etc lib lost+found media opt root sbin sys usr
dev home lib64 lr.py mnt proc run srv tmp var
Ctrl+p+q
[root@0ce3e100753a /]$
[root@qdc ~]$ docker cp 0ce3e100753a:/lr.py /home/
[root@qdc home]$ ls
lr.py redis www
#拷贝是一个手动过程未来使用 -v 数据卷的技术,可以实现数据同步