Docker
镜像下载并启动:
查看镜像信息:
查询官网mysql
镜像
容器基本操作
新建容器
查看所有容器
新建容器并启动容器
在docker
run命令启动时,dock会在后台进行:
1
、检查本地是否存在指定的镜像,不存在就在共有仓库下载。
2
、利用镜像创建并启动一个容器
3
、分配一个文件系统,并在只读的镜像层外面挂载一层可读写层。
4
、从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去。
5
、从地址池中配置一个IP
地址给容器
6
、执行用户指定的应用程序。
7
、执行完毕后容器被终止。
启动一个bash
终端,并允许用户交互
-t
|
让docker分配一个伪终端,并绑定到容器的标准输出上
|
-i
|
让容器的标准输入保持打开
|
在交互模式下,可以在创建的终端下输入命令,按Ctrl+D
或者exit
可以退出容器
容器中,只运行了bash
应用,没有运行其他不需要的程序,由于当前只运行了bash
程序,当exit
后,该容器就会自动处于停止状态
让容器后台运行,守护态(Daemonized
)。需要添加 -d
参数
命令执行完后会返回一个容器的ID
可以通过 sudo docker ps
命令查看容器信息
通过sudo docker logs +ID
查看打印信息
停止容器:sudo docker stop +ID
或者Sudo docker kill +ID
(docker kill
命令会直接发送SIGKILL
信号来强制终止容器)
通过docker ps -a -q
来查看终止状态的容器的信息
重启容器: sudo
docker restart +ID
进入容器:docker attach 命令和docker exec命令或者nsenter工具
(1
)attach
Docker
attach 命令后面可以+ID(56c)或者name(musing_visvesvaraya)
在使用attach
命令时,当多个窗口同时attach
到同一个容器的时候,所有窗口都会同步显示,当一个窗口因为命令阻塞时,其他窗口也会
无法执行操作。
(2
)exec
命令
exec
命令可以直接在容器内运行命令,例如:在进入(56c
)容器时,并启动一个bash
:
(
3
)自定义命令
下载 .bashrc_docker,并将内容放到 .bashrc 中。
$ echo "[ -f ~/.bashrc_docker ] && . ~/.bashrc_docker" >> ~/.bashrc; source ~/.bashrc
这个文件中定义了很多方便使用 Docker 的命令,例如 docker-pid 可以获取某个容器的 PID;而 docker-enter 可以进入容器或直接在容器内执行命令。
$ echo $(docker-pid <container>)
$ docker-enter <container> ls
(4
)n
senter工具
删除容器:
Sudo docker rm +ID
删除运行中的容器需要添加 -f 参数
未添加 -f 参数会报错
删除成功
导入或导出容器
导出容器
导出容器是指导出一个已经创建的容器到一个文件,不管此容器是否处于运行状态,可以使用docker export命令,该命令格式为docker export CONTAINER
查看所有的容器:
$sudo docker ps -a
$sudo docker ps 运行中的容器
分别导出3f1c1e48d58a容器和851320e3a490容器到test_for_run.tar和test_for_stop.tar文件中:
可以将这些Tar文件传输到其他机器上通过导入命令来实现容器的迁移
导入容器
导出的文件又可以使用docker import命令导入,成为镜像
配置私有仓库
1、安装运行docker-registry,同时将镜像库挂在到/root/demo目录下
$ docker run -d -p 5000:5000 --restart=always --name test -v /root/demo:/var/lib/registry registry:2
2、测试
10.128.222.245(本地仓库)
10.128.222.244(测试主机)
a、
从官方docker仓库pull一个busybox镜像
$sudo docker pull busybox
b、 修改镜像的tag
$ docker tag ubuntu 10.128.222.245:5000/busybox:latest
c、 将打了Tag的镜像push到私有仓库(10.128.222.245)
d、此时会报错
Error response from daemon: Get https://10.128.222.245:5000/v1/_ping: http: server gave HTTP response to HTTPS client
只需要两步即可:
1,Create or modify /etc/docker/daemon.json
[root@localhost ~]# echo '{ "insecure-registries": ["10.128.222.245:5000"] }' > /etc/docker/daemon.json
[root@localhost ~]# cat /etc/docker/daemon.json
{ "insecure-registries":["10.128.222.245:5000"] }
2,重启docker服务
root@localhost ~]# systemctl restart docker
e、查看私有仓库内的镜像
curl 10.128.222.245:5000/v2/_catalog
查看私有仓库内镜像的版本号:
查看私有仓库中的镜像
curl registryIP:5000/v2/Imagesname/tags/list
f、 从私有仓库获取镜像、、
docker pull registryIP:5000/镜像名:版本
注:在启动私有仓库时必须指定挂载点,否则当服务终止时,仓库中的镜像会随着容器的关闭而被清理掉( 17.05.0-ce版本:仓库的默认位置为:/var/lib/registry)