1、安装docker
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
如果curl太慢,可以手动去那个网页下载sh文件
2、docker启动(只是启动docker服务,非镜像)
service docker restart
3、配置国内源(需要用上面命令重启docker)
docker 设置国内镜像源_whatday的博客-CSDN博客_docker 国内镜像源
mkdir /etc/docker
vim /etc/docker/daemon.json
写入
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
配置阿里云的源 cr.console.aliyun.com 速度不错,但是需要登陆阿里云。
查看是否配置成功(末尾)
# docker info
Client:
Context: default
Debug Mode: false
Plugins:
app: Docker App (Docker Inc., v0.9.1-beta3)
buildx: Docker Buildx (Docker Inc., v0.8.1-docker)
scan: Docker Scan (Docker Inc., v0.17.0)
Server:
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 1
Server Version: 20.10.14
Storage Driver: overlay2
Backing Filesystem: xfs
Supports d_type: true
Native Overlay Diff: true
userxattr: false
Logging Driver: json-file
Cgroup Driver: cgroupfs
Cgroup Version: 1
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 3df54a852345ae127d1fa3092b95168e4a88e2f8
runc version: v1.0.3-0-gf46b6ba
init version: de40ad0
Security Options:
seccomp
Profile: default
Kernel Version: 3.10.0-1160.45.1.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 3.701GiB
Name: localhost.localdomain
ID: QIDE:BSNQ:Y4DO:N27T:W62H:42FG:H5FU:OUXY:SU5U:CR4N:WG4I:6MSO
Docker Root Dir: /var/lib/docker
Debug Mode: false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
127.0.0.0/8
Registry Mirrors:
http://hub-mirror.c.163.com/
Live Restore Enabled: false
4、拉取镜像
比如我拿到一个别人给的dockerhub地址
直接pull就行
# docker pull 镜像名
docker pull dbgate/dbgate
5、关于拉取镜像比较旧
有些国内的源比较旧(好几个月前)
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
dbgate/dbgate latest 420ccff0f9b8 7 months ago 109MB
而实际是几个小时前的更新
我们可以手动指定下载的源镜像sha256 (假设我们想下载latest最新镜像),点击DIGEST
拿到具体sha256值,拼接
# docker pull 镜像名:标签@256值
docker pull dbgate/dbgate:latest@sha256:e1719deb5520bc870b657e819699a27ab9f06a1ba4431ec7cdb00a807a40a835
就能拉取指定镜像
6、启动拉取的镜像
一般启动页面有介绍
运行命令加上 -d 就能后台启动(守护进程)
上图中 -p 是端口映射,docker实例与宿主机的映射,--name是指定实例名称,-it 是产生用户交互式终端(如bash),最后那个是镜像名称,有的需要带上版本号
7、查看实例标识和杀死docker实例(或者停止docker实例)
实例定义:一个docker镜像可以启动很多的实例,就像是我们windows虚拟机使用同一个win10镜像可以制作多台windows机器一样
先ps查看运行的docker的实例标识,再kill 实例标识。实例标识的的定义为下面的 CONTAINER ID 或者 NAMES(NAMES在docker ps的末尾),其中 CONTAINER ID 可以不用填完整,填前几位就行,只要是唯一能确定是哪个实例的就行。stop和kill都可以。
# docker ps (加-a选项可以查看所有的实例,包括已经停止的,我们停止了容器不代表也删除了)
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
182fe3a8e575 dbgate/dbgate "docker-entrypoint.s…" 19 minutes ago Up 19 minutes 0.0.0.0:9443->3000/tcp, :::9443->3000/tcp dbgate-instances
# docker kill 182f
# 但是docker kill并不是删除实例,,只是将实例停止,使用 docker ps -a 还能看到停止的实例,需要使用docker rm 才能彻底删除
# docker stop 实例标识
# 我们可以使用下面命令把停止的实例再次启动
# docker start 实例标识
8、删除镜像
先查看要删除的镜像id,再删除,另外 -f 强制删除
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
dbgate/dbgate latest 420ccff0f9b8 7 months ago 109MB
# docker rmi 420ccff0f9b8 -f
# 直接不加 -f 删除可能会报错如下:【如果你基于这个镜像的实例存在(无论是运行状态还是关闭状态)】
# Error response from daemon: conflict: unable to delete 82daf54b9899 (must be forced) - image is being used by stopped container 16cd70812156
# 你需要先把实例关机删除 (关机参考第七步,删除参考第11步)
9、以bash方式进入容器
docker exec -it 实例标识 /bin/bash
10、拷贝文件到容器内
docker cp ./test.out 实例标识:/usr/
11、删除镜像的实例
一个docker容器可以有无数的实例,删除实例用rm,记得先把容器停了再删,或者加-f强制删除
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
046e9fef1380 ubuntu:18.04 "/bin/bash" 13 seconds ago Up 12 seconds romantic_rubin
f9a55076efbe ubuntu:18.04 "/bin/bash" 5 minutes ago Exited (0) 5 minutes ago test1
9b7731dcb711 ubuntu:18.04 "/bin/bash" 7 minutes ago Exited (0) 7 minutes ago test
# docker rm f9a55076efbe
12、保存实例为镜像
# docker commit -a "上传用户署名" -m "注释" 实例标识 镜像名称:版本号
docker commit -a "xiaoming" -m "for test" 379fcc815bee abcde:0.1
13、查看镜像提交记录
# docker history 镜像id
docker history 379fcc815bee