docker 安装

移除已安装的docker

$ sudo apt-get remove docker docker-engine docker.io

先安装必要的系统工具

$ sudo apt-get update
$ sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common

安装证书(任选其一)


# docker官方
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

# aliyun 替换为:http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg
# 腾讯云 替换为:http://mirrors.tencentyun.com/docker-ce/linux/ubuntu/gpg   (内网)
# 腾讯云 替换为:http://mirrors.cloud.tencent.com/docker-ce/linux/ubuntu/gpg  (外网)

添加软件源信息


$ echo \
  "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
   
# 镜像可以换成阿里云的
# https://download.docker.com/linux/ubuntu
# http://mirrors.aliyun.com/docker-ce/linux/ubuntu
# 腾讯云:内网 外网
# http://mirrors.tencentyun.com/docker-ce/linux/ubuntu
# http://mirrors.cloud.tencent.com/docker-ce/linux/ubuntu

# stable 是稳定版 可以最后添加 edge (每月版) 和 testing  (测试版)

安装docker-ce


$ sudo apt-get update
$ sudo apt-get install docker-ce

查看docker版本

$ docker version

Client: Docker Engine - Community
 Version:           20.10.5
 API version:       1.41
 Go version:        go1.13.15
 Git commit:        55c4c88
 Built:             Tue Mar  2 20:18:05 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.5
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.13.15
  Git commit:       363e9a8
  Built:            Tue Mar  2 20:16:00 2021
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.4.4
  GitCommit:        05f951a3781f4f2c1911b05e61c160e9c30eaa8e
 runc:
  Version:          1.0.0-rc93
  GitCommit:        12644e614e25b05da6fd08a38ffa0cfe1903fdec
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

更换docker镜像源

$vim /etc/docker/daemon.json
	{
	    "registry-mirrors": [
		"https://mirror.ccs.tencentyun.com"
	    ]
	}
$ sudo systemctl daemon-reload
$ sudo service docker restart

部分国内加速镜像列表

  • docker:https://registry.docker-cn.com
  • 中科大:https://docker.mirrors.ustc.edu.cn
  • 腾讯:https://mirror.ccs.tencentyun.com
  • 阿里:需要自己申请地址
  • 网易:http://hub-mirror.c.163.com

docker使用

命令总结

$ docker pull/push # 拉取/推送镜像
$ docker run  # 运行容器
$ docker images # 本地镜像列表
$ docker ps -a # 正在运行的镜像 -a:所有
$ docker stop [id] # 停止id这个容器
$ docker rm [id] # 移除id容器
$ docker rmi [name] # 移除name镜像

拉取容器镜像

$ docker pull mysql:5.6
$ docker pull wordpress:latest

运行容器镜像

$ docker run --name wp-mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.6
$ docker run --name wp-wp --link wp-mysql -p 8080:80 -d wprdpress

–name : 容器命名

-e : 配置环境变量

-d : 让容器在后台运行

-p : 端口映射( 外部端口:内部端口 )

-i-t : 不清楚,一般都是两个一起加( -it ) -v : 挂载目录( 本地目录绝对路径:容器内目录 ) -w : 设置工作目录,执行命令时的当前目录 run 命令 后面还可以加上需要执行的命令及参数,如下

 $ docker run --name my-node -d -it -v E:/develop/docker/:/home/node -p 8081:8888 -w /home/node node:6.11.3 /usr/local/bin/node ./hello.js

上面的命令就是启动node6.11.3镜像,并且命名为my-node,将(windows)宿主机E:/develop/docker/挂载到容器/home/node目录,并设置为工作目录,创建容器后执行/usr/local/bin/node命令运行/home/node/hello.js

进入容器操作

$ docker exec [OPTIONS] [容器id]] [执行命令] [参数]

Options:

-d :分离模式: 在后台运行

-t :分配一个伪终端

demo:

$ docker ps
CONTAINER ID        IMAGE
197489c2c175        wordpress 
$ docker exec -it 1974 /bin/bash #进入1974容器执行bash命令
root@197489c2c175:/var/www/html# 

容器与宿主机互相复制文件

# 从docker容器复制到E盘根目录
$ docker cp 19748:/var/www/html/wp-includes/script-loader.php /etc/home/ubuntu/docker/

# 从E盘根目录复制script-loader.php到docker容器/var/www/html/wp-includes
$ docker cp  /etc/home/ubuntu/docker/test.txt 19748:/var/www/html/wp-includes/