06
2023
11
22:41:29

Docker镜像安装-容器使用



推荐点击下面图片,通过本站淘宝优惠价购买:

image.png

1 配置镜像加速器

国内从Docker Hub拉去镜像会遇到困呐,通过配置国内镜像加速器。
由于镜像服务可能出现宕机,建议同时配置多个镜像。各个镜像站测试结果请到 docker-practice/docker-registry-cn-mirror-test 查看。

以网易云镜像服务 https://hub-mirror.c.163.com 为例进行介绍。

请首先执行以下命令,查看是否在 docker.service 文件中配置过镜像地址。

$ systemctl cat docker | grep ‘–registry-mirror’
如果该命令有输出,那么请执行 $ systemctl cat docker 查看 ExecStart= 出现的位置,修改对应的文件内容去掉 --registry-mirror 参数及其值,并按接下来的步骤进行配置。

如果以上命令没有任何输出,那么就可以在 /etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件):

{
“registry-mirrors”: [
“https://hub-mirror.c.163.com”,
“https://mirror.baidubce.com”
]
}
这里还可以配置科大的镜像:

2 镜像和容器生存操作

2.1 镜像

docker images ls #查看镜像
docker rmi centos:latest #删除镜像

【批量删除镜像】
删除所有仓库名为 redis 的镜像:
docker image rm $(docker image ls -q redis) # 可以使用 docker image ls -q 来配合使用 docker image rm,这样可以成批的删除希望删除的镜像。

2.2 容器

sudo docker ps #查看正在运行的容器

创建容器:$ sudo docker run [参数列表] 使用的镜像名称或ID /bin/bash

sudo docker run -it --name=mycentos7_inter centos /bin/bash	 # 创建容器

sudo docker rm mycentos7_inter  # 删除之前为容器创建的名称

exit # 退出容器进入Linux宿主机
sudo docker exec -it container_name (或者 container_id) /bin/bash 	#重新进入容器

停止与启动容器:

sudo docker stop mycentos7_daemon 	#停止正在运行的容器:docker stop 容器名称或者ID
sudo docker start mycentos7_daemon	#启动已运行过的容器
sudo docker restart ...

后台运行容器
更多的时候,需要让 Docker 在后台运行而不是直接把执行命令的结果输出在当前宿主机下。此时,可以通过添加 -d 参数来实现。
如果不使用 -d 参数运行容器。

$ docker run ubuntu:18.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"hello world
hello world
hello world
hello world

容器会把输出的结果 (STDOUT) 打印到宿主机上面

如果使用了 -d 参数运行容器。

$ docker run -d ubuntu:18.04 /bin/sh -c “while true; do echo hello world; sleep 1; done”
77b2dc01fe0f3f1265df143181e7b9af5e05279a884f4776ee75350ea9d8017a
此时容器会在后台运行并不会把输出的结果 (STDOUT) 打印到宿主机上面(输出结果可以用 docker logs 查看)。

使用-d启动容器后,会回到host终端;此时如果想要获取容器的输出信息,可以通过 docker container logs 命令。

$ docker container logs [container ID or NAMES]hello world
hello world
hello world

进入容器–exec

sudo docker exec -it nginx-test /bin/bash

在使用 -d 参数时,容器启动后会进入后台,启动完容器之后会停在host端;某些时候需要进入容器进行操作,包括使用 docker attach 命令或 docker exec 命令,推荐大家使用 docker exec 命令。

只用 -i 参数时,由于没有分配伪终端,界面没有我们熟悉的 Linux 命令提示符,但命令执行结果仍然可以返回。当 -i -t 参数一起使用时,则可以看到我们熟悉的 Linux 命令提示符。

【实例】

$ docker run -dit ubuntu69d137adef7a8a689cbcb059e94da5489d3cddd240ff675c640c8d96e84fe1f6

$ docker container ls
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES69d137adef7a        ubuntu:latest       "/bin/bash"         18 seconds ago      Up 17 seconds                           zealous_swirles

$ docker exec -i 69d1 bash
ls
bin
boot
dev...$ docker exec -it 69d1 bash
root@69d137adef7a:/#

删除容器:可以使用 docker container rm 来删除一个处于终止状态的容器。
批量删除所有已经退出的容器

$ docker rm -v $(docker ps -aq -f status=exited)

导出容器:

$ docker container ls -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                    PORTS               NAMES7691a814370e        ubuntu:18.04        "/bin/bash"         36 hours ago        Exited (0) 21 hours ago                       test
$ docker export 7691a814370e > ubuntu.tar	#到处容器快照到本地文件

导入容器快照
可以使用 docker import 从容器快照文件中再导入为镜像,例如

$ cat ubuntu.tar | docker import - test/ubuntu:v1.0$ docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED              VIRTUAL SIZE
test/ubuntu         v1.0                9d37a6082e97        About a minute ago   171.3 MB

3 容器部署应用

docker安装部署:https://www.runoob.com/docker/docker-install-nginx.html
在Docker容器中 部署应用程序,就相当于是安装软件。
以安装如下应用程序程序为例:

  • MySQL

  • Tomcat

  • Redis

  • Ngdis

3.1 MySQL容器部署

查看一下当前Linux主机中有哪些镜像及容器:

  1. 首先查看当前Linux主机中有哪些镜像及服务器:

# 查看镜像
$ sudo docker images

# 查看容器
$ sudo docker ps -a  # 查看全部容器

# 搜索一下mysql有哪些镜像
$ sudo docker search mysql
  1. 拉取镜像

# Linux宿主机中操作:拉取MySQL的镜像,如果有了就不需要再拉取了$ sudo docker pull centos/mysql-57-centos7  #这个换成自己的
  1. 创建容器

# Linux宿主机中操作:使用镜像创建mysql守护式容器,并进行端口映射,同时配置环境变量$ sudo docker run -di --name=mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql

参数说明:
-d:在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t 两个参数,就是创建交互式容器了。)。

-i:表示运行容器

–name :为创建的容器命名。

-p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射

-e 代表添加环境变量 MYSQL_ROOT_PASSWORD 容器中的MySQL的root用户密码,作为root用户远程登陆之用

  1. 交互操作容器中的MySQL

# 登录进容器
$ sudo docker exec -it mysql /bin/bash

# 登录容器里面的mysql,登录后,默认使用的是容器的root用户
mysql -u root -p		# 在容器中使用root用户登录的话,不需要输入密码,密码写为空

参数说明:
-i:表示运行容器
-t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。

  1. 后台运行容器
    更多的时候,需要让 Docker 在后台运行而不是直接把执行命令的结果输出在当前宿主机下。此时,可以通过添加 -d 参数来实现。
    如果不使用 -d 参数运行容器。

$ docker run ubuntu:18.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"hello world
hello world
hello world
hello world

容器会把输出的结果 (STDOUT) 打印到宿主机上面

如果使用了 -d 参数运行容器。

$ docker run -d ubuntu:18.04 /bin/sh -c “while true; do echo hello world; sleep 1; done”
77b2dc01fe0f3f1265df143181e7b9af5e05279a884f4776ee75350ea9d8017a
此时容器会在后台运行并不会把输出的结果 (STDOUT) 打印到宿主机上面(输出结果可以用 docker logs 查看)。

使用-d启动容器后,会回到host终端;此时如果想要获取容器的输出信息,可以通过 docker container logs 命令。

$ docker container logs [container ID or NAMES]hello world
hello world
hello world

测试安装成功

3.2 安装Nginx

  1. 首先查看当前Linux主机中有哪些镜像及服务器:

# 查看镜像
$ sudo docker images

# 查看容器
$ sudo docker ps -a  # 查看全部容器

# 搜索一下mysql有哪些镜像
$ sudo docker search mysql
  1. 安装镜像
    选取安装版本;
    docker pull nginx:latest

  2. 运行容器

安装完成后,我们可以使用以下命令来运行 nginx 容器:
$ docker run --name nginx-test -p 8080:80 -d nginx

参数说明:
–name nginx-test:容器名称。
-p 8080:80: 端口进行映射,将本地 8080 端口映射到容器内部的 80 端口。
-d nginx: 设置容器在在后台一直运行。

  1. 交互操作
    sudo docker exec -it nginx-test /bin/bash


本文链接:https://hqyman.cn/post/4491.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:





休息一下,本站随机推荐观看栏目:


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

您的IP地址是: